--- /dev/null
+Please include:
+
+ 1) detailed steps on how to reproduce the bug, preferably with already
+ existing JUCE code such as the demo plugin or the demo code
+ 2) the expected behaviour
+ 3) the operating system
+ 4) the architecture (32-bit or 64-bit)
+ 5) a stack trace - if the bug causes a crash
+ 6) the plugin format (VST2, VST3, AU, AAX, RTAS) - if applicable
+ 7) which DAW you observed the bug in - if applicable
+
+Make sure you have pulled the latest commits from the JUCE repo and re-compiled
+the Projucer before you submit your bug. If it's a major bug, which must be
+hot-fixed immediately, then we will also accept bug reports for tagged release
+versions.
This file just lists the more notable headline features. For more detailed info\r
about minor changes and bugfixes, please see the git log!
+Version 4.2.4
+ - Pre-release of live build engine on Windows
+ - Added FlexBox layout engine
+ - Removed dependency on external Steinberg SDK when building and/or hosting VST2 plug-ins
+ - Added support for MIDI network sessions in the iOS simulator
+ - Added support for symmetric skew to Slider, NormalisableRange and SliderPropertyComponent
+ - Projucer now asks the user what to do when it detects that the .jucer file was modified outside of the Projucer
+ - Improved support for Windows 10 touch devices
+ - Added begin/end iterator methods for ValueTree, for handy range-based-for loops over its children
+ - Added support for recent mingw-w64 compilers
+ - Added useful proportional Rectangle utility methods
+ - Significantly improved the performance of BigInteger
+ - Added support for expiring licenses to juce_tracktion_marketplace
+ - Added support for retina mouse cursors on OS X
+ - Added a new low-quality mode for the CameraDevice
+ - Added pkg-config support for Linux
+ - Projucer will now wrap your AAX plug-in in the bundle format expected Pro Tools on Windows
+ - Multiple bug-fixes for AudioUnit parameter ids
+ - Fixed a bug where AlertWindows weren’t always on top
+ - Multiple fixes for web InputStreams
+ - Various improvements to the live build engine
+ - Various minor improvements and bug fixes
+ - Various documentation improvements
+
Version 4.2.3
- Various VST3 improvements: resizing VST3 windows, plug-in compatibility issues
- Use NSURLSession on newer OS X versions
pluginWantsMidiIn="1" pluginProducesMidiOut="0" pluginIsMidiEffectPlugin="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="AUv3SynthAU"\r
pluginRTASCategory="" aaxIdentifier="com.roli.development.AUv3Synth"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.4"\r
buildStandalone="1">\r
<MAINGROUP id="h0gx6L" name="AUv3Synth">\r
<GROUP id="{9DC59668-E6DF-876C-EB58-DDA88D152162}" name="Source">\r
A452E5BB6D20DB6842646EE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; };
A4BE4A85CD5ACC6A78C3B8A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AU_1.mm"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm"; sourceTree = "SOURCE_ROOT"; };
A4E1FFE9E94A28D434C2E4BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A512EE08FFC0B8B22E6408FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
A53855C517AD1588DBF87CA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; };
A56060E773F77B3CA7DC3743 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c"; sourceTree = "SOURCE_ROOT"; };
A58103D78876730190F3BC4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
AC36AEF9A7D94B5F50725E38 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h"; sourceTree = "SOURCE_ROOT"; };
AC3D1C939D60CBB9F06E5195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorPlayer.h"; path = "../../../../modules/juce_audio_utils/players/juce_AudioProcessorPlayer.h"; sourceTree = "SOURCE_ROOT"; };
ACDA8668B39A102D419BD481 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; };
- ACDCFB7C5CE966089DF7665E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
- AD49758CCCDB81F781160518 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; };
AD748818ED49AF2A6BF7AF0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAMath.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAMath.h"; sourceTree = "SOURCE_ROOT"; };
ADA10B57D3CACBF7CA3E7058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
ADEFBF282F9FF39E37862A73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pnginfo.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pnginfo.h"; sourceTree = "SOURCE_ROOT"; };
AF02093447674A2DBEFB7B2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextInputTarget.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_TextInputTarget.h"; sourceTree = "SOURCE_ROOT"; };
AF575F9303D3AA5E410C274A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageCache.cpp"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.cpp"; sourceTree = "SOURCE_ROOT"; };
B0015C46815CEB6E15236944 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPlayHead.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPlayHead.h"; sourceTree = "SOURCE_ROOT"; };
- B032D869039A2B845AAD274E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = "../../../../modules/juce_core/zip/zlib/inftrees.h"; sourceTree = "SOURCE_ROOT"; };
- B054CDFF33B17777FD1855BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c"; sourceTree = "SOURCE_ROOT"; };
- B05EC8A81DA162236663A8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
- B0B4FAE3EA49CE2AE0074204 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
- B0E5392688FD05700AFA0569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; };
- B19103A5C4E54D5ABB50F27F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; };
B1972B63AC71C03527E02534 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PathStrokeType.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_PathStrokeType.cpp"; sourceTree = "SOURCE_ROOT"; };
- B2A30D3171F293ECE50DC06B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
- B2C885D79DF233E10656633A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; };
- B33097C6BA7E4793E7536BBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
- B33E3A1B455B48F251A4EFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
- B3AED660CB964056A7063CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
+ B2CF7DCAD1C8871201A6CE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
+ B2F8C1DFA6A765EDB034399D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
B3CA6447C345EE05F8B98195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; };
B442A76A84E1800D10EE5954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
+ B46C496B84C02A7F7D49B44F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
B48471A74A3A2BDA248931F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisfile.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c"; sourceTree = "SOURCE_ROOT"; };
- B4C32A6592E159751BD10360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
- B585667FC1E99FE5C1E3F799 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c"; sourceTree = "SOURCE_ROOT"; };
+ B5029BFA56B6E1BB5FB43BFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
B58CC7A93DBB3706A60E9E76 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; };
- B5C3356C447E60F512C5E8CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
- B5CA4FEE0ADFDACCAF2FB017 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngget.c"; sourceTree = "SOURCE_ROOT"; };
+ B5CD08BC33A8414D48F4CD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
B6ABAD2ACC048C4DAB31CA27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModalComponentManager.h"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.h"; sourceTree = "SOURCE_ROOT"; };
- B6B3AF7688EF55A4FC61D5D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; };
B774AC9A00BFF63E24EA0646 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3PluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
- B77C48286D446F5C7BD4B76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
B77F4A6EA1005BE4683A0DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPESynthesiserVoice.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.cpp"; sourceTree = "SOURCE_ROOT"; };
- B812C4A2809BB37D45F54A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
- B8133580F67C0B95E1F36D4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; };
- B85C9F9BF94FA8926EB9ACB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; };
B8622807DB0688A98F8C75E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "lookup_data.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lookup_data.h"; sourceTree = "SOURCE_ROOT"; };
- B98F443DC0CE94BC13CC3D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; };
BAA373F740C171EB1219D9B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiMessage.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.h"; sourceTree = "SOURCE_ROOT"; };
- BB1D6E0B0982D0590E8EC99F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
- BB8432AE150D5AEB38808FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; };
- BBB323B5DE53878F445064D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
- BCC48160464BC0DFCAD33792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; };
- BD283419247CBA6C6DD2ADD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; };
- BDEE5F6548D2980373C45F5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BBD06432CC4155521050CD2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
C12C3BDF0D24260675D88C04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiBuffer.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.cpp"; sourceTree = "SOURCE_ROOT"; };
E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
F5E81FD99EFCB226D2486603 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AUv3Synth.vst; sourceTree = "BUILT_PRODUCTS_DIR"; };
8C9C38D32DB4D8BD543CA892 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
A6610B06B712DDE6F2A27290 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = "Flac Licence.txt"; path = "../../../../modules/juce_audio_formats/codecs/flac/Flac Licence.txt"; sourceTree = "SOURCE_ROOT"; };
AC3356631ED2AC043BC67B79 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ ACDCFB7C5CE966089DF7665E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_FileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
AD228AE61929A94FFBE55CF4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAtomicStack.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAtomicStack.h"; sourceTree = "SOURCE_ROOT"; };
+ AD49758CCCDB81F781160518 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterInt.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterInt.h"; sourceTree = "SOURCE_ROOT"; };
AE9CA003C4D379CB43E9CDE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAException.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAException.h"; sourceTree = "SOURCE_ROOT"; };
+ B032D869039A2B845AAD274E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inftrees.h; path = "../../../../modules/juce_core/zip/zlib/inftrees.h"; sourceTree = "SOURCE_ROOT"; };
+ B054CDFF33B17777FD1855BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcphuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcphuff.c"; sourceTree = "SOURCE_ROOT"; };
+ B05EC8A81DA162236663A8AF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IPAddress.cpp"; path = "../../../../modules/juce_core/network/juce_IPAddress.cpp"; sourceTree = "SOURCE_ROOT"; };
B0A987158C4CF4E8D0D75243 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = format.h; path = "../../../../modules/juce_audio_formats/codecs/flac/format.h"; sourceTree = "SOURCE_ROOT"; };
- B2CF7DCAD1C8871201A6CE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
- B2F8C1DFA6A765EDB034399D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
+ B0B4FAE3EA49CE2AE0074204 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B0E5392688FD05700AFA0569 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B19103A5C4E54D5ABB50F27F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryInputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ B2A30D3171F293ECE50DC06B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B2C885D79DF233E10656633A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedArray.h"; path = "../../../../modules/juce_core/containers/juce_ReferenceCountedArray.h"; sourceTree = "SOURCE_ROOT"; };
+ B33097C6BA7E4793E7536BBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsContext.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
+ B33E3A1B455B48F251A4EFEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
B3425236EBB43087A2C4AA71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
B389D5350378076E0DF5DA6D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = export.h; path = "../../../../modules/juce_audio_formats/codecs/flac/export.h"; sourceTree = "SOURCE_ROOT"; };
- B5029BFA56B6E1BB5FB43BFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
- B5CD08BC33A8414D48F4CD67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
+ B3AED660CB964056A7063CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
+ B4C32A6592E159751BD10360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
+ B585667FC1E99FE5C1E3F799 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c"; sourceTree = "SOURCE_ROOT"; };
+ B5C3356C447E60F512C5E8CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B5CA4FEE0ADFDACCAF2FB017 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngget.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngget.c"; sourceTree = "SOURCE_ROOT"; };
+ B6B3AF7688EF55A4FC61D5D6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; };
B6EA3B412C6E73478C4D36AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_win_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B77C48286D446F5C7BD4B76F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; };
B79F6D7A104EF67978CFFC4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnitTypes.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnitTypes.h"; sourceTree = "SOURCE_ROOT"; };
B801E3F5A1C2992F592A0FBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnail.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnail.h"; sourceTree = "SOURCE_ROOT"; };
+ B812C4A2809BB37D45F54A59 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
+ B8133580F67C0B95E1F36D4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WaitableEvent.h"; path = "../../../../modules/juce_core/threads/juce_WaitableEvent.h"; sourceTree = "SOURCE_ROOT"; };
+ B85C9F9BF94FA8926EB9ACB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; };
B986157ED5B0414CDF696C62 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAHostTimeBase.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAHostTimeBase.h"; sourceTree = "SOURCE_ROOT"; };
+ B98F443DC0CE94BC13CC3D44 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; };
BABAE6EE994D5EBDC4013AAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleMessageComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ BB1D6E0B0982D0590E8EC99F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemStats.cpp"; path = "../../../../modules/juce_core/native/juce_linux_SystemStats.cpp"; sourceTree = "SOURCE_ROOT"; };
BB525259297D31B45CC624C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DeletedAtShutdown.cpp"; path = "../../../../modules/juce_events/messages/juce_DeletedAtShutdown.cpp"; sourceTree = "SOURCE_ROOT"; };
- BBD06432CC4155521050CD2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
+ BB8432AE150D5AEB38808FA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Application.cpp"; path = "../../../../modules/juce_gui_basics/application/juce_Application.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BBB323B5DE53878F445064D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Files.cpp"; path = "../../../../modules/juce_core/native/juce_android_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
BC2068C5203B2AA39EAE0C6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
+ BCC48160464BC0DFCAD33792 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; };
+ BD283419247CBA6C6DD2ADD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; };
BD58CC09BA9FED0E9CACC97B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WindowsMediaAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
BD95E66B6A4CDADCF0631707 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAStreamBasicDescription.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp"; sourceTree = "SOURCE_ROOT"; };
BDDC593699182D1603163238 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_devices.cpp"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BDEE5F6548D2980373C45F5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; };
BED2521A9CE66A6F1A5AE7F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngpread.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngpread.c"; sourceTree = "SOURCE_ROOT"; };
BED2D02D5F333084E058D678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
BF6BA28F41BA2A03D9325E0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = md5.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/md5.h"; sourceTree = "SOURCE_ROOT"; };
C478ECA66D2FDB2303FDC140 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; };
C4BBB0A36D8C8E7D180247DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; };
C4FED4C2640C8615AB415884 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
+ C5075702583930AA69562983 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
C50B7EF31D44D3B5E03CB4A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; };
C5A11A2A1F932F48A0D23E91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterBool.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h"; sourceTree = "SOURCE_ROOT"; };
C5A2FC7A4569F1C242016136 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = png.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/png.c"; sourceTree = "SOURCE_ROOT"; };
C9494DFECDCD27C0815A6F17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
C9B7C5BD09A1486B2A10DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
CA633B8B756E9E7826C8D173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
+ CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
+ CFAFC86F4D25AB5A31DF3BE5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
C61D176AAECFBC9A277EF2E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; };
C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
- CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
CC14A34F66FDF9E12523CABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AUv3.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AUv3.mm"; sourceTree = "SOURCE_ROOT"; };
CC155101953B89262C8B633C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
CF7ECFB4AA9A00E103525840 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; };
CF9EEC4A087AA9010D5D21A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CFADD611F5F0D9EC5127C6C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = trees.c; path = "../../../../modules/juce_core/zip/zlib/trees.c"; sourceTree = "SOURCE_ROOT"; };
- CFAFC86F4D25AB5A31DF3BE5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
+ CFAF04B0DF40F2C81026ACD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
CFFC609186B1EE226ACEBD2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
D03583C1CA01284B5781955E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
D0584D8F725E0D7E61F830F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = "../../../../modules/juce_core/zip/zlib/deflate.c"; sourceTree = "SOURCE_ROOT"; };
5F6BB197FA13DEB1F2260CC0,
387D55482BBDCBC351F2BECE,
B774AC9A00BFF63E24EA0646,
+ CFAF04B0DF40F2C81026ACD2,
87FC5378F4B65DBD11E62015,
E0FD3183237BAB53F14A4B92,
58461A95ADF95E35EE92161D, ); name = "format_types"; sourceTree = "<group>"; };
F77C93B319FB7E23D69C8371,
F7B8C6AA3AEF025B6BFE5678,
3CCBF30007C57491CF649D39,
+ B46C496B84C02A7F7D49B44F,
+ A512EE08FFC0B8B22E6408FC,
+ C5075702583930AA69562983,
0B842061D62F68F42428E33A,
E7E45873BE802DD8D676E9CD,
F511F1E8F0B3F64C850321F2,
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
SDKROOT_ppc = macosx10.5; }; name = Release; };
objectVersion = 46;
objects = {
- 55B4C2F046533A9C139516FF = {isa = PBXBuildFile; fileRef = F5E81FD99EFCB226D2486603; };
EE8DCBA5DC0EE7CAD6FF2F39 = {isa = PBXBuildFile; fileRef = 746B19364297E7D489749B70; };
3F1630B6EF37313AADD6EAB8 = {isa = PBXBuildFile; fileRef = EC3DE1F504C76EEDDA7F2216; };
77FA445D27C21FBA66A46BF2 = {isa = PBXBuildFile; fileRef = 9536B5A780A03F6BACB24144; };
0E0B50F4A042E48B9631A42A = {isa = PBXBuildFile; fileRef = CF02DA80A8A515CE41B0C8F6; };
72733104CA9C62BE856879C9 = {isa = PBXBuildFile; fileRef = 63AFF514CAE6FB89A3503CEF; };
A00624D77FD68669DD6234D0 = {isa = PBXBuildFile; fileRef = A8315F08B794D9C87328F17F; };
- E94BB952CDD544FA3A0A4DBB = {isa = PBXBuildFile; fileRef = 853D9A89FE96C6DD6730CEC7; };
8EBD1E279B7E4B420F310D12 = {isa = PBXBuildFile; fileRef = D9ED0926381D40DA1A66C26D; };
045E9D3412FD38BFE3071254 = {isa = PBXBuildFile; fileRef = 9965CB9ED8D2B26CACA9C44A; };
4066B5EF83133035C3579D0D = {isa = PBXBuildFile; fileRef = 58E254BD072595F6E3F6D5F5; };
6C5C4F38A006227C77FCBAD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
6CE2AFEAEE4AE23D2E17E2D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; };
6D61505DE8021C51E8C5AE52 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lsp.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lsp.c"; sourceTree = "SOURCE_ROOT"; };
- 6DA4597568FFE5B6D1F5B68A = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-VST.plist"; path = "Info-VST.plist"; sourceTree = "SOURCE_ROOT"; };
6DED13EB49FCE393E16D59FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; };
6DF4FA55C69B25537DCD88C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; };
6DFDBE298AD93DD1B3F067B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Uuid.cpp"; path = "../../../../modules/juce_core/misc/juce_Uuid.cpp"; sourceTree = "SOURCE_ROOT"; };
738FC67C7D9A53148C0A21AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; };
73BB8E247A275838FD16AFE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mapping0.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mapping0.c"; sourceTree = "SOURCE_ROOT"; };
745B58030382C3D0DB6E7815 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinate.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 746B19364297E7D489749B70 = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = AUv3Synth.appex; sourceTree = "BUILT_PRODUCTS_DIR"; };
75034A13541D4052025A4B39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jutils.c"; sourceTree = "SOURCE_ROOT"; };
750DF21E43BED98CE4F53DE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; };
76272B6E0F4FB6D7225653CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CoreAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
7BAB8DD68B7A25B281233969 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MarkerList.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.h"; sourceTree = "SOURCE_ROOT"; };
7C3E7364953EF9D78C71B866 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; };
7CA84F62BB5AC492B1EB49A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; };
+ 7CBEB55B80E78C9DE16A713A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
7CE0FEFCEC64DF0ADA0B2DF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; };
7D0417B22EF55BE16E7C5061 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; };
7D1E28BE09A85EEBA041558C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; };
84ABD4F5D068289F4D43E7CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
84D3302B18B67B725905AF7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LAMEEncoderAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_LAMEEncoderAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
8524CF106D2B7B1E08D312C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
- 853D9A89FE96C6DD6730CEC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_VST2.cpp"; path = "../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp"; sourceTree = "SOURCE_ROOT"; };
854757FAD81F978667CAA43C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeRectangle.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeRectangle.h"; sourceTree = "SOURCE_ROOT"; };
8553867F8B04D10919C2BD4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c"; sourceTree = "SOURCE_ROOT"; };
856618203AAE94C7B806F9EF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; };
86AC66980898843AE721BD08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectanglePlacement.h"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.h"; sourceTree = "SOURCE_ROOT"; };
86E1396EB5DB7C3F8D42AF19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; };
87181526B9C99144CBE4F8A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; };
+ 872D05BD56490FD7B375C11B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
87415D844832686C8423F226 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c"; sourceTree = "SOURCE_ROOT"; };
874FADD694BB58E2E736FC20 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MixerAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
876D30F6E9647DB0F9BE4463 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = format.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/format.h"; sourceTree = "SOURCE_ROOT"; };
89CC639E5B1CDE71BDBC02D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
89E00773FE73394C30642A4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
8A3F809F240408D5195FB0F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = memory.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/memory.c"; sourceTree = "SOURCE_ROOT"; };
+ 8AA012F95CDEE0ECAC1D698E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; };
8ACD82D09483797E1A7A65B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; };
8AEA9D5BBBC4CB214F18FCE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; };
8AED766CFA1A37B45BC2DE98 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CustomTypeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.h"; sourceTree = "SOURCE_ROOT"; };
8D030B4C002B429D9A9CF05A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = metadata.h; path = "../../../../modules/juce_audio_formats/codecs/flac/metadata.h"; sourceTree = "SOURCE_ROOT"; };
8D4AF11BC6D0F698838984C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUOutputElement.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUOutputElement.cpp"; sourceTree = "SOURCE_ROOT"; };
8D6D7548957FA154DA777E17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
+ 8D753ADD4B2F1CB0C974A522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; };
+ 8DCEAA37D9F7AAD98A244B49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; };
8E1318FA20D468AD45C7A20F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; };
8E29909B5886662F2EC3F5CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BooleanPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
8E61D5E0D6068F247E70219C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Button.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_Button.cpp"; sourceTree = "SOURCE_ROOT"; };
8F3941CB0EBB70B37B7DB6DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_ObjCHelpers.h"; path = "../../../../modules/juce_core/native/juce_osx_ObjCHelpers.h"; sourceTree = "SOURCE_ROOT"; };
8F3C3474E9EB852A40B3A25B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUPlugInDispatch.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUPlugInDispatch.h"; sourceTree = "SOURCE_ROOT"; };
8F3FC2A8E965AA4E83259DB3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeCoordinatePositioner.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8FAE0E215D1E95E6CA7C58E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
8FC88FE9250C7A25AC724BEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DynamicObject.cpp"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8FE4D93D82016AE0E952662F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c"; sourceTree = "SOURCE_ROOT"; };
+ 90064DDC086AD775FA7D5FFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
+ 9015FC74644F82DB0A49FBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisenc.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c"; sourceTree = "SOURCE_ROOT"; };
903B9CD04DF181894AC76EF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
90C18AF3CAC0E59C88732904 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeParallelogram.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h"; sourceTree = "SOURCE_ROOT"; };
90D3112151AC631747E60670 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Base64.h"; path = "../../../../modules/juce_core/text/juce_Base64.h"; sourceTree = "SOURCE_ROOT"; };
9136CCE147582160FA805637 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_16.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_16.h"; sourceTree = "SOURCE_ROOT"; };
9146F18918C954121E932A8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertiesFile.cpp"; path = "../../../../modules/juce_data_structures/app_properties/juce_PropertiesFile.cpp"; sourceTree = "SOURCE_ROOT"; };
- 92529B06E070A28F0C3C4914 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; };
- 933DE5C4D4002BA9203F65A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
- 9376596E6EC0707DFEE00ADB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
- 94304B55601DBF7FBCFC6767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
- 94BFEB9B92F3D546332FD8E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = alloc.h; path = "../../../../modules/juce_audio_formats/codecs/flac/alloc.h"; sourceTree = "SOURCE_ROOT"; };
- 95D4FB306A367AE3A6D28173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
- 96DCCD578FF29CD7D381E8BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; };
- 96F6E7AE69A06FEE69CCA3C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
- 9A392FBECB732FAC0AA04262 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; };
- 9FB1AAC5EC1146B5FC0EFCD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
- A148CC41BDB41EDC8E88DC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
- A15E68C337279B15ED933BE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; };
- E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
- F5E81FD99EFCB226D2486603 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AUv3Synth.vst; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 746B19364297E7D489749B70 = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = AUv3Synth.appex; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 7CBEB55B80E78C9DE16A713A = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
- 872D05BD56490FD7B375C11B = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
- 8AA012F95CDEE0ECAC1D698E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZoneLayout.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEZoneLayout.h"; sourceTree = "SOURCE_ROOT"; };
- 8D753ADD4B2F1CB0C974A522 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiBuffer.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiBuffer.h"; sourceTree = "SOURCE_ROOT"; };
- 8DCEAA37D9F7AAD98A244B49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; };
- 8FAE0E215D1E95E6CA7C58E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
- 8FE4D93D82016AE0E952662F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcomapi.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcomapi.c"; sourceTree = "SOURCE_ROOT"; };
- 90064DDC086AD775FA7D5FFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OptionalScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_OptionalScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
- 9015FC74644F82DB0A49FBFB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisenc.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisenc.c"; sourceTree = "SOURCE_ROOT"; };
9198593E2E34D16752B90CD1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AttributedString.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.cpp"; sourceTree = "SOURCE_ROOT"; };
91D10BF1909D2B9C169E4493 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_8.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_8.h"; sourceTree = "SOURCE_ROOT"; };
91F32F326BD577CD67AE20D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_44u.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h"; sourceTree = "SOURCE_ROOT"; };
+ 92529B06E070A28F0C3C4914 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemFactory.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h"; sourceTree = "SOURCE_ROOT"; };
92723EFA7826236908D48AC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAAUParameter.cpp; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAUParameter.cpp"; sourceTree = "SOURCE_ROOT"; };
92BFAF31B51618764234C779 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; };
9312B68ACDD2A4EAA31CAA73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
9329788543F0C6DA2B50BD72 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; };
+ 933DE5C4D4002BA9203F65A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryOutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 9376596E6EC0707DFEE00ADB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
938B5112D072B60A18918CF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdcoefct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdcoefct.c"; sourceTree = "SOURCE_ROOT"; };
+ 94304B55601DBF7FBCFC6767 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
94308E0D87CFF0D58DAAA0D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "os_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/os_types.h"; sourceTree = "SOURCE_ROOT"; };
947776740572A5A07C2500EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 94BFEB9B92F3D546332FD8E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = alloc.h; path = "../../../../modules/juce_audio_formats/codecs/flac/alloc.h"; sourceTree = "SOURCE_ROOT"; };
94EA45AA948C996F231D6946 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; };
955635CD2D6A1C5BACA519CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
95931BF9B518FB17845AF4A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = smallft.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.h"; sourceTree = "SOURCE_ROOT"; };
+ 95D4FB306A367AE3A6D28173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
96102E98CC639030FAD7EA68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
968EC4E33A1D1949AA4A9F87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AppleRemote.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AppleRemote.h"; sourceTree = "SOURCE_ROOT"; };
96DA31F4C1619188159F7FC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrutil.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngrutil.c"; sourceTree = "SOURCE_ROOT"; };
+ 96DCCD578FF29CD7D381E8BC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 96F6E7AE69A06FEE69CCA3C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
9767C9015F48F6F42AEC0C9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAutoDisposer.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAutoDisposer.h"; sourceTree = "SOURCE_ROOT"; };
97C74E9A0E8A5576FC301241 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; };
97DDC460BD01030B91158218 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; };
997766E6B5491A51A5242F68 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedValueSet.h"; path = "../../../../modules/juce_core/containers/juce_NamedValueSet.h"; sourceTree = "SOURCE_ROOT"; };
99AC2D0C2304F21B912FEC5B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginHostType.h"; path = "../../../../modules/juce_audio_plugin_client/utility/juce_PluginHostType.h"; sourceTree = "SOURCE_ROOT"; };
9A3351689C885961A9BD3F2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; };
+ 9A392FBECB732FAC0AA04262 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; };
9A419F28D68BDEB200F29603 = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AUv3Synth/Images.xcassets; sourceTree = "SOURCE_ROOT"; };
9A69DDED5C8357717BAD57DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; };
9AA36A7E6CCDA68D308E0721 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_VST2.cpp"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_VST2.cpp"; sourceTree = "SOURCE_ROOT"; };
9F1DFEFDC78EC139C4089DEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RuntimePermissions.cpp"; path = "../../../../modules/juce_core/misc/juce_RuntimePermissions.cpp"; sourceTree = "SOURCE_ROOT"; };
9F91E161DF777F050B61B6BE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; };
9FA43271ACEB06BF3AB00095 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = envelope.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.h"; sourceTree = "SOURCE_ROOT"; };
+ 9FB1AAC5EC1146B5FC0EFCD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
A0173759895A8C13BB754998 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/all.h"; sourceTree = "SOURCE_ROOT"; };
A032CFC5A613848D8594B40B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/all.h"; sourceTree = "SOURCE_ROOT"; };
A1159B10837BBDD1BD12A882 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CachedValue.cpp"; path = "../../../../modules/juce_data_structures/values/juce_CachedValue.cpp"; sourceTree = "SOURCE_ROOT"; };
A11CF361C0253B499324D31E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; };
A12A4C86AE4FA12C99334932 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A148CC41BDB41EDC8E88DC7D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
A1595E748092878FDAEA5A30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; };
+ A15E68C337279B15ED933BE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FloatVectorOperations.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp"; sourceTree = "SOURCE_ROOT"; };
A1CFD76549B8E9EB1C360ED5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
A1FA95A0AA37CD773ACBCE8A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AsyncUpdater.h"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.h"; sourceTree = "SOURCE_ROOT"; };
A2129507609CE7130FBA1340 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Colours.h"; path = "../../../../modules/juce_graphics/colour/juce_Colours.h"; sourceTree = "SOURCE_ROOT"; };
A452E5BB6D20DB6842646EE0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; };
A4BE4A85CD5ACC6A78C3B8A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AU_1.mm"; path = "../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_1.mm"; sourceTree = "SOURCE_ROOT"; };
A4E1FFE9E94A28D434C2E4BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ConnectedChildProcess.cpp"; path = "../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
+ A512EE08FFC0B8B22E6408FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
A53855C517AD1588DBF87CA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; };
A56060E773F77B3CA7DC3743 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c"; sourceTree = "SOURCE_ROOT"; };
A58103D78876730190F3BC4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
B3AED660CB964056A7063CE6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; };
B3CA6447C345EE05F8B98195 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.h"; sourceTree = "SOURCE_ROOT"; };
B442A76A84E1800D10EE5954 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
+ B46C496B84C02A7F7D49B44F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
B48471A74A3A2BDA248931F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = vorbisfile.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/vorbisfile.c"; sourceTree = "SOURCE_ROOT"; };
B4C32A6592E159751BD10360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
B5029BFA56B6E1BB5FB43BFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C14EFFF60594E0BC2421DC0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPathListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C1983ED4284CBEF3B5A427E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
C1D83773976CEDB413DB5E5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = envelope.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/envelope.c"; sourceTree = "SOURCE_ROOT"; };
- C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
C1EFF2064480889DAC74D2D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; };
C25203A01A84B7032A7774CF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; };
C2DF4936EF95E5A32E71B755 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
C3FF9B9008D2A03F2BB23F1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Javascript.h"; path = "../../../../modules/juce_core/javascript/juce_Javascript.h"; sourceTree = "SOURCE_ROOT"; };
C478ECA66D2FDB2303FDC140 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NotificationType.h"; path = "../../../../modules/juce_events/messages/juce_NotificationType.h"; sourceTree = "SOURCE_ROOT"; };
C4BBB0A36D8C8E7D180247DA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; };
+ C5075702583930AA69562983 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
C50B7EF31D44D3B5E03CB4A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; };
C5A11A2A1F932F48A0D23E91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterBool.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterBool.h"; sourceTree = "SOURCE_ROOT"; };
C5A2FC7A4569F1C242016136 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = png.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/png.c"; sourceTree = "SOURCE_ROOT"; };
C5B2DDCFB6FEA46E4F97BBA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_events.cpp"; path = "../../../../modules/juce_events/juce_events.cpp"; sourceTree = "SOURCE_ROOT"; };
C61D176AAECFBC9A277EF2E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FFT.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_FFT.cpp"; sourceTree = "SOURCE_ROOT"; };
- C61EEED69EE6C34E5C64B729 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "config_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h"; sourceTree = "SOURCE_ROOT"; };
- C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
C639338DD5AF077DF5BF8361 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
C68283C8A9FA7CEC6AA6975C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = scales.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/scales.h"; sourceTree = "SOURCE_ROOT"; };
C6846316837E7D4578428945 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; };
C9494DFECDCD27C0815A6F17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
C9B7C5BD09A1486B2A10DA8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
CA633B8B756E9E7826C8D173 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResamplingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
- CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
- CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
CC14A34F66FDF9E12523CABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AUv3.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AUv3.mm"; sourceTree = "SOURCE_ROOT"; };
CC155101953B89262C8B633C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
- CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
CD3ABE20AE524B92B9B6A6FA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; };
CD41042388657A558C93AD86 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c"; sourceTree = "SOURCE_ROOT"; };
CD44BCDC60998F9B56D816C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
- CDE81ADB14F09742FBBA28E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
- CE491063B3EF486A263519F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_X.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h"; sourceTree = "SOURCE_ROOT"; };
- CE517EF86B0776BA9B27F3F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUTimestampGenerator.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUTimestampGenerator.h"; sourceTree = "SOURCE_ROOT"; };
CF02DA80A8A515CE41B0C8F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_plugin_client_Standalone.cpp"; path = "../../JuceLibraryCode/juce_audio_plugin_client_Standalone.cpp"; sourceTree = "SOURCE_ROOT"; };
CF2F576CE0F6A185597C8D40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; };
CF344C62ABCBA9BAAB6ACFA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; };
CF51659EBB00003E6CB20B66 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RTAS_Wrapper.cpp"; path = "../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_Wrapper.cpp"; sourceTree = "SOURCE_ROOT"; };
+ D03583C1CA01284B5781955E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
+ D0A4E2C5F2B21172DE13DE0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
+ D1683E32F1EB634904CD7DE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
+ D515546E71BD92C742D67905 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; };
+ DAF78E342ACF24B5A83E0605 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ 9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
+ C1E4A7F5418639D70CB51F0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormatReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.h"; sourceTree = "SOURCE_ROOT"; };
+ C61EEED69EE6C34E5C64B729 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "config_types.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/config_types.h"; sourceTree = "SOURCE_ROOT"; };
+ C63541C14D518046922DF60B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CB23F9E24266013856B53BBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
+ CBA22CAB6770979BCCD18EEA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
+ CC32EDCC4709790EBBA55941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_44.h"; sourceTree = "SOURCE_ROOT"; };
+ CDE81ADB14F09742FBBA28E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileTreeComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ CE491063B3EF486A263519F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_X.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_X.h"; sourceTree = "SOURCE_ROOT"; };
+ CE517EF86B0776BA9B27F3F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUTimestampGenerator.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUTimestampGenerator.h"; sourceTree = "SOURCE_ROOT"; };
CF6FA9D2F39F03FE2858F11B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
CF7ECFB4AA9A00E103525840 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; };
CF9EEC4A087AA9010D5D21A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CFADD611F5F0D9EC5127C6C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = trees.c; path = "../../../../modules/juce_core/zip/zlib/trees.c"; sourceTree = "SOURCE_ROOT"; };
+ CFAF04B0DF40F2C81026ACD2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
CFAFC86F4D25AB5A31DF3BE5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
CFFC609186B1EE226ACEBD2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
- D03583C1CA01284B5781955E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; };
D0584D8F725E0D7E61F830F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = deflate.c; path = "../../../../modules/juce_core/zip/zlib/deflate.c"; sourceTree = "SOURCE_ROOT"; };
- D06C2B85E02F13F9B57DB1A9 = {isa = PBXFileReference; lastKnownFileType = image.png; name = power.png; path = ../../Source/BinaryData/power.png; sourceTree = "SOURCE_ROOT"; };
- D0A4E2C5F2B21172DE13DE0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
D0ECDC7390CA390D69946652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcsample.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcsample.c"; sourceTree = "SOURCE_ROOT"; };
- D1683E32F1EB634904CD7DE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
D19E20CCCD4790B2347D5B80 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; };
D2436FFFE291F08409B1EEE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Colours.cpp"; path = "../../../../modules/juce_graphics/colour/juce_Colours.cpp"; sourceTree = "SOURCE_ROOT"; };
D264387115074C98CF251072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatWriter.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp"; sourceTree = "SOURCE_ROOT"; };
D48932C6554B443ECB71DC87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; };
D4A4555171F923D744B1FDF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngstruct.h; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngstruct.h"; sourceTree = "SOURCE_ROOT"; };
D4C0852C1C54EDA5D4F82EB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; };
- D515546E71BD92C742D67905 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioTransportSource.h"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.h"; sourceTree = "SOURCE_ROOT"; };
D557AAD12557BF1706441B19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
D5797410CEE0E8D2E03D98F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; };
D57DF4F024A84881420586E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = trees.h; path = "../../../../modules/juce_core/zip/zlib/trees.h"; sourceTree = "SOURCE_ROOT"; };
DA4E0EA3EB80BE34F9047E72 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; };
DACA6E5A3CE684EC649F31B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; };
DAEE812EF95F96E7D65D875F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.h"; sourceTree = "SOURCE_ROOT"; };
- DAF78E342ACF24B5A83E0605 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
DB216D8107F0BBBBD3F2B0E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
DB3A7C49C8444BD2F57B6689 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; };
DB43ED26DBABD0BC17385E6E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; };
DFF6A93D460B71379FE3EAA2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessageCollector.cpp"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp"; sourceTree = "SOURCE_ROOT"; };
E0260479B3C2CAF8477026FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; };
E03AA585A375A39A9BFF3DD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E04216439C3A2AD69B69B520 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
E0484E5F0994D64013F4EEA9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextDragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
E09404F45899AA1E82CFC21C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
E0B49BAB1C8D7341A6E142B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdct.h"; sourceTree = "SOURCE_ROOT"; };
E31219AD074DCBB8C6A9F816 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
E320A8161071D0D1B9261E2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AlertWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_AlertWindow.h"; sourceTree = "SOURCE_ROOT"; };
E32E43F0CC33ED95FD0A9DE2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ E40580FB3605FA6D5DA3FD73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBaseHelper.h"; sourceTree = "SOURCE_ROOT"; };
E433734FC5466D7E26FC11D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadower.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_DropShadower.cpp"; sourceTree = "SOURCE_ROOT"; };
E4CB12FDCA729EC8BD9E0845 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c"; sourceTree = "SOURCE_ROOT"; };
E4D985BB229FC31731681790 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
E755606E63BE2C5558FFB353 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; path = "../../../../modules/juce_audio_utils/native/juce_linux_BluetoothMidiDevicePairingDialogue.cpp"; sourceTree = "SOURCE_ROOT"; };
E795FC063102CA8BAB722C58 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
E79A4F024D4890B61628C42C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; };
- E93BF1F2B52BF52EA12326A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c"; sourceTree = "SOURCE_ROOT"; };
- EA6D44AA3D1C9B0A5873DC4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_data_structures.cpp"; path = "../../../../modules/juce_data_structures/juce_data_structures.cpp"; sourceTree = "SOURCE_ROOT"; };
- EC3DE1F504C76EEDDA7F2216 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AUv3Synth.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
- 9536B5A780A03F6BACB24144 = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAUv3Synth.a; sourceTree = "BUILT_PRODUCTS_DIR"; };
- E40580FB3605FA6D5DA3FD73 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBaseHelper.h"; sourceTree = "SOURCE_ROOT"; };
E7E45873BE802DD8D676E9CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; };
E88DF76B88F3E67D0FB58CEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = floor0.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor0.c"; sourceTree = "SOURCE_ROOT"; };
E8EB40396974468FBD0EE15B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Path.cpp"; path = "../../../../modules/juce_graphics/geometry/juce_Path.cpp"; sourceTree = "SOURCE_ROOT"; };
+ E93BF1F2B52BF52EA12326A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdpostct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdpostct.c"; sourceTree = "SOURCE_ROOT"; };
E9617DEC7E639354C2AF66A8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Value.cpp"; path = "../../../../modules/juce_data_structures/values/juce_Value.cpp"; sourceTree = "SOURCE_ROOT"; };
E9745B8F0DE747F94EAF65A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; };
E975A1A60F48EB781C00B9CE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = infback.c; path = "../../../../modules/juce_core/zip/zlib/infback.c"; sourceTree = "SOURCE_ROOT"; };
E9C1C03509E00C37AAA45727 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_QuickTimeAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_QuickTimeAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
EA4345362FE80828317BB860 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; };
+ EA6D44AA3D1C9B0A5873DC4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_data_structures.cpp"; path = "../../../../modules/juce_data_structures/juce_data_structures.cpp"; sourceTree = "SOURCE_ROOT"; };
EA89A423564A332B875F040F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = misc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h"; sourceTree = "SOURCE_ROOT"; };
EA8B1437F945AFED7BDF11DB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsHooks.h"; path = "../../../../modules/juce_audio_plugin_client/utility/juce_WindowsHooks.h"; sourceTree = "SOURCE_ROOT"; };
EA92EA0E7F4D3859821CEB4A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAUParameter.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAUParameter.h"; sourceTree = "SOURCE_ROOT"; };
5F6BB197FA13DEB1F2260CC0,
387D55482BBDCBC351F2BECE,
B774AC9A00BFF63E24EA0646,
+ CFAF04B0DF40F2C81026ACD2,
87FC5378F4B65DBD11E62015,
E0FD3183237BAB53F14A4B92,
58461A95ADF95E35EE92161D, ); name = "format_types"; sourceTree = "<group>"; };
F77C93B319FB7E23D69C8371,
F7B8C6AA3AEF025B6BFE5678,
3CCBF30007C57491CF649D39,
+ B46C496B84C02A7F7D49B44F,
+ A512EE08FFC0B8B22E6408FC,
+ C5075702583930AA69562983,
0B842061D62F68F42428E33A,
E7E45873BE802DD8D676E9CD,
F511F1E8F0B3F64C850321F2,
CF02DA80A8A515CE41B0C8F6,
63AFF514CAE6FB89A3503CEF,
A8315F08B794D9C87328F17F,
- 853D9A89FE96C6DD6730CEC7,
D9ED0926381D40DA1A66C26D,
9965CB9ED8D2B26CACA9C44A,
58E254BD072595F6E3F6D5F5,
E553E188A17BDF4E832F0A01,
F138CA63A1127DA0DB69B127, ); name = "Juce Library Code"; sourceTree = "<group>"; };
A727F6B063FCDB816462D213 = {isa = PBXGroup; children = (
- 6DA4597568FFE5B6D1F5B68A,
F3498E82A2D4ACBED68A7F43,
6AFB9EB642850186B551DB33,
9A419F28D68BDEB200F29603,
29982493607128FD6DB6A284,
5EF6762AB1C5CE4C2DCD59ED, ); name = Frameworks; sourceTree = "<group>"; };
E793574695108F202603BAA5 = {isa = PBXGroup; children = (
- F5E81FD99EFCB226D2486603,
746B19364297E7D489749B70,
EC3DE1F504C76EEDDA7F2216,
9536B5A780A03F6BACB24144, ); name = Products; sourceTree = "<group>"; };
E793574695108F202603BAA5, ); name = Source; sourceTree = "<group>"; };
7007C784A0219490DFD18C27 = {isa = XCBuildConfiguration; buildSettings = { }; name = Debug; };
0ADE306E346FE4F925722F86 = {isa = XCBuildConfiguration; buildSettings = { }; name = Release; };
- 653C6C73C56BA201AB6F094C = {isa = XCBuildConfiguration; buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
- CLANG_LINK_OBJC_RUNTIME = NO;
- CODE_SIGN_IDENTITY = "";
- COMBINE_HIDPI_IMAGES = YES;
- CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
- COPY_PHASE_STRIP = NO;
- DEPLOYMENT_LOCATION = YES;
- DSTROOT = /;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "_DEBUG=1",
- "DEBUG=1",
- "JucePlugin_Build_VST=1",
- "JucePlugin_Build_VST3=0",
- "JucePlugin_Build_AU=0",
- "JucePlugin_Build_AUv3=0",
- "JucePlugin_Build_RTAS=0",
- "JucePlugin_Build_AAX=0",
- "JucePlugin_Build_Standalone=0",
- "JUCER_XCODE_IPHONE_5BC26AE3=1",
- "JUCE_APP_VERSION=1.0.0",
- "JUCE_APP_VERSION_HEX=0x10000", );
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
- INFOPLIST_FILE = Info-VST.plist;
- INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
- LIBRARY_STYLE = Bundle;
- OTHER_LDFLAGS = "-bundle -lAUv3Synth";
- PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
- WRAPPER_EXTENSION = vst; }; name = Debug; };
- 19D80348287645B624E0C6B8 = {isa = XCBuildConfiguration; buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
- CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
- CLANG_LINK_OBJC_RUNTIME = NO;
- CODE_SIGN_IDENTITY = "";
- COMBINE_HIDPI_IMAGES = YES;
- CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
- DEAD_CODE_STRIPPING = YES;
- DEPLOYMENT_LOCATION = YES;
- DSTROOT = /;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_OPTIMIZATION_LEVEL = 3;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "_NDEBUG=1",
- "NDEBUG=1",
- "JucePlugin_Build_VST=1",
- "JucePlugin_Build_VST3=0",
- "JucePlugin_Build_AU=0",
- "JucePlugin_Build_AUv3=0",
- "JucePlugin_Build_RTAS=0",
- "JucePlugin_Build_AAX=0",
- "JucePlugin_Build_Standalone=0",
- "JUCER_XCODE_IPHONE_5BC26AE3=1",
- "JUCE_APP_VERSION=1.0.0",
- "JUCE_APP_VERSION_HEX=0x10000", );
- GCC_SYMBOLS_PRIVATE_EXTERN = YES;
- GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- GENERATE_PKGINFO_FILE = YES;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
- INFOPLIST_FILE = Info-VST.plist;
- INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
- LIBRARY_STYLE = Bundle;
- OTHER_LDFLAGS = "-bundle -lAUv3Synth";
- PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth;
- WRAPPER_EXTENSION = vst; }; name = Release; };
DC95EAEBECC74A55CADCD887 = {isa = XCBuildConfiguration; buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3; }; name = Debug; };
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_AppExtension.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth.AUv3SynthAUv3; }; name = Release; };
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Debug; };
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-AUv3_Standalone.plist;
OTHER_LDFLAGS = "-lAUv3Synth";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Release; };
"_DEBUG=1",
"DEBUG=1",
"JUCE_SHARED_CODE=1",
- "JucePlugin_Build_VST=1",
+ "JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
"JucePlugin_Build_AUv3=1",
"JUCE_APP_VERSION=1.0.0",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Debug; };
5DA389BE0C844A1A9E20FD7C = {isa = XCBuildConfiguration; buildSettings = {
"_NDEBUG=1",
"NDEBUG=1",
"JUCE_SHARED_CODE=1",
- "JucePlugin_Build_VST=1",
+ "JucePlugin_Build_VST=0",
"JucePlugin_Build_VST3=0",
"JucePlugin_Build_AU=0",
"JucePlugin_Build_AUv3=1",
"JUCE_APP_VERSION_HEX=0x10000", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
- HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
+ HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roli.development.AUv3Synth; }; name = Release; };
D32671708EF2662A51A6335A = {isa = XCBuildConfiguration; buildSettings = {
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "AUv3Synth";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "AUv3Synth";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
WARNING_CFLAGS = -Wreorder;
ZERO_LINK = NO; }; name = Release; };
- 811D9E9CC2221100847306C9 = {isa = PBXTargetDependency; target = 73F4C13CDCAC7EE5914F2E61; };
8F5816EA1D519B78C3345C1B = {isa = PBXTargetDependency; target = 7A046597FDDDB82B78C64AAC; };
E06C8C12CD5FDD7FB372E602 = {isa = PBXTargetDependency; target = E600EF631F7AFA8F3A723E29; };
017B214D817BF0DF53051BB2 = {isa = PBXTargetDependency; target = CD6892FED0DB19C0DDD9AD37; };
7007C784A0219490DFD18C27,
0ADE306E346FE4F925722F86, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
EF49DCC88B5FC3C6E67ED2A4 = {isa = PBXAggregateTarget; buildConfigurationList = F550A01E8A9468C64A914B97; buildPhases = ( ); buildRules = ( ); dependencies = (
- 811D9E9CC2221100847306C9,
8F5816EA1D519B78C3345C1B,
E06C8C12CD5FDD7FB372E602,
017B214D817BF0DF53051BB2, ); name = "AUv3Synth (All)"; productName = AUv3Synth; };
- 32113A068DE980F098C3A7FA = {isa = XCConfigurationList; buildConfigurations = (
- 653C6C73C56BA201AB6F094C,
- 19D80348287645B624E0C6B8, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
- 2094EE2ED994CDD1B1C905BB = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (
- 6F585AC4628EC14C9F757022,
- 78704983DFEA5408FC5767D8, ); runOnlyForDeploymentPostprocessing = 0; };
- 074C299F37078964C5476AC0 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
- E94BB952CDD544FA3A0A4DBB, ); runOnlyForDeploymentPostprocessing = 0; };
- 88CA07DBC6CAFF5FF3E65E3E = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (
- FAD4DF17110D52B8ED8D9F93,
- 737E06660F37BFFCABD89643,
- D53302896621B8A3E8BDD606,
- 669F51FA55E939D010EA279D,
- EDC8ABA2EC0A2D7A2147E896,
- 7DEC97493F97160DE6622DBC,
- 1DF18B2507A574FBA9C49DE1,
- 71F62F07CBC67FB4FB010583,
- 6B818B8342839FB008124DEA,
- F452B8399A32BE4F1074F596,
- E4236DCEE707C3855C2E3B22, ); runOnlyForDeploymentPostprocessing = 0; };
- 73F4C13CDCAC7EE5914F2E61 = {isa = PBXNativeTarget; buildConfigurationList = 32113A068DE980F098C3A7FA; buildPhases = (
- 2094EE2ED994CDD1B1C905BB,
- 074C299F37078964C5476AC0,
- 88CA07DBC6CAFF5FF3E65E3E, ); buildRules = ( ); dependencies = (
- 017B214D817BF0DF53051BB2, ); name = "AUv3Synth (VST)"; productName = AUv3Synth; productReference = F5E81FD99EFCB226D2486603; productType = "com.apple.product-type.bundle"; };
3A7896DB2C11717D9046CE5B = {isa = XCConfigurationList; buildConfigurations = (
DC95EAEBECC74A55CADCD887,
5FAC649347835B831BAE3C41, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; };
4D9D92DD454BB03746241196, ); runOnlyForDeploymentPostprocessing = 0; };
CD6892FED0DB19C0DDD9AD37 = {isa = PBXNativeTarget; buildConfigurationList = AF907C78A0D17B741F5F8944; buildPhases = (
1F4A8812AAE49E02F3215F48, ); buildRules = ( ); dependencies = ( ); name = "AUv3Synth (Shared Code)"; productName = AUv3Synth; productReference = 9536B5A780A03F6BACB24144; productType = "com.apple.product-type.library.static"; };
- D0E003364F0BE3205BD9243E = {isa = PBXProject; buildConfigurationList = 444EA74CE26BF416566E542C; attributes = { LastUpgradeCheck = 0440; TargetAttributes = { EF49DCC88B5FC3C6E67ED2A4 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };73F4C13CDCAC7EE5914F2E61 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };7A046597FDDDB82B78C64AAC = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 1; }; }; };E600EF631F7AFA8F3A723E29 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };CD6892FED0DB19C0DDD9AD37 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; }; }; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 4BFA153CE4E8A774C67EC642; projectDirPath = ""; projectRoot = ""; targets = (EF49DCC88B5FC3C6E67ED2A4, 73F4C13CDCAC7EE5914F2E61, 7A046597FDDDB82B78C64AAC, E600EF631F7AFA8F3A723E29, CD6892FED0DB19C0DDD9AD37); };
+ D0E003364F0BE3205BD9243E = {isa = PBXProject; buildConfigurationList = 444EA74CE26BF416566E542C; attributes = { LastUpgradeCheck = 0440; TargetAttributes = { EF49DCC88B5FC3C6E67ED2A4 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };7A046597FDDDB82B78C64AAC = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 1; }; }; };E600EF631F7AFA8F3A723E29 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; };CD6892FED0DB19C0DDD9AD37 = { SystemCapabilities = {com.apple.InAppPurchase = { enabled = 0; }; com.apple.Sandbox = { enabled = 0; }; }; }; }; }; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 0; mainGroup = 4BFA153CE4E8A774C67EC642; projectDirPath = ""; projectRoot = ""; targets = (EF49DCC88B5FC3C6E67ED2A4, 7A046597FDDDB82B78C64AAC, E600EF631F7AFA8F3A723E29, CD6892FED0DB19C0DDD9AD37); };
};
rootObject = D0E003364F0BE3205BD9243E;
}
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="LrATE6" name="AnimationAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.AnimationAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="F3keCY" name="AnimationAppExample">\r
<GROUP id="{5E4132EA-C4A0-CBDE-BEDA-FD6772DA79D5}" name="Source">\r
<FILE id="n1FmZc" name="MainComponent.cpp" compile="1" resource="0"\r
2254F8D031DD15BDB278DE3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; };
22C4F82B505995F81CD682B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; };
22F62D0B5A88067C39036648 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = "../../../../modules/juce_core/zip/zlib/crc32.c"; sourceTree = "SOURCE_ROOT"; };
+ 231ACACE9E864E20DA50E3BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
2328C66A446079EDDCC8B14E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
234D4927B398ED6E9B7B0E6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; };
236A887259131B8CF3BFAA4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c"; sourceTree = "SOURCE_ROOT"; };
63EE49826BF4CFBD9D546DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; };
6421EA349C5D558114D36717 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
64807B3EFFBDC3348512901E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
+ 659AE4B65FC0E64C2AB91AB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
65DF385E92A4A65760DC3BD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; };
66897EA1FD2CDFB4CED47F8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; };
66B37CB373F19F65553466C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; };
A3F10D6226F279E9195F2CB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
A415044DB2E87AAB1BB9BEF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/all.h"; sourceTree = "SOURCE_ROOT"; };
A42A97232CE0593D8D989FC1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; };
+ A4DF895426B87D58C9446FAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
A4F394FB62E70E3A3A02E4C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; };
A50AF1519D78428A8DCD91BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioUnitPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
A52B29340D8E551C2F6FBC43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c"; sourceTree = "SOURCE_ROOT"; };
D64B71F992FF01CB0EE89641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
D6D37626671B0FB1CE8505C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; };
D6ECAF8B2A4E8B6C97B89FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
+ D71A9A6C9DF92980ADD5DF79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
D74DEEE99CFE7B2FFD474A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitreader.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h"; sourceTree = "SOURCE_ROOT"; };
D763221FDA235D75039D4C46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; };
D77B700B6C68C6055C26376E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jmemsys.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h"; sourceTree = "SOURCE_ROOT"; };
2B02634F8DA8660ED42B0AEF,
F79ADEBA7B305354085FFB8D,
66E854431C2BBDEE56EA43C8,
+ D71A9A6C9DF92980ADD5DF79,
0F67C59CB48583941B8656EF,
BB144FF841A99B08D5479777,
E652F16998FA1CBF2068C6FC, ); name = "format_types"; sourceTree = "<group>"; };
7F171BE6BFAA1E3E2A9BED61,
C8F82FBA1E0EF7EEA5BD02B9,
BCFE159BD9F2DA5515E028A4,
+ 231ACACE9E864E20DA50E3BB,
+ 659AE4B65FC0E64C2AB91AB1,
+ A4DF895426B87D58C9446FAB,
4C40BFAE1E25F166EBB5EC48,
25E6B62A5BF19A0D1E085E10,
684E11B1CE018B2C46938D80,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.AnimationAppExample;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.AnimationAppExample;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
2254F8D031DD15BDB278DE3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; };
22C4F82B505995F81CD682B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; };
22F62D0B5A88067C39036648 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = "../../../../modules/juce_core/zip/zlib/crc32.c"; sourceTree = "SOURCE_ROOT"; };
+ 231ACACE9E864E20DA50E3BB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
2328C66A446079EDDCC8B14E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LiveConstantEditor.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
234D4927B398ED6E9B7B0E6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileLogger.h"; path = "../../../../modules/juce_core/logging/juce_FileLogger.h"; sourceTree = "SOURCE_ROOT"; };
236A887259131B8CF3BFAA4D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c"; sourceTree = "SOURCE_ROOT"; };
63EE49826BF4CFBD9D546DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageEffectFilter.h"; path = "../../../../modules/juce_graphics/effects/juce_ImageEffectFilter.h"; sourceTree = "SOURCE_ROOT"; };
6421EA349C5D558114D36717 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputSource.h"; path = "../../../../modules/juce_core/streams/juce_InputSource.h"; sourceTree = "SOURCE_ROOT"; };
64807B3EFFBDC3348512901E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
+ 659AE4B65FC0E64C2AB91AB1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
65DF385E92A4A65760DC3BD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; };
66897EA1FD2CDFB4CED47F8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RSAKey.h"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.h"; sourceTree = "SOURCE_ROOT"; };
66B37CB373F19F65553466C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; };
A3F10D6226F279E9195F2CB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdatasrc.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdatasrc.c"; sourceTree = "SOURCE_ROOT"; };
A415044DB2E87AAB1BB9BEF2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = all.h; path = "../../../../modules/juce_audio_formats/codecs/flac/all.h"; sourceTree = "SOURCE_ROOT"; };
A42A97232CE0593D8D989FC1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; };
+ A4DF895426B87D58C9446FAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
A4F394FB62E70E3A3A02E4C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; };
A50AF1519D78428A8DCD91BF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioUnitPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
A52B29340D8E551C2F6FBC43 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngtrans.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngtrans.c"; sourceTree = "SOURCE_ROOT"; };
D64B71F992FF01CB0EE89641 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
D6D37626671B0FB1CE8505C9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_URL.cpp"; path = "../../../../modules/juce_core/network/juce_URL.cpp"; sourceTree = "SOURCE_ROOT"; };
D6ECAF8B2A4E8B6C97B89FFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
+ D71A9A6C9DF92980ADD5DF79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
D74DEEE99CFE7B2FFD474A5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitreader.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h"; sourceTree = "SOURCE_ROOT"; };
D763221FDA235D75039D4C46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; };
D77B700B6C68C6055C26376E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jmemsys.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jmemsys.h"; sourceTree = "SOURCE_ROOT"; };
2B02634F8DA8660ED42B0AEF,
F79ADEBA7B305354085FFB8D,
66E854431C2BBDEE56EA43C8,
+ D71A9A6C9DF92980ADD5DF79,
0F67C59CB48583941B8656EF,
BB144FF841A99B08D5479777,
E652F16998FA1CBF2068C6FC, ); name = "format_types"; sourceTree = "<group>"; };
7F171BE6BFAA1E3E2A9BED61,
C8F82FBA1E0EF7EEA5BD02B9,
BCFE159BD9F2DA5515E028A4,
+ 231ACACE9E864E20DA50E3BB,
+ 659AE4B65FC0E64C2AB91AB1,
+ A4DF895426B87D58C9446FAB,
4C40BFAE1E25F166EBB5EC48,
25E6B62A5BF19A0D1E085E10,
684E11B1CE018B2C46938D80,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "AnimationAppExample";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "AnimationAppExample";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="PAnJXP" name="AudioAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.AudioAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="GaJIge" name="AudioAppExample">\r
<GROUP id="{168FC5D4-FA65-8320-F83E-C14C416638E1}" name="Source">\r
<FILE id="aHvhJ2" name="MainComponent.cpp" compile="1" resource="0"\r
0F7E54460D000A212BA37807 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; };
0FB03F29666B9E3588BCA21A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiFile.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.h"; sourceTree = "SOURCE_ROOT"; };
0FEA2018033238F713A9933D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; };
+ 0FF93A75818FDCB138CEB446 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
1062CD8BD738A5F58CC3F64D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../JuceLibraryCode/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; };
10CCA4154B34E2601DF7E36C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; };
10D6995E32D2195B83AB6625 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ordinals.h; path = "../../../../modules/juce_audio_formats/codecs/flac/ordinals.h"; sourceTree = "SOURCE_ROOT"; };
88AA420D1FEF4EB95D8166FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; };
88F756FE30BD5DEA47C1725D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; };
89163E9DB0626DF42D686130 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; };
+ 8929A0522417804FA7FBDA07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
8930689A13E07781BE58FA24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; };
898B5EF2CF5B2303DE59B07A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; };
89C90F8B0901C465E356C6C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; };
CF6E0A89DA49E7D810CF49A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c"; sourceTree = "SOURCE_ROOT"; };
CF6F99867E4ECCD2A2ED0B0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; };
CF746C34F8DB1B073F1A4FA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ CFAF960433F3BAD659D67305 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
D000979AF77A84718877BD31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; };
D045327CC8A3E0C370070496 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
D058B5E13E7E22FC4ED27B5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; };
DE350A7B7F148EDE3EB542DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mdct.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c"; sourceTree = "SOURCE_ROOT"; };
DE6FBEE731028F230A86F223 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; };
DE90A7AD96CDF9332CA4B1CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ DEB4C3647DCB3A2D1DDDEEF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
DF0EBC428D40282CD24D2015 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; };
DF4992745F5A01164C573D1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; };
DF8AC8795BBD9CC5918F5969 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; };
6C32FCD6B87189C1F43BD462,
DB6C3F30A7B477AA3A695B2D,
6D869E6ED7DF080A9FAF162C,
+ DEB4C3647DCB3A2D1DDDEEF1,
6C4F8F17F78FE9C8B45941D3,
DD7C6F9CAF5CBA11B6024A83,
5374AB638100ED67F198E888, ); name = "format_types"; sourceTree = "<group>"; };
A6E737E1560A81E5A45DD9BC,
948076D06B104682079290E5,
705D210EADDE876947060561,
+ 0FF93A75818FDCB138CEB446,
+ 8929A0522417804FA7FBDA07,
+ CFAF960433F3BAD659D67305,
4DC09FE2D606F3346B269F47,
E03B0CE2DF954597EDE01376,
64E7DC1B23F237CD9F141439,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.AudioAppExample;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.AudioAppExample;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
0F7E54460D000A212BA37807 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; };
0FB03F29666B9E3588BCA21A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiFile.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiFile.h"; sourceTree = "SOURCE_ROOT"; };
0FEA2018033238F713A9933D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; };
+ 0FF93A75818FDCB138CEB446 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
1062CD8BD738A5F58CC3F64D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_extra.mm"; path = "../../JuceLibraryCode/juce_gui_extra.mm"; sourceTree = "SOURCE_ROOT"; };
10CCA4154B34E2601DF7E36C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; };
10D6995E32D2195B83AB6625 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ordinals.h; path = "../../../../modules/juce_audio_formats/codecs/flac/ordinals.h"; sourceTree = "SOURCE_ROOT"; };
88AA420D1FEF4EB95D8166FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NSViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_NSViewComponent.h"; sourceTree = "SOURCE_ROOT"; };
88F756FE30BD5DEA47C1725D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; };
89163E9DB0626DF42D686130 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; };
+ 8929A0522417804FA7FBDA07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
8930689A13E07781BE58FA24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; };
898B5EF2CF5B2303DE59B07A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CPlusPlusCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; };
89C90F8B0901C465E356C6C8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; };
CF6E0A89DA49E7D810CF49A7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapistd.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapistd.c"; sourceTree = "SOURCE_ROOT"; };
CF6F99867E4ECCD2A2ED0B0C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; };
CF746C34F8DB1B073F1A4FA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableHeaderComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ CFAF960433F3BAD659D67305 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
D000979AF77A84718877BD31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEValue.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEValue.cpp"; sourceTree = "SOURCE_ROOT"; };
D045327CC8A3E0C370070496 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChannelRemappingAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ChannelRemappingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
D058B5E13E7E22FC4ED27B5C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ValueTreeSynchroniser.cpp"; path = "../../../../modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp"; sourceTree = "SOURCE_ROOT"; };
DE350A7B7F148EDE3EB542DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mdct.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/mdct.c"; sourceTree = "SOURCE_ROOT"; };
DE6FBEE731028F230A86F223 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_gui_basics.mm"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.mm"; sourceTree = "SOURCE_ROOT"; };
DE90A7AD96CDF9332CA4B1CB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ DEB4C3647DCB3A2D1DDDEEF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
DF0EBC428D40282CD24D2015 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePointPath.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp"; sourceTree = "SOURCE_ROOT"; };
DF4992745F5A01164C573D1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorParameterWithID.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h"; sourceTree = "SOURCE_ROOT"; };
DF8AC8795BBD9CC5918F5969 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; };
6C32FCD6B87189C1F43BD462,
DB6C3F30A7B477AA3A695B2D,
6D869E6ED7DF080A9FAF162C,
+ DEB4C3647DCB3A2D1DDDEEF1,
6C4F8F17F78FE9C8B45941D3,
DD7C6F9CAF5CBA11B6024A83,
5374AB638100ED67F198E888, ); name = "format_types"; sourceTree = "<group>"; };
A6E737E1560A81E5A45DD9BC,
948076D06B104682079290E5,
705D210EADDE876947060561,
+ 0FF93A75818FDCB138CEB446,
+ 8929A0522417804FA7FBDA07,
+ CFAF960433F3BAD659D67305,
4DC09FE2D606F3346B269F47,
E03B0CE2DF954597EDE01376,
64E7DC1B23F237CD9F141439,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "AudioAppExample";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "AudioAppExample";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="fyUrFS" name="BouncingBallWavetableDemo" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.BouncingBallWavetableDemo"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.4">\r
<MAINGROUP id="MgjqDB" name="BouncingBallWavetableDemo">\r
<GROUP id="{D35F88A0-C242-1CAA-21A9-6D01F78F4128}" name="Source">\r
<FILE id="M5GUDX" name="MainComponent.cpp" compile="1" resource="0"\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := WavetableBouncingEditor\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := WavetableBouncingEditor\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/MainComponent_a6ffb4a5.o \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking BouncingBallWavetableDemo\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning BouncingBallWavetableDemo\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping BouncingBallWavetableDemo\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MainComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
18BAB9D332D2D82B5D1B92D9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_processors.cpp"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.cpp"; sourceTree = "SOURCE_ROOT"; };
18C3F29BDA22ABA91C0A3941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserBase.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserBase.h"; sourceTree = "SOURCE_ROOT"; };
190658AD9646E057B7580A2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; };
+ 194648E04CC4B30A9E4FFFAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
19703DEDD564FBE9B631A5E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; };
198B99DB8626E20F46FFDEA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterChoice.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h"; sourceTree = "SOURCE_ROOT"; };
198CF6CF4F89D4581214D2C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_utils.h"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.h"; sourceTree = "SOURCE_ROOT"; };
4994A4DDCA255CE5CC96BE85 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_11.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_11.h"; sourceTree = "SOURCE_ROOT"; };
49D0126A6EDA00279B784EB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentMovementWatcher.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp"; sourceTree = "SOURCE_ROOT"; };
4A310AACD6A634DF5E9EB991 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourSelector.h"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.h"; sourceTree = "SOURCE_ROOT"; };
+ 4A4295D6898765B22FED690E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
4A710F2F7A5F24CCEEFD202F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ASIO.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_ASIO.cpp"; sourceTree = "SOURCE_ROOT"; };
4AAB1224C8A731A6994D74CE = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WavetableBouncingEditor.app; sourceTree = "BUILT_PRODUCTS_DIR"; };
4B09A2E2E9F9550B7FCC5FAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioVisualiserComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioVisualiserComponent.h"; sourceTree = "SOURCE_ROOT"; };
56461DE91A3E0D528F854707 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ConcertinaPanel.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ConcertinaPanel.h"; sourceTree = "SOURCE_ROOT"; };
56B03FD7B52504D3B1929907 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_data_structures.h"; path = "../../../../modules/juce_data_structures/juce_data_structures.h"; sourceTree = "SOURCE_ROOT"; };
56B0CFDCC3922B395292E892 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_TextPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 576DA902DC355B135944F652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
579BC84225D2FB307131F0DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../../../modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; };
57B39EABC6E4CF0B9942D379 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropTarget.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
57E0AAF3F3AD2D086CCC1083 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_BluetoothMidiDevicePairingDialogue.mm"; path = "../../../../modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm"; sourceTree = "SOURCE_ROOT"; };
9DA02B1D7924511E16841B4B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = "../../../../modules/juce_core/zip/zlib/uncompr.c"; sourceTree = "SOURCE_ROOT"; };
9DCBCC54540E38F4383E2FB7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlDocument.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
9DEE6DEB6F0333175EACF2B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_TextButton.h"; sourceTree = "SOURCE_ROOT"; };
+ 9DFD34E9526B4AF313FAD3B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
9E2630C8E13FF54922CE148D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; };
9EEBF7D23F2D1821FD8B1FF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; };
9F41B18DB0A2FF5EF084AED6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = inflate.c; path = "../../../../modules/juce_core/zip/zlib/inflate.c"; sourceTree = "SOURCE_ROOT"; };
1A7D831E49C2BA0CC0CA5128,
DBC0E281A2E05DE8E668CBB4,
5E312C939C9B9E5E37639A79,
+ 576DA902DC355B135944F652,
23AC41EA2ECCA1BED10D7E07,
8427B4F238DA7953130272B2,
ED576238B8B1D81ED56B99A5, ); name = "format_types"; sourceTree = "<group>"; };
227EFECB84E4E33FD7ABE586,
BF9675E73814F809F94D4865,
56461DE91A3E0D528F854707,
+ 4A4295D6898765B22FED690E,
+ 9DFD34E9526B4AF313FAD3B7,
+ 194648E04CC4B30A9E4FFFAA,
4F136C53A5974E59BD7E8D87,
8AE8FB07A821DAF2B447B211,
09887E936A885C1240AE5218,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.BouncingBallWavetableDemo;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.BouncingBallWavetableDemo;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
55DFA734C7AEB7AD1FA75ACB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActiveXControlComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h"; sourceTree = "SOURCE_ROOT"; };
560EF8EDA00C258C5EEE0FE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
561B5014ECB87D691306A4CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TimeSliceThread.cpp"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 5637BF8D4486B0BD2D41A541 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
56766C06F131481224707D00 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; };
578192335A99BEBF7C29D9D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; };
57A83B990FD49529356D225B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; };
89F1E29F501319BF488ECF28 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; };
8A84AC4483BBADF6A7A004B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CaretComponent.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
8A8C19C2ED45616FAC78EB78 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 8ACF65923A3E4AB8AB818CAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
8AEF70673FF810778EFC6D08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jccolor.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jccolor.c"; sourceTree = "SOURCE_ROOT"; };
8B11018691CF485F1067F278 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedAppComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
8BB34D1B1519891162B0DBFE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; };
B6E1814BE1E753B8791962F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Toolbar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.h"; sourceTree = "SOURCE_ROOT"; };
B731F59C6868BE055F007329 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourGradient.cpp"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.cpp"; sourceTree = "SOURCE_ROOT"; };
B7FB20F3D5020CD8988242FB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; };
+ B9566042D1A56EC2FE64D184 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
B95F8C80E0D44391899531B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jconfig.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jconfig.h"; sourceTree = "SOURCE_ROOT"; };
BA06E3D4038305A8D8ECD3E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InputStream.h"; path = "../../../../modules/juce_core/streams/juce_InputStream.h"; sourceTree = "SOURCE_ROOT"; };
BA51067FE0DB7FA0DB2F755E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; };
2C5516C7385DDAA74A06E64A,
CE98C1D1F69BFC0E26DF6292,
042A6506F7508AC4A48527E7,
+ 5637BF8D4486B0BD2D41A541,
+ 8ACF65923A3E4AB8AB818CAA,
+ B9566042D1A56EC2FE64D184,
D258A8E415E9907EE72BC7D2,
B05DCAAE274EB275BC75F489,
F186324F05630AC2A90C7686,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.ComponentTutorialExample;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.ComponentTutorialExample;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
\r
<JUCERPROJECT id="oNvA5C" name="ComponentTutorialExample" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.yourcompany.ComponentTutorialExample"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.4">\r
<MAINGROUP id="WydTVz" name="ComponentTutorialExample">\r
<GROUP id="{F2C8112A-EE4B-7AF1-A0A9-16152D1EF1A7}" name="Source">\r
<FILE id="t4ngZQ" name="ToggleLightGridComponent.h" compile="0" resource="0"\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
../../../Source/Demos/ComponentTransformsDemo.cpp\\r
../../../Source/Demos/CryptographyDemo.cpp\\r
../../../Source/Demos/DialogsDemo.cpp\\r
+ ../../../Source/Demos/FlexBoxDemo.cpp\\r
../../../Source/Demos/FontsDemo.cpp\\r
../../../Source/Demos/GraphicsDemo.cpp\\r
../../../Source/Demos/ImagesDemo.cpp\\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := JuceDemo\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=3.0.0 -DJUCE_APP_VERSION_HEX=0x30000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := JuceDemo\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/MainWindow_499ac812.o \\r
- $(OBJDIR)/IntroScreen_73347059.o \\r
- $(OBJDIR)/AnimationDemo_9fc7e4e9.o \\r
- $(OBJDIR)/AudioLatencyDemo_78d49233.o \\r
- $(OBJDIR)/AudioPlaybackDemo_ea12adf6.o \\r
- $(OBJDIR)/AudioRecordingDemo_435914e6.o \\r
- $(OBJDIR)/AudioSettingsDemo_6d710bfe.o \\r
- $(OBJDIR)/AudioSynthesiserDemo_1b3666f6.o \\r
- $(OBJDIR)/Box2DDemo_51053c42.o \\r
- $(OBJDIR)/CameraDemo_a10f7e50.o \\r
- $(OBJDIR)/ChildProcessDemo_2c2b949e.o \\r
- $(OBJDIR)/CodeEditorDemo_d5c17a65.o \\r
- $(OBJDIR)/ComponentTransformsDemo_377f7889.o \\r
- $(OBJDIR)/CryptographyDemo_232d46d7.o \\r
- $(OBJDIR)/DialogsDemo_19d585d0.o \\r
- $(OBJDIR)/FontsDemo_6da1e5e9.o \\r
- $(OBJDIR)/GraphicsDemo_85142ef6.o \\r
- $(OBJDIR)/ImagesDemo_ecf13aa3.o \\r
- $(OBJDIR)/JavaScript_d6e42eb5.o \\r
- $(OBJDIR)/KeyMappingsDemo_cf05c709.o \\r
- $(OBJDIR)/LiveConstantDemo_e3b18a9b.o \\r
- $(OBJDIR)/LookAndFeelDemo_25c558a3.o \\r
- $(OBJDIR)/MDIDemo_c476c2d7.o \\r
- $(OBJDIR)/MidiDemo_75ebc30c.o \\r
- $(OBJDIR)/MultithreadingDemo_ff566eaa.o \\r
- $(OBJDIR)/MultiTouch_595f3a2e.o \\r
- $(OBJDIR)/NetworkingDemo_fbd1b19f.o \\r
- $(OBJDIR)/OpenGLDemo_fdac55da.o \\r
- $(OBJDIR)/OpenGLDemo2D_48eeadec.o \\r
- $(OBJDIR)/PropertiesDemo_8ff1a8de.o \\r
- $(OBJDIR)/SystemInfoDemo_984acd28.o \\r
- $(OBJDIR)/TimersAndEventsDemo_f2656547.o \\r
- $(OBJDIR)/UnitTestsDemo_5c21762.o \\r
- $(OBJDIR)/ValueTreesDemo_9657d84f.o \\r
- $(OBJDIR)/VideoDemo_b55a1560.o \\r
- $(OBJDIR)/WebBrowserDemo_3df2dbdf.o \\r
- $(OBJDIR)/WidgetsDemo_fb0454.o \\r
- $(OBJDIR)/WindowsDemo_e8cfa428.o \\r
- $(OBJDIR)/XMLandJSONDemo_5bc88df3.o \\r
- $(OBJDIR)/BinaryData_ce4232d4.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_box2d_95719d14.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/MainWindow_499ac812.o \\r
+ $(JUCE_OBJDIR)/IntroScreen_73347059.o \\r
+ $(JUCE_OBJDIR)/AnimationDemo_9fc7e4e9.o \\r
+ $(JUCE_OBJDIR)/AudioLatencyDemo_78d49233.o \\r
+ $(JUCE_OBJDIR)/AudioPlaybackDemo_ea12adf6.o \\r
+ $(JUCE_OBJDIR)/AudioRecordingDemo_435914e6.o \\r
+ $(JUCE_OBJDIR)/AudioSettingsDemo_6d710bfe.o \\r
+ $(JUCE_OBJDIR)/AudioSynthesiserDemo_1b3666f6.o \\r
+ $(JUCE_OBJDIR)/Box2DDemo_51053c42.o \\r
+ $(JUCE_OBJDIR)/CameraDemo_a10f7e50.o \\r
+ $(JUCE_OBJDIR)/ChildProcessDemo_2c2b949e.o \\r
+ $(JUCE_OBJDIR)/CodeEditorDemo_d5c17a65.o \\r
+ $(JUCE_OBJDIR)/ComponentTransformsDemo_377f7889.o \\r
+ $(JUCE_OBJDIR)/CryptographyDemo_232d46d7.o \\r
+ $(JUCE_OBJDIR)/DialogsDemo_19d585d0.o \\r
+ $(JUCE_OBJDIR)/FlexBoxDemo_e4f3d9b7.o \\r
+ $(JUCE_OBJDIR)/FontsDemo_6da1e5e9.o \\r
+ $(JUCE_OBJDIR)/GraphicsDemo_85142ef6.o \\r
+ $(JUCE_OBJDIR)/ImagesDemo_ecf13aa3.o \\r
+ $(JUCE_OBJDIR)/JavaScript_d6e42eb5.o \\r
+ $(JUCE_OBJDIR)/KeyMappingsDemo_cf05c709.o \\r
+ $(JUCE_OBJDIR)/LiveConstantDemo_e3b18a9b.o \\r
+ $(JUCE_OBJDIR)/LookAndFeelDemo_25c558a3.o \\r
+ $(JUCE_OBJDIR)/MDIDemo_c476c2d7.o \\r
+ $(JUCE_OBJDIR)/MidiDemo_75ebc30c.o \\r
+ $(JUCE_OBJDIR)/MultithreadingDemo_ff566eaa.o \\r
+ $(JUCE_OBJDIR)/MultiTouch_595f3a2e.o \\r
+ $(JUCE_OBJDIR)/NetworkingDemo_fbd1b19f.o \\r
+ $(JUCE_OBJDIR)/OpenGLDemo_fdac55da.o \\r
+ $(JUCE_OBJDIR)/OpenGLDemo2D_48eeadec.o \\r
+ $(JUCE_OBJDIR)/PropertiesDemo_8ff1a8de.o \\r
+ $(JUCE_OBJDIR)/SystemInfoDemo_984acd28.o \\r
+ $(JUCE_OBJDIR)/TimersAndEventsDemo_f2656547.o \\r
+ $(JUCE_OBJDIR)/UnitTestsDemo_5c21762.o \\r
+ $(JUCE_OBJDIR)/ValueTreesDemo_9657d84f.o \\r
+ $(JUCE_OBJDIR)/VideoDemo_b55a1560.o \\r
+ $(JUCE_OBJDIR)/WebBrowserDemo_3df2dbdf.o \\r
+ $(JUCE_OBJDIR)/WidgetsDemo_fb0454.o \\r
+ $(JUCE_OBJDIR)/WindowsDemo_e8cfa428.o \\r
+ $(JUCE_OBJDIR)/XMLandJSONDemo_5bc88df3.o \\r
+ $(JUCE_OBJDIR)/BinaryData_ce4232d4.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_box2d_95719d14.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking JuceDemo\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning JuceDemo\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping JuceDemo\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MainWindow_499ac812.o: ../../Source/MainWindow.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MainWindow_499ac812.o: ../../Source/MainWindow.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MainWindow.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/IntroScreen_73347059.o: ../../Source/IntroScreen.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/IntroScreen_73347059.o: ../../Source/IntroScreen.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling IntroScreen.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AnimationDemo_9fc7e4e9.o: ../../Source/Demos/AnimationDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AnimationDemo_9fc7e4e9.o: ../../Source/Demos/AnimationDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AnimationDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AudioLatencyDemo_78d49233.o: ../../Source/Demos/AudioLatencyDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AudioLatencyDemo_78d49233.o: ../../Source/Demos/AudioLatencyDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AudioLatencyDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AudioPlaybackDemo_ea12adf6.o: ../../Source/Demos/AudioPlaybackDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AudioPlaybackDemo_ea12adf6.o: ../../Source/Demos/AudioPlaybackDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AudioPlaybackDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AudioRecordingDemo_435914e6.o: ../../Source/Demos/AudioRecordingDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AudioRecordingDemo_435914e6.o: ../../Source/Demos/AudioRecordingDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AudioRecordingDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AudioSettingsDemo_6d710bfe.o: ../../Source/Demos/AudioSettingsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AudioSettingsDemo_6d710bfe.o: ../../Source/Demos/AudioSettingsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AudioSettingsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/AudioSynthesiserDemo_1b3666f6.o: ../../Source/Demos/AudioSynthesiserDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/AudioSynthesiserDemo_1b3666f6.o: ../../Source/Demos/AudioSynthesiserDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling AudioSynthesiserDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/Box2DDemo_51053c42.o: ../../Source/Demos/Box2DDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Box2DDemo_51053c42.o: ../../Source/Demos/Box2DDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Box2DDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/CameraDemo_a10f7e50.o: ../../Source/Demos/CameraDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/CameraDemo_a10f7e50.o: ../../Source/Demos/CameraDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling CameraDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/ChildProcessDemo_2c2b949e.o: ../../Source/Demos/ChildProcessDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/ChildProcessDemo_2c2b949e.o: ../../Source/Demos/ChildProcessDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling ChildProcessDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/CodeEditorDemo_d5c17a65.o: ../../Source/Demos/CodeEditorDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/CodeEditorDemo_d5c17a65.o: ../../Source/Demos/CodeEditorDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling CodeEditorDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/ComponentTransformsDemo_377f7889.o: ../../Source/Demos/ComponentTransformsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/ComponentTransformsDemo_377f7889.o: ../../Source/Demos/ComponentTransformsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling ComponentTransformsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/CryptographyDemo_232d46d7.o: ../../Source/Demos/CryptographyDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/CryptographyDemo_232d46d7.o: ../../Source/Demos/CryptographyDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling CryptographyDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/DialogsDemo_19d585d0.o: ../../Source/Demos/DialogsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/DialogsDemo_19d585d0.o: ../../Source/Demos/DialogsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling DialogsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
+\r
+$(JUCE_OBJDIR)/FlexBoxDemo_e4f3d9b7.o: ../../Source/Demos/FlexBoxDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
+ @echo "Compiling FlexBoxDemo.cpp"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/FontsDemo_6da1e5e9.o: ../../Source/Demos/FontsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/FontsDemo_6da1e5e9.o: ../../Source/Demos/FontsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling FontsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/GraphicsDemo_85142ef6.o: ../../Source/Demos/GraphicsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/GraphicsDemo_85142ef6.o: ../../Source/Demos/GraphicsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling GraphicsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/ImagesDemo_ecf13aa3.o: ../../Source/Demos/ImagesDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/ImagesDemo_ecf13aa3.o: ../../Source/Demos/ImagesDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling ImagesDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/JavaScript_d6e42eb5.o: ../../Source/Demos/JavaScript.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/JavaScript_d6e42eb5.o: ../../Source/Demos/JavaScript.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling JavaScript.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/KeyMappingsDemo_cf05c709.o: ../../Source/Demos/KeyMappingsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/KeyMappingsDemo_cf05c709.o: ../../Source/Demos/KeyMappingsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling KeyMappingsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/LiveConstantDemo_e3b18a9b.o: ../../Source/Demos/LiveConstantDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/LiveConstantDemo_e3b18a9b.o: ../../Source/Demos/LiveConstantDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling LiveConstantDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/LookAndFeelDemo_25c558a3.o: ../../Source/Demos/LookAndFeelDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/LookAndFeelDemo_25c558a3.o: ../../Source/Demos/LookAndFeelDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling LookAndFeelDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MDIDemo_c476c2d7.o: ../../Source/Demos/MDIDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MDIDemo_c476c2d7.o: ../../Source/Demos/MDIDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MDIDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MidiDemo_75ebc30c.o: ../../Source/Demos/MidiDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MidiDemo_75ebc30c.o: ../../Source/Demos/MidiDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MidiDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MultithreadingDemo_ff566eaa.o: ../../Source/Demos/MultithreadingDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MultithreadingDemo_ff566eaa.o: ../../Source/Demos/MultithreadingDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MultithreadingDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MultiTouch_595f3a2e.o: ../../Source/Demos/MultiTouch.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MultiTouch_595f3a2e.o: ../../Source/Demos/MultiTouch.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MultiTouch.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/NetworkingDemo_fbd1b19f.o: ../../Source/Demos/NetworkingDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/NetworkingDemo_fbd1b19f.o: ../../Source/Demos/NetworkingDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling NetworkingDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/OpenGLDemo_fdac55da.o: ../../Source/Demos/OpenGLDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/OpenGLDemo_fdac55da.o: ../../Source/Demos/OpenGLDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling OpenGLDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/OpenGLDemo2D_48eeadec.o: ../../Source/Demos/OpenGLDemo2D.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/OpenGLDemo2D_48eeadec.o: ../../Source/Demos/OpenGLDemo2D.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling OpenGLDemo2D.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/PropertiesDemo_8ff1a8de.o: ../../Source/Demos/PropertiesDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/PropertiesDemo_8ff1a8de.o: ../../Source/Demos/PropertiesDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling PropertiesDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/SystemInfoDemo_984acd28.o: ../../Source/Demos/SystemInfoDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/SystemInfoDemo_984acd28.o: ../../Source/Demos/SystemInfoDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling SystemInfoDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/TimersAndEventsDemo_f2656547.o: ../../Source/Demos/TimersAndEventsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/TimersAndEventsDemo_f2656547.o: ../../Source/Demos/TimersAndEventsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling TimersAndEventsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/UnitTestsDemo_5c21762.o: ../../Source/Demos/UnitTestsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/UnitTestsDemo_5c21762.o: ../../Source/Demos/UnitTestsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling UnitTestsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/ValueTreesDemo_9657d84f.o: ../../Source/Demos/ValueTreesDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/ValueTreesDemo_9657d84f.o: ../../Source/Demos/ValueTreesDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling ValueTreesDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/VideoDemo_b55a1560.o: ../../Source/Demos/VideoDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/VideoDemo_b55a1560.o: ../../Source/Demos/VideoDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling VideoDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/WebBrowserDemo_3df2dbdf.o: ../../Source/Demos/WebBrowserDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/WebBrowserDemo_3df2dbdf.o: ../../Source/Demos/WebBrowserDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling WebBrowserDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/WidgetsDemo_fb0454.o: ../../Source/Demos/WidgetsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/WidgetsDemo_fb0454.o: ../../Source/Demos/WidgetsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling WidgetsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/WindowsDemo_e8cfa428.o: ../../Source/Demos/WindowsDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/WindowsDemo_e8cfa428.o: ../../Source/Demos/WindowsDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling WindowsDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/XMLandJSONDemo_5bc88df3.o: ../../Source/Demos/XMLandJSONDemo.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/XMLandJSONDemo_5bc88df3.o: ../../Source/Demos/XMLandJSONDemo.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling XMLandJSONDemo.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling BinaryData.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_box2d_95719d14.o: ../../JuceLibraryCode/juce_box2d.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_box2d_95719d14.o: ../../JuceLibraryCode/juce_box2d.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_box2d.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
587D594CCB99791F4D724DB4 = {isa = PBXBuildFile; fileRef = 64E7D43C4F4037CFC2C5E2AC; };
40D223F10936E34918B48639 = {isa = PBXBuildFile; fileRef = 49412C044B88516D9AF59FDD; };
F739D6D21483E3498985C7AF = {isa = PBXBuildFile; fileRef = 55D08920D4992CD0721AA3E3; };
+ 2BFF2E7E13527E2E764617AA = {isa = PBXBuildFile; fileRef = 7AEEF2EE40D3B8AE687C6618; };
E4A67DD76D4D063F547F0844 = {isa = PBXBuildFile; fileRef = 4DB00B418C4F068BC5FC7314; };
257CBA785DEDAF53F4E9BF60 = {isa = PBXBuildFile; fileRef = 4D569839066D92C393F58EB4; };
9C30D9613D76EEFDB1653F34 = {isa = PBXBuildFile; fileRef = 7DBF83B26277D13CB3FC1479; };
2F1324CBA29604BD3E2003B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; };
2F19C814598FC304CA841242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
2F66B42AF6C0B5ED381937C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; };
+ 2F78DE5144EBEAC697309BDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
2F7F13C84464F8409BBDBEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; };
2F8041ECBF70D78604686D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; };
2F8D57F15D63118E33CB0639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
417FED446C0B953AB2DDB633 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2ContactSolver.cpp; path = "../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.cpp"; sourceTree = "SOURCE_ROOT"; };
4198EE3311A171C884A5FA9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
41F65957FAEED268DBFFE925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
+ 41F76FF32798054E741CB90B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
420516E3BCE114E11526E916 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c"; sourceTree = "SOURCE_ROOT"; };
4212EA9CE0B9AA4986108D9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; };
42386AD366F1AD43B6B29364 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
7A2009F14F7AFEEF7F233EBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitmath.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c"; sourceTree = "SOURCE_ROOT"; };
7AD412430D3AEB0468089AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
7AE34C0CF7EABE461F4FE5FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Body.h; path = "../../../../modules/juce_box2d/box2d/Dynamics/b2Body.h"; sourceTree = "SOURCE_ROOT"; };
+ 7AEEF2EE40D3B8AE687C6618 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FlexBoxDemo.cpp; path = ../../Source/Demos/FlexBoxDemo.cpp; sourceTree = "SOURCE_ROOT"; };
7AF9EF500482C84F02849647 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; };
7B5560AEA0CB3E507C16140C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
7B81083FC4CCD2D096D93162 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; };
EE7001BD5206A8D8EA2D125B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; };
EEA020419EF58E90C10AAE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; };
EEAA1BB6254EDE07A7ABAD65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
+ EF18C494669488BEDFC25A5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
EF8055850F3DEA173761E3B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; };
EFD1BD42000EE640A17EE1ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; };
EFDA611057B66032D2F06E53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Joint.cpp; path = "../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.cpp"; sourceTree = "SOURCE_ROOT"; };
FC63A33CA2E025F5C4C22CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; };
FCA788F92D5BB1640CD2AC35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSettingsDemo.cpp; path = ../../Source/Demos/AudioSettingsDemo.cpp; sourceTree = "SOURCE_ROOT"; };
FCAC296E92A219D70EB96AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; };
+ FCE177D4FA4ABB9635AC9737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
FD22F7A808D3B534354FD7E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Distance.h; path = "../../../../modules/juce_box2d/box2d/Collision/b2Distance.h"; sourceTree = "SOURCE_ROOT"; };
FD2A08CE74C6EBC90CD44A49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; };
FD46383E356A5DDC1AD53380 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkingDemo.cpp; path = ../../Source/Demos/NetworkingDemo.cpp; sourceTree = "SOURCE_ROOT"; };
64E7D43C4F4037CFC2C5E2AC,
49412C044B88516D9AF59FDD,
55D08920D4992CD0721AA3E3,
+ 7AEEF2EE40D3B8AE687C6618,
4DB00B418C4F068BC5FC7314,
4D569839066D92C393F58EB4,
7DBF83B26277D13CB3FC1479,
9750423DB3DB6570382DA3C1,
9B9E034C5761096ACB8A76C3,
73267FE8DDE50FD1E6E31ED4,
+ 41F76FF32798054E741CB90B,
8AE56D2F4E33B015C3D73EB8,
52A95B5754438C999343869A,
C8A42EE493A1DF2E283C245E, ); name = "format_types"; sourceTree = "<group>"; };
2DDE8684F3C5CB4A781D72A5,
F58760A8EE18630F97C7B646,
1D62103CFAB9245F2CF523EC,
+ EF18C494669488BEDFC25A5D,
+ FCE177D4FA4ABB9635AC9737,
+ 2F78DE5144EBEAC697309BDC,
1065FE461C00EABD9485BB93,
2E093A5506319EC68DA184F4,
53AA2F507FD9DE263E43B277,
587D594CCB99791F4D724DB4,
40D223F10936E34918B48639,
F739D6D21483E3498985C7AF,
+ 2BFF2E7E13527E2E764617AA,
E4A67DD76D4D063F547F0844,
257CBA785DEDAF53F4E9BF60,
9C30D9613D76EEFDB1653F34,
<ClCompile Include="..\..\Source\Demos\ComponentTransformsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\CryptographyDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp"/>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\GraphicsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\ImagesDemo.cpp"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp">\r
+ <Filter>JuceDemo\Source\Demos</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\Source\Demos\ComponentTransformsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\CryptographyDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp"/>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\GraphicsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\ImagesDemo.cpp"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp">\r
+ <Filter>JuceDemo\Source\Demos</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\Source\Demos\ComponentTransformsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\CryptographyDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp"/>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\GraphicsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\ImagesDemo.cpp"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp">\r
+ <Filter>JuceDemo\Source\Demos</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\Source\Demos\ComponentTransformsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\CryptographyDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp"/>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\GraphicsDemo.cpp"/>\r
<ClCompile Include="..\..\Source\Demos\ImagesDemo.cpp"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\Source\Demos\DialogsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\Source\Demos\FlexBoxDemo.cpp">\r
+ <Filter>JuceDemo\Source\Demos</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\Source\Demos\FontsDemo.cpp">\r
<Filter>JuceDemo\Source\Demos</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
587D594CCB99791F4D724DB4 = {isa = PBXBuildFile; fileRef = 64E7D43C4F4037CFC2C5E2AC; };
40D223F10936E34918B48639 = {isa = PBXBuildFile; fileRef = 49412C044B88516D9AF59FDD; };
F739D6D21483E3498985C7AF = {isa = PBXBuildFile; fileRef = 55D08920D4992CD0721AA3E3; };
+ 2BFF2E7E13527E2E764617AA = {isa = PBXBuildFile; fileRef = 7AEEF2EE40D3B8AE687C6618; };
E4A67DD76D4D063F547F0844 = {isa = PBXBuildFile; fileRef = 4DB00B418C4F068BC5FC7314; };
257CBA785DEDAF53F4E9BF60 = {isa = PBXBuildFile; fileRef = 4D569839066D92C393F58EB4; };
9C30D9613D76EEFDB1653F34 = {isa = PBXBuildFile; fileRef = 7DBF83B26277D13CB3FC1479; };
2F1324CBA29604BD3E2003B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; };
2F19C814598FC304CA841242 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
2F66B42AF6C0B5ED381937C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; };
+ 2F78DE5144EBEAC697309BDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
2F7F13C84464F8409BBDBEB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageListener.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageListener.cpp"; sourceTree = "SOURCE_ROOT"; };
2F8041ECBF70D78604686D6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePointPath.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePointPath.h"; sourceTree = "SOURCE_ROOT"; };
2F8D57F15D63118E33CB0639 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
417FED446C0B953AB2DDB633 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2ContactSolver.cpp; path = "../../../../modules/juce_box2d/box2d/Dynamics/Contacts/b2ContactSolver.cpp"; sourceTree = "SOURCE_ROOT"; };
4198EE3311A171C884A5FA9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_WildcardFileFilter.cpp"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.cpp"; sourceTree = "SOURCE_ROOT"; };
41F65957FAEED268DBFFE925 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
+ 41F76FF32798054E741CB90B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
420516E3BCE114E11526E916 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/smallft.c"; sourceTree = "SOURCE_ROOT"; };
4212EA9CE0B9AA4986108D9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; };
42386AD366F1AD43B6B29364 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; };
7A2009F14F7AFEEF7F233EBC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitmath.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c"; sourceTree = "SOURCE_ROOT"; };
7AD412430D3AEB0468089AF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
7AE34C0CF7EABE461F4FE5FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Body.h; path = "../../../../modules/juce_box2d/box2d/Dynamics/b2Body.h"; sourceTree = "SOURCE_ROOT"; };
+ 7AEEF2EE40D3B8AE687C6618 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = FlexBoxDemo.cpp; path = ../../Source/Demos/FlexBoxDemo.cpp; sourceTree = "SOURCE_ROOT"; };
7AF9EF500482C84F02849647 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPENote.h"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.h"; sourceTree = "SOURCE_ROOT"; };
7B5560AEA0CB3E507C16140C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
7B81083FC4CCD2D096D93162 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; };
EE7001BD5206A8D8EA2D125B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; };
EEA020419EF58E90C10AAE26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; };
EEAA1BB6254EDE07A7ABAD65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
+ EF18C494669488BEDFC25A5D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
EF8055850F3DEA173761E3B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; };
EFD1BD42000EE640A17EE1ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; };
EFDA611057B66032D2F06E53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = b2Joint.cpp; path = "../../../../modules/juce_box2d/box2d/Dynamics/Joints/b2Joint.cpp"; sourceTree = "SOURCE_ROOT"; };
FC63A33CA2E025F5C4C22CD3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; };
FCA788F92D5BB1640CD2AC35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSettingsDemo.cpp; path = ../../Source/Demos/AudioSettingsDemo.cpp; sourceTree = "SOURCE_ROOT"; };
FCAC296E92A219D70EB96AD5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Slider.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.cpp"; sourceTree = "SOURCE_ROOT"; };
+ FCE177D4FA4ABB9635AC9737 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
FD22F7A808D3B534354FD7E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = b2Distance.h; path = "../../../../modules/juce_box2d/box2d/Collision/b2Distance.h"; sourceTree = "SOURCE_ROOT"; };
FD2A08CE74C6EBC90CD44A49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; };
FD46383E356A5DDC1AD53380 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkingDemo.cpp; path = ../../Source/Demos/NetworkingDemo.cpp; sourceTree = "SOURCE_ROOT"; };
64E7D43C4F4037CFC2C5E2AC,
49412C044B88516D9AF59FDD,
55D08920D4992CD0721AA3E3,
+ 7AEEF2EE40D3B8AE687C6618,
4DB00B418C4F068BC5FC7314,
4D569839066D92C393F58EB4,
7DBF83B26277D13CB3FC1479,
9750423DB3DB6570382DA3C1,
9B9E034C5761096ACB8A76C3,
73267FE8DDE50FD1E6E31ED4,
+ 41F76FF32798054E741CB90B,
8AE56D2F4E33B015C3D73EB8,
52A95B5754438C999343869A,
C8A42EE493A1DF2E283C245E, ); name = "format_types"; sourceTree = "<group>"; };
2DDE8684F3C5CB4A781D72A5,
F58760A8EE18630F97C7B646,
1D62103CFAB9245F2CF523EC,
+ EF18C494669488BEDFC25A5D,
+ FCE177D4FA4ABB9635AC9737,
+ 2F78DE5144EBEAC697309BDC,
1065FE461C00EABD9485BB93,
2E093A5506319EC68DA184F4,
53AA2F507FD9DE263E43B277,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "JuceDemo";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "JuceDemo";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
587D594CCB99791F4D724DB4,
40D223F10936E34918B48639,
F739D6D21483E3498985C7AF,
+ 2BFF2E7E13527E2E764617AA,
E4A67DD76D4D063F547F0844,
257CBA785DEDAF53F4E9BF60,
9C30D9613D76EEFDB1653F34,
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="sBBIzr" name="JuceDemo" projectType="guiapp" version="3.0.0"\r
- bundleIdentifier="com.yourcompany.JuceDemo" jucerVersion="4.2.3"\r
+ bundleIdentifier="com.yourcompany.JuceDemo" jucerVersion="4.2.4"\r
defines="JUCE_UNIT_TESTS=1" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
<FILE id="F4wkwd" name="CryptographyDemo.cpp" compile="1" resource="0"\r
file="Source/Demos/CryptographyDemo.cpp"/>\r
<FILE id="E17XEZ" name="DialogsDemo.cpp" compile="1" resource="0" file="Source/Demos/DialogsDemo.cpp"/>\r
+ <FILE id="mYE1dA" name="FlexBoxDemo.cpp" compile="1" resource="0" file="Source/Demos/FlexBoxDemo.cpp"/>\r
<FILE id="oM20ll" name="FontsDemo.cpp" compile="1" resource="0" file="Source/Demos/FontsDemo.cpp"/>\r
<FILE id="emYkSr" name="GraphicsDemo.cpp" compile="1" resource="0"\r
file="Source/Demos/GraphicsDemo.cpp"/>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
audioSourcePlayer.setSource (&synthAudioSource);\r
\r
deviceManager.addAudioCallback (&audioSourcePlayer);\r
- deviceManager.addMidiInputCallback (String::empty, &(synthAudioSource.midiCollector));\r
+ deviceManager.addMidiInputCallback (String(), &(synthAudioSource.midiCollector));\r
\r
setOpaque (true);\r
setSize (640, 480);\r
~AudioSynthesiserDemo()\r
{\r
audioSourcePlayer.setSource (nullptr);\r
- deviceManager.removeMidiInputCallback (String::empty, &(synthAudioSource.midiCollector));\r
+ deviceManager.removeMidiInputCallback (String(), &(synthAudioSource.midiCollector));\r
deviceManager.removeAudioCallback (&audioSourcePlayer);\r
deviceManager.removeAudioCallback (&liveAudioDisplayComp);\r
}\r
{\r
public:\r
CodeEditorDemo()\r
- : fileChooser ("File", File::nonexistent, true, false, false,\r
+ : fileChooser ("File", File(), true, false, false,\r
"*.cpp;*.h;*.hpp;*.c;*.mm;*.m", String(),\r
"Choose a C++ file to open it in the editor")\r
{\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2015 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ ------------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+#include "../JuceDemoHeader.h"\r
+\r
+// these classes are C++11-only\r
+#if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS && JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS && JUCE_COMPILER_SUPPORTS_LAMBDAS\r
+\r
+struct DemoFlexPanel : public juce::Component,\r
+ private juce::TextEditor::Listener,\r
+ private juce::ComboBox::Listener\r
+{\r
+ DemoFlexPanel (juce::Colour col, FlexItem& item) : flexItem (item), colour (col)\r
+ {\r
+ int x = 70;\r
+ int y = 3;\r
+\r
+ setupTextEditor (flexOrderEditor, { x, y, 20, 18 }, "0");\r
+ addLabel ("order", flexOrderEditor);\r
+ y += 20;\r
+\r
+ setupTextEditor (flexGrowEditor, { x, y, 20, 18 }, "0");\r
+ addLabel ("flex-grow", flexGrowEditor);\r
+ y += 20;\r
+\r
+ setupTextEditor (flexShrinkEditor, { x, y, 20, 18 }, "1");\r
+ addLabel ("flex-shrink", flexShrinkEditor);\r
+ y += 20;\r
+\r
+ setupTextEditor (flexBasisEditor, { x, y, 33, 18 }, "100");\r
+ addLabel ("flex-basis", flexBasisEditor);\r
+ y += 20;\r
+\r
+ alignSelfCombo.addItem ("auto", 1);\r
+ alignSelfCombo.addItem ("flex-start", 2);\r
+ alignSelfCombo.addItem ("flex-end", 3);\r
+ alignSelfCombo.addItem ("center", 4);\r
+ alignSelfCombo.addItem ("stretch", 5);\r
+\r
+ alignSelfCombo.setBounds (x, y, 90, 18);\r
+ alignSelfCombo.addListener (this);\r
+ alignSelfCombo.setSelectedId (5);\r
+ alignSelfCombo.setColour (ComboBox::outlineColourId, Colours::transparentBlack);\r
+ addAndMakeVisible (alignSelfCombo);\r
+ addLabel ("align-self", alignSelfCombo);\r
+ }\r
+\r
+ void setupTextEditor (TextEditor& te, Rectangle<int> b, StringRef initialText)\r
+ {\r
+ te.setBounds (b);\r
+ te.setText (initialText);\r
+ te.addListener (this);\r
+\r
+ addAndMakeVisible (te);\r
+ }\r
+\r
+ void addLabel (const String& name, Component& target)\r
+ {\r
+ auto label = new Label (name, name);\r
+ label->attachToComponent (&target, true);\r
+ labels.add (label);\r
+ addAndMakeVisible (label);\r
+ }\r
+\r
+ void comboBoxChanged (ComboBox* cb) override\r
+ {\r
+ auto selectedID = cb->getSelectedId();\r
+\r
+ if (selectedID == 1) flexItem.alignSelf = FlexItem::AlignSelf::autoAlign;\r
+ if (selectedID == 2) flexItem.alignSelf = FlexItem::AlignSelf::flexStart;\r
+ if (selectedID == 3) flexItem.alignSelf = FlexItem::AlignSelf::flexEnd;\r
+ if (selectedID == 4) flexItem.alignSelf = FlexItem::AlignSelf::center;\r
+ if (selectedID == 5) flexItem.alignSelf = FlexItem::AlignSelf::stretch;\r
+\r
+ if (auto parent = getParentComponent())\r
+ parent->resized();\r
+ }\r
+\r
+ void textEditorTextChanged (TextEditor& textEditor) override\r
+ {\r
+ auto textIntValue = textEditor.getText().getFloatValue();\r
+\r
+ if (&textEditor == &flexOrderEditor) flexItem.order = (int) textIntValue;\r
+ if (&textEditor == &flexGrowEditor) flexItem.flexGrow = textIntValue;\r
+ if (&textEditor == &flexBasisEditor) flexItem.flexBasis = textIntValue;\r
+ if (&textEditor == &flexShrinkEditor) flexItem.flexShrink = textIntValue;\r
+\r
+ if (auto parent = getParentComponent())\r
+ parent->resized();\r
+ }\r
+\r
+ void paint (Graphics& g) override\r
+ {\r
+ auto r = getLocalBounds();\r
+\r
+ g.setColour (colour);\r
+ g.fillRect (r);\r
+\r
+ g.setColour (Colours::black);\r
+ g.drawFittedText ("w: " + String (r.getWidth()) + newLine + "h: " + String (r.getHeight()),\r
+ r.reduced (4), Justification::bottomRight, 2);\r
+ }\r
+\r
+ FlexItem& flexItem;\r
+\r
+ TextEditor flexOrderEditor, flexGrowEditor, flexShrinkEditor, flexBasisEditor;\r
+ ComboBox alignSelfCombo;\r
+\r
+ juce::Colour colour;\r
+ OwnedArray<Label> labels;\r
+\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoFlexPanel)\r
+\r
+};\r
+\r
+//==============================================================================\r
+struct FlexBoxDemo : public juce::Component,\r
+ private juce::Button::Listener\r
+{\r
+ FlexBoxDemo()\r
+ {\r
+ setupPropertiesPanel();\r
+ setupFlexBoxItems();\r
+ }\r
+\r
+ void resized() override\r
+ {\r
+ flexBox.performLayout (getFlexBoxBounds());\r
+ }\r
+\r
+ Rectangle<float> getFlexBoxBounds() const\r
+ {\r
+ return getLocalBounds().withTrimmedLeft (300)\r
+ .reduced (10)\r
+ .toFloat();\r
+ }\r
+\r
+ void paint (Graphics& g) override\r
+ {\r
+ g.fillAll (Colours::lightgrey);\r
+\r
+ g.setColour (Colours::white);\r
+ g.fillRect (getFlexBoxBounds());\r
+ }\r
+\r
+ void setupPropertiesPanel()\r
+ {\r
+ auto directionGroup = addControl (new GroupComponent ("direction", "flex-direction"));\r
+ directionGroup->setBounds (10, 30, 140, 110);\r
+\r
+ int i = 0;\r
+ int groupID = 1234;\r
+ int leftMargin = 15;\r
+ int topMargin = 45;\r
+\r
+ setupToggleButton (flexDirectionRowButton, "row", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (flexDirectionRowReverseButton, "row-reverse", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (flexDirectionColumnButton, "column", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (flexDirectionColumnReverseButton, "column-reverse", groupID, leftMargin, topMargin + i++ * 22);\r
+ flexDirectionRowButton.setToggleState (true, dontSendNotification);\r
+\r
+ auto wrapGroup = addControl (new GroupComponent ("wrap", "flex-wrap"));\r
+ wrapGroup->setBounds (160, 30, 140, 110);\r
+\r
+ i = 0;\r
+ ++groupID;\r
+ leftMargin = 165;\r
+\r
+ setupToggleButton (flexNoWrapButton, "nowrap", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (flexWrapButton, "wrap", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (flexWrapReverseButton, "wrap-reverse", groupID, leftMargin, topMargin + i++ * 22);\r
+ flexWrapButton.setToggleState (true, sendNotification);\r
+\r
+ auto justifyGroup = addControl (new GroupComponent ("justify", "justify-content"));\r
+ justifyGroup->setBounds (10, 150, 140, 140);\r
+\r
+ i = 0;\r
+ ++groupID;\r
+ leftMargin = 15;\r
+ topMargin = 165;\r
+\r
+ setupToggleButton (justifyFlexStartButton, "flex-start", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (justifyFlexEndButton, "flex-end", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (justifyCenterButton, "center", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (justifySpaceBetweenButton, "space-between", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (justifySpaceAroundButton, "space-around", groupID, leftMargin, topMargin + i++ * 22);\r
+ justifyFlexStartButton.setToggleState (true, sendNotification);\r
+\r
+ auto alignGroup = addControl (new GroupComponent ("align", "align-items"));\r
+ alignGroup->setBounds (160, 150, 140, 140);\r
+\r
+ i = 0;\r
+ ++groupID;\r
+ leftMargin = 165;\r
+ topMargin = 165;\r
+\r
+ setupToggleButton (alignStretchButton, "stretch", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignFlexStartButton, "flex-start", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignFlexEndButton, "flex-end", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignCenterButton, "center", groupID, leftMargin, topMargin + i++ * 22);\r
+ alignStretchButton.setToggleState (true, sendNotification);\r
+\r
+ auto alignContentGroup = addControl (new GroupComponent ("content", "align-content"));\r
+ alignContentGroup->setBounds (10, 300, 140, 160);\r
+\r
+ i = 0;\r
+ ++groupID;\r
+ leftMargin = 15;\r
+ topMargin = 315;\r
+\r
+ setupToggleButton (alignContentStretchButton, "stretch", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignContentFlexStartButton, "flex-start", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignContentFlexEndButton, "flex-end", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignContentCenterButton, "center", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignContentSpaceBetweenButton, "space-between", groupID, leftMargin, topMargin + i++ * 22);\r
+ setupToggleButton (alignContentSpaceAroundButton, "space-around", groupID, leftMargin, topMargin + i++ * 22);\r
+ alignContentStretchButton.setToggleState (true, sendNotification);\r
+ }\r
+\r
+ void setupFlexBoxItems()\r
+ {\r
+ addItem (Colours::orange);\r
+ addItem (Colours::aqua);\r
+ addItem (Colours::lightcoral);\r
+ addItem (Colours::aquamarine);\r
+ addItem (Colours::forestgreen);\r
+ }\r
+\r
+ void addItem (Colour colour)\r
+ {\r
+ flexBox.items.add (FlexItem (100, 150)\r
+ .withMargin (10)\r
+ .withWidth (200));\r
+\r
+ auto& flexItem = flexBox.items.getReference (flexBox.items.size() - 1);\r
+\r
+ auto panel = new DemoFlexPanel (colour, flexItem);\r
+ panels.add (panel);\r
+ flexItem.associatedComponent = panel;\r
+ addAndMakeVisible (panel);\r
+ }\r
+\r
+ void setupToggleButton (ToggleButton& tb, StringRef text, int groupID, int x, int y)\r
+ {\r
+ tb.setButtonText (text);\r
+ tb.setRadioGroupId (groupID);\r
+ tb.setToggleState (false, dontSendNotification);\r
+ tb.addListener (this);\r
+ tb.setBounds (x, y, 130, 22);\r
+\r
+ addAndMakeVisible (tb);\r
+ }\r
+\r
+ template <typename ComponentType>\r
+ ComponentType* addControl (ComponentType* newControlComp)\r
+ {\r
+ controls.add (newControlComp);\r
+ addAndMakeVisible (newControlComp);\r
+ return newControlComp;\r
+ }\r
+\r
+ void buttonClicked (Button* b) override\r
+ {\r
+ if (b->getToggleState())\r
+ {\r
+ if (b == &flexDirectionRowButton) flexBox.flexDirection = FlexBox::Direction::row;\r
+ else if (b == &flexDirectionRowReverseButton) flexBox.flexDirection = FlexBox::Direction::rowReverse;\r
+ else if (b == &flexDirectionColumnButton) flexBox.flexDirection = FlexBox::Direction::column;\r
+ else if (b == &flexDirectionColumnReverseButton) flexBox.flexDirection = FlexBox::Direction::columnReverse;\r
+ else if (b == &flexNoWrapButton) flexBox.flexWrap = FlexBox::Wrap::noWrap;\r
+ else if (b == &flexWrapButton) flexBox.flexWrap = FlexBox::Wrap::wrap;\r
+ else if (b == &flexWrapReverseButton) flexBox.flexWrap = FlexBox::Wrap::wrapReverse;\r
+ else if (b == &justifyFlexStartButton) flexBox.justifyContent = FlexBox::JustifyContent::flexStart;\r
+ else if (b == &justifyFlexEndButton) flexBox.justifyContent = FlexBox::JustifyContent::flexEnd;\r
+ else if (b == &justifyCenterButton) flexBox.justifyContent = FlexBox::JustifyContent::center;\r
+ else if (b == &justifySpaceBetweenButton) flexBox.justifyContent = FlexBox::JustifyContent::spaceBetween;\r
+ else if (b == &justifySpaceAroundButton) flexBox.justifyContent = FlexBox::JustifyContent::spaceAround;\r
+ else if (b == &alignStretchButton) flexBox.alignItems = FlexBox::AlignItems::stretch;\r
+ else if (b == &alignFlexStartButton) flexBox.alignItems = FlexBox::AlignItems::flexStart;\r
+ else if (b == &alignFlexEndButton) flexBox.alignItems = FlexBox::AlignItems::flexEnd;\r
+ else if (b == &alignCenterButton) flexBox.alignItems = FlexBox::AlignItems::center;\r
+ else if (b == &alignContentStretchButton) flexBox.alignContent = FlexBox::AlignContent::stretch;\r
+ else if (b == &alignContentFlexStartButton) flexBox.alignContent = FlexBox::AlignContent::flexStart;\r
+ else if (b == &alignContentFlexEndButton) flexBox.alignContent = FlexBox::AlignContent::flexEnd;\r
+ else if (b == &alignContentCenterButton) flexBox.alignContent = FlexBox::AlignContent::center;\r
+ else if (b == &alignContentSpaceBetweenButton) flexBox.alignContent = FlexBox::AlignContent::spaceBetween;\r
+ else if (b == &alignContentSpaceAroundButton) flexBox.alignContent = FlexBox::AlignContent::spaceAround;\r
+ else return;\r
+\r
+ resized();\r
+ }\r
+ }\r
+\r
+ FlexBox flexBox;\r
+\r
+ OwnedArray<DemoFlexPanel> panels;\r
+ OwnedArray<Component> controls;\r
+\r
+ ToggleButton flexDirectionRowButton,\r
+ flexDirectionRowReverseButton,\r
+ flexDirectionColumnButton,\r
+ flexDirectionColumnReverseButton,\r
+\r
+ flexNoWrapButton,\r
+ flexWrapButton,\r
+ flexWrapReverseButton,\r
+\r
+ justifyFlexStartButton,\r
+ justifyFlexEndButton,\r
+ justifyCenterButton,\r
+ justifySpaceBetweenButton,\r
+ justifySpaceAroundButton,\r
+\r
+ alignStretchButton,\r
+ alignFlexStartButton,\r
+ alignFlexEndButton,\r
+ alignCenterButton,\r
+\r
+ alignContentStretchButton,\r
+ alignContentFlexStartButton,\r
+ alignContentFlexEndButton,\r
+ alignContentCenterButton,\r
+ alignContentSpaceBetweenButton,\r
+ alignContentSpaceAroundButton;\r
+\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FlexBoxDemo)\r
+};\r
+\r
+\r
+// This static object will register this demo type in a global list of demos..\r
+static JuceDemoType<FlexBoxDemo> demo ("10 Components: FlexBox");\r
+\r
+#endif\r
{\r
public:\r
FontsDemo()\r
- : heightLabel (String::empty, "Height:"),\r
- kerningLabel (String::empty, "Kerning:"),\r
- scaleLabel (String::empty, "Scale:"),\r
+ : heightLabel (String(), "Height:"),\r
+ kerningLabel (String(), "Kerning:"),\r
+ scaleLabel (String(), "Scale:"),\r
styleLabel ("Style"),\r
boldToggle ("Bold"),\r
italicToggle ("Italic")\r
{\r
public:\r
ImagesRenderingDemo (ControllersComponent& cc, bool argb_, bool tiled_)\r
- : GraphicsDemoBase (cc, String ("Images") + (argb_ ? ": ARGB" : ": RGB") + (tiled_ ? " Tiled" : String::empty )),\r
+ : GraphicsDemoBase (cc, String ("Images") + (argb_ ? ": ARGB" : ": RGB") + (tiled_ ? " Tiled" : String() )),\r
isArgb (argb_), isTiled (tiled_)\r
{\r
argbImage = ImageFileFormat::loadFrom (BinaryData::juce_icon_png, (size_t) BinaryData::juce_icon_pngSize);\r
File getLastDocumentOpened() override\r
{\r
// not interested in this for now\r
- return File::nonexistent;\r
+ return File();\r
}\r
\r
void setLastDocumentOpened (const File& /*file*/) override\r
controlsOverlay->statusLabel.setText (statusText, dontSendNotification);\r
\r
\r
- newVertexShader = String::empty;\r
- newFragmentShader = String::empty;\r
+ newVertexShader = String();\r
+ newFragmentShader = String();\r
}\r
}\r
\r
\r
if (shader != nullptr)\r
{\r
- statusLabel.setText (String::empty, dontSendNotification);\r
+ statusLabel.setText (String(), dontSendNotification);\r
\r
shader->fillRect (g.getInternalContext(), getLocalBounds());\r
}\r
<< "User region: " << SystemStats::getUserRegion() << newLine\r
<< "User language: " << SystemStats::getUserLanguage() << newLine\r
<< "Display language: " << SystemStats::getDisplayLanguage() << newLine\r
- << newLine\r
+ << newLine;\r
+\r
+ systemInfo\r
<< "Number of CPUs: " << SystemStats::getNumCpus() << newLine\r
<< "Memory size: " << SystemStats::getMemorySizeInMegabytes() << " MB" << newLine\r
<< "CPU vendor: " << SystemStats::getCpuVendor() << newLine\r
<< "CPU has 3DNOW: " << (SystemStats::has3DNow() ? "yes" : "no") << newLine\r
<< "CPU has AVX: " << (SystemStats::hasAVX() ? "yes" : "no") << newLine\r
<< "CPU has AVX2: " << (SystemStats::hasAVX2() ? "yes" : "no") << newLine\r
- << newLine\r
+ << newLine;\r
+\r
+ systemInfo\r
<< "Current working directory: " << File::getCurrentWorkingDirectory().getFullPathName() << newLine\r
<< "Current application file: " << File::getSpecialLocation (File::currentApplicationFile).getFullPathName() << newLine\r
<< "Current executable file: " << File::getSpecialLocation (File::currentExecutableFile) .getFullPathName() << newLine\r
<< "Invoked executable file: " << File::getSpecialLocation (File::invokedExecutableFile) .getFullPathName() << newLine\r
- << newLine\r
+ << newLine;\r
+\r
+ systemInfo\r
<< "User home folder: " << File::getSpecialLocation (File::userHomeDirectory) .getFullPathName() << newLine\r
<< "User desktop folder: " << File::getSpecialLocation (File::userDesktopDirectory) .getFullPathName() << newLine\r
<< "User documents folder: " << File::getSpecialLocation (File::userDocumentsDirectory) .getFullPathName() << newLine\r
<< "Common application data folder: " << File::getSpecialLocation (File::commonApplicationDataDirectory).getFullPathName() << newLine\r
<< "Common documents folder: " << File::getSpecialLocation (File::commonDocumentsDirectory) .getFullPathName() << newLine\r
<< "Local temp folder: " << File::getSpecialLocation (File::tempDirectory) .getFullPathName() << newLine\r
- << newLine\r
+ << newLine;\r
+\r
+ systemInfo\r
<< "File System roots: " << getFileSystemRoots() << newLine\r
<< "Free space in home folder: " << File::descriptionOfSizeInBytes (File::getSpecialLocation (File::userHomeDirectory)\r
.getBytesFreeOnVolume()) << newLine\r
public:\r
MovieComponentWithFileBrowser()\r
: isDragOver (false),\r
- fileChooser ("movie", File::nonexistent, true, false, false,\r
- "*", String::empty, "(choose a video file to play)")\r
+ fileChooser ("movie", File(), true, false, false,\r
+ "*", String(), "(choose a video file to play)")\r
{\r
addAndMakeVisible (videoComp);\r
\r
\r
static String::CharPointerType findEndOfFaceToken (String::CharPointerType t) noexcept\r
{\r
- return CharacterFunctions::findEndOfToken (t, CharPointer_ASCII ("/ \t"), String::empty.getCharPointer());\r
+ return CharacterFunctions::findEndOfToken (t, CharPointer_ASCII ("/ \t"), String().getCharPointer());\r
}\r
};\r
\r
#include "../JuceDemoHeader.h"\r
\r
\r
-static void showBubbleMessage (Component* targetComponent, const String& textToShow)\r
+static void showBubbleMessage (Component* targetComponent, const String& textToShow,\r
+ ScopedPointer<BubbleMessageComponent>& bmc)\r
{\r
- BubbleMessageComponent* bmc = new BubbleMessageComponent();\r
+ bmc = new BubbleMessageComponent();\r
\r
if (Desktop::canUseSemiTransparentWindows())\r
{\r
AttributedString text (textToShow);\r
text.setJustification (Justification::centred);\r
\r
- bmc->showAt (targetComponent, text, 2000, true, true);\r
+ bmc->showAt (targetComponent, text, 2000, true, false);\r
}\r
\r
//==============================================================================\r
\r
private:\r
OwnedArray<Component> components;\r
+ ScopedPointer<BubbleMessageComponent> bubbleMessage;\r
\r
// This little function avoids a bit of code-duplication by adding a component to\r
// our list as well as calling addAndMakeVisible on it..\r
showBubbleMessage (button,\r
"This is a demo of the BubbleMessageComponent, which lets you pop up a message pointing "\r
"at a component or somewhere on the screen.\n\n"\r
- "The message bubbles will disappear after a timeout period, or when the mouse is clicked.");\r
+ "The message bubbles will disappear after a timeout period, or when the mouse is clicked.",\r
+ bubbleMessage);\r
}\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ButtonsPage)\r
{\r
public:\r
ToolbarDemoComp()\r
- : depthLabel (String::empty, "Toolbar depth:"),\r
- infoLabel (String::empty, "As well as showing off toolbars, this demo illustrates how to store "\r
- "a set of SVG files in a Zip file, embed that in your application, and read "\r
- "them back in at runtime.\n\nThe icon images here are taken from the open-source "\r
- "Tango icon project."),\r
+ : depthLabel (String(), "Toolbar depth:"),\r
+ infoLabel (String(), "As well as showing off toolbars, this demo illustrates how to store "\r
+ "a set of SVG files in a Zip file, embed that in your application, and read "\r
+ "them back in at runtime.\n\nThe icon images here are taken from the open-source "\r
+ "Tango icon project."),\r
orientationButton ("Vertical/Horizontal"),\r
customiseButton ("Customise...")\r
{\r
"This is a custom tab component\n"\r
"\n"\r
"You can use these to implement things like close-buttons "\r
- "or status displays for your tabs.");\r
+ "or status displays for your tabs.",\r
+ bubbleMessage);\r
}\r
+ private:\r
+ ScopedPointer<BubbleMessageComponent> bubbleMessage;\r
};\r
};\r
\r
{\r
switch (type)\r
{\r
- case xml: codeDocument.replaceAllContent (BinaryData::treedemo_xml); break;\r
- case json: codeDocument.replaceAllContent (BinaryData::juce_module_info); break;\r
- default: codeDocument.replaceAllContent (String::empty); break;\r
+ case xml: codeDocument.replaceAllContent (BinaryData::treedemo_xml); break;\r
+ case json: codeDocument.replaceAllContent (BinaryData::juce_module_info); break;\r
+ default: codeDocument.replaceAllContent (String()); break;\r
}\r
}\r
\r
}\r
\r
case MainAppWindow::useLookAndFeelV1:\r
- result.setInfo ("Use LookAndFeel_V1", String::empty, generalCategory, 0);\r
+ result.setInfo ("Use LookAndFeel_V1", String(), generalCategory, 0);\r
result.addDefaultKeypress ('i', ModifierKeys::commandModifier);\r
result.setTicked (isLookAndFeelSelected<LookAndFeel_V1>());\r
break;\r
\r
case MainAppWindow::useLookAndFeelV2:\r
- result.setInfo ("Use LookAndFeel_V2", String::empty, generalCategory, 0);\r
+ result.setInfo ("Use LookAndFeel_V2", String(), generalCategory, 0);\r
result.addDefaultKeypress ('o', ModifierKeys::commandModifier);\r
result.setTicked (isLookAndFeelSelected<LookAndFeel_V2>());\r
break;\r
\r
case MainAppWindow::useLookAndFeelV3:\r
- result.setInfo ("Use LookAndFeel_V3", String::empty, generalCategory, 0);\r
+ result.setInfo ("Use LookAndFeel_V3", String(), generalCategory, 0);\r
result.addDefaultKeypress ('p', ModifierKeys::commandModifier);\r
result.setTicked (isLookAndFeelSelected<LookAndFeel_V3>());\r
break;\r
\r
case MainAppWindow::toggleRepaintDebugging:\r
- result.setInfo ("Toggle repaint display", String::empty, generalCategory, 0);\r
+ result.setInfo ("Toggle repaint display", String(), generalCategory, 0);\r
result.addDefaultKeypress ('r', ModifierKeys());\r
result.setTicked (juceDemoRepaintDebuggingActive);\r
break;\r
\r
case MainAppWindow::useNativeTitleBar:\r
{\r
- result.setInfo ("Use native window title bar", String::empty, generalCategory, 0);\r
+ result.setInfo ("Use native window title bar", String(), generalCategory, 0);\r
result.addDefaultKeypress ('n', ModifierKeys::commandModifier);\r
bool nativeTitlebar = false;\r
\r
\r
#if ! JUCE_LINUX\r
case MainAppWindow::goToKioskMode:\r
- result.setInfo ("Show full-screen kiosk mode", String::empty, generalCategory, 0);\r
+ result.setInfo ("Show full-screen kiosk mode", String(), generalCategory, 0);\r
result.addDefaultKeypress ('f', ModifierKeys::commandModifier);\r
result.setTicked (Desktop::getInstance().getKioskModeComponent() != 0);\r
break;\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := HelloWorld\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := HelloWorld\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/MainComponent_a6ffb4a5.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking HelloWorld\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning HelloWorld\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping HelloWorld\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MainComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
156FD1B428979C9E5D43DDC2 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
158F40026FBDA4EE9F90CF02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; };
15DBBA2C2CCC22B3488B48F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 161B3C280E9DEB1E0D76114C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
1657734A03E0F21166FAE9E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; };
1667021AB391F5D9B82B186D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
1679AB8658094A527E7A2811 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
4E1058572E25FD04B7D60700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
4E2E741BA1779C70049641D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; };
4F1B04D79D53E699BF00647E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedValue.h"; path = "../../../../modules/juce_data_structures/values/juce_CachedValue.h"; sourceTree = "SOURCE_ROOT"; };
+ 4F828B853191F6F5D925E8C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
4FF67CE1DFACAFF545D8E9AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
5044BE1EA711B629563F70CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; };
505E065430B4C61E119415FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; };
659BEDAE6C17DD4FA6B74971 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
65A7736ECC548A9FD10E4F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; };
65A88D5E8C1F0BE74F05C072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; };
+ 65AA3DF3E027C33FFD7A9157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
65B0A35F0ED651E60556A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
65DBA30ACD7C6156850F1F4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; };
65FC1A9B2D0CDCD2D0180A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
C22BEA19FDBE55F5AAFE9D36,
FF06CDF5B9CF3DE2EA741D54,
699E20F1575B18C3D909940A,
+ 4F828B853191F6F5D925E8C6,
+ 65AA3DF3E027C33FFD7A9157,
+ 161B3C280E9DEB1E0D76114C,
D5054A3D5EBDC47D51FC99F6,
E143BF0720845D8A25BB16E6,
B2C3D53237084A8C79EE8B16,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.roli.jucehelloworld;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.roli.jucehelloworld;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
15569873F24C4157977C8D9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
158F40026FBDA4EE9F90CF02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; };
15DBBA2C2CCC22B3488B48F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 161B3C280E9DEB1E0D76114C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
1657734A03E0F21166FAE9E8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_core/files/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; };
1667021AB391F5D9B82B186D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; };
1679AB8658094A527E7A2811 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
4E1058572E25FD04B7D60700 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; };
4E2E741BA1779C70049641D0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; };
4F1B04D79D53E699BF00647E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedValue.h"; path = "../../../../modules/juce_data_structures/values/juce_CachedValue.h"; sourceTree = "SOURCE_ROOT"; };
+ 4F828B853191F6F5D925E8C6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
4FF67CE1DFACAFF545D8E9AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
5044BE1EA711B629563F70CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; };
505E065430B4C61E119415FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; };
659BEDAE6C17DD4FA6B74971 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
65A7736ECC548A9FD10E4F42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TabbedComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedComponent.h"; sourceTree = "SOURCE_ROOT"; };
65A88D5E8C1F0BE74F05C072 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; };
+ 65AA3DF3E027C33FFD7A9157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
65B0A35F0ED651E60556A0E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
65DBA30ACD7C6156850F1F4E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadPool.h"; path = "../../../../modules/juce_core/threads/juce_ThreadPool.h"; sourceTree = "SOURCE_ROOT"; };
65FC1A9B2D0CDCD2D0180A17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
C22BEA19FDBE55F5AAFE9D36,
FF06CDF5B9CF3DE2EA741D54,
699E20F1575B18C3D909940A,
+ 4F828B853191F6F5D925E8C6,
+ 65AA3DF3E027C33FFD7A9157,
+ 161B3C280E9DEB1E0D76114C,
D5054A3D5EBDC47D51FC99F6,
E143BF0720845D8A25BB16E6,
B2C3D53237084A8C79EE8B16,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "HelloWorld";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "HelloWorld";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="tTAKTK1s" name="HelloWorld" projectType="guiapp" juceFolder="../../../juce"\r
- jucerVersion="4.2.3" version="1.0.0" bundleIdentifier="com.roli.jucehelloworld"\r
+ jucerVersion="4.2.4" version="1.0.0" bundleIdentifier="com.roli.jucehelloworld"\r
companyName="ROLI Ltd." includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := MPETest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := MPETest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking MPETest\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning MPETest\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping MPETest\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
70D59B63181ABCB009B6248D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
7120C1DA3DF4C3FE1E82AD0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; };
715049CBFF51DD0B6C96C4AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 71965C65D88AAC1BCA7C1BCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
71C76E49F379F9B05389C3CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PluginDescription.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_PluginDescription.cpp"; sourceTree = "SOURCE_ROOT"; };
72206F2F4B075CA4D6D95E31 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jquant2.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jquant2.c"; sourceTree = "SOURCE_ROOT"; };
7257482194FCB2E6510D816C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLGraphicsContext.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
89F3F42BBF22E3DF54C63780 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitrate.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.h"; sourceTree = "SOURCE_ROOT"; };
8A00D34ABCC62F277B89FED1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertyPanel.h"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyPanel.h"; sourceTree = "SOURCE_ROOT"; };
8A339D25116C57AC5F0FFBCD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZoneColourPicker.h; path = ../../Source/ZoneColourPicker.h; sourceTree = "SOURCE_ROOT"; };
+ 8A394C912059AA20A66CA3A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
8B2483DC502CFB85054091C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
8B4618262B4BB0A436C51B6C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessor.cpp"; sourceTree = "SOURCE_ROOT"; };
8B64303D4A4877BE3D9ECA23 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; };
97C8203B745D9AFE10D00FDC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
97EE4852EA4CC6213A4DB03D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; };
98249E2CE3DB75CC7E110B95 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; };
+ 9845CA2D31B9A30F25D375FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
988A1AF75EB5E8F25AAD1632 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; };
98A33952B59DC73987AB3F3E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; };
9915F52C7A0F1EB8A2C19B55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; };
D19E7811EB87D4AAB4FBF421 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualiser.h; path = ../../Source/Visualiser.h; sourceTree = "SOURCE_ROOT"; };
D1A827BFF897A4EE4B56A385 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitwise.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c"; sourceTree = "SOURCE_ROOT"; };
D1E4737C60EBD969197A6FA7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; };
+ D223BF17D638547189B03B14 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
D254890C63ADC9C6812BDF93 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; };
D2A8BDAAD64FF5A5442F1C3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiMessage.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiMessage.cpp"; sourceTree = "SOURCE_ROOT"; };
D2B89986858D8B327441661A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.h"; sourceTree = "SOURCE_ROOT"; };
07B0233D286E466E20AC2887,
8D9DDE982773DF3829A5D2EC,
3BC401D5C6F376B3E8A98BE9,
+ 9845CA2D31B9A30F25D375FC,
6E9C575B96F65E6DDD4F62B8,
AC3A1878FFA5E36CC67EF642,
B5EA0961ABF5E581D4DA94C1, ); name = "format_types"; sourceTree = "<group>"; };
B97AF825D9F4F24DF5751FB1,
A6A60C3C36A7788E8226E80D,
E42FD3B1912D5F551179D1DB,
+ D223BF17D638547189B03B14,
+ 8A394C912059AA20A66CA3A5,
+ 71965C65D88AAC1BCA7C1BCD,
29565FA867CDE49665585AC3,
E1EFD62896E03997AD0B77AF,
DB130B7171062DA7585C54F9,
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="IilE7R" name="MPETest" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.MPETest" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="VCQQcn" name="MPETest">\r
<GROUP id="{D43238F0-992F-BC5A-F1AA-31BBBD3D17B0}" name="Source">\r
<FILE id="uRxR7V" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
\r
//==============================================================================\r
MPESetupComponent()\r
- : masterChannelLabel (String::empty, "Master channel:"),\r
- noteChannelsLabel (String::empty, "Nr. of note channels:"),\r
- masterPitchbendRangeLabel (String::empty, "Master pitchbend range (semitones):"),\r
- notePitchbendRangeLabel (String::empty, "Note pitchbend range (semitones):"),\r
+ : masterChannelLabel (String(), "Master channel:"),\r
+ noteChannelsLabel (String(), "Nr. of note channels:"),\r
+ masterPitchbendRangeLabel (String(), "Master pitchbend range (semitones):"),\r
+ notePitchbendRangeLabel (String(), "Note pitchbend range (semitones):"),\r
addZoneButton ("Add this zone"),\r
clearAllZonesButton ("Clear all zones"),\r
- legacyStartChannelLabel (String::empty, "First channel:"),\r
- legacyEndChannelLabel (String::empty, "Last channel:"),\r
- legacyPitchbendRangeLabel (String::empty, "Pitchbend range (semitones):"),\r
+ legacyStartChannelLabel (String(), "First channel:"),\r
+ legacyEndChannelLabel (String(), "Last channel:"),\r
+ legacyPitchbendRangeLabel (String(), "Pitchbend range (semitones):"),\r
legacyModeEnabledToggle ("Enable Legacy Mode"),\r
voiceStealingEnabledToggle ("Enable synth voice stealing"),\r
- numberOfVoicesLabel (String::empty, "Number of synth voices")\r
+ numberOfVoicesLabel (String(), "Number of synth voices")\r
{\r
\r
initialiseComboBoxWithConsecutiveIntegers (masterChannel, masterChannelLabel, 1, 15, defaultMasterChannel);\r
{\r
setLookAndFeel (&lookAndFeel);\r
setSize (880, 720);\r
- audioDeviceManager.initialise (0, 2, 0, true, String::empty, 0);\r
- audioDeviceManager.addMidiInputCallback(String::empty, this);\r
+ audioDeviceManager.initialise (0, 2, 0, true, String(), 0);\r
+ audioDeviceManager.addMidiInputCallback (String(), this);\r
audioDeviceManager.addAudioCallback (this);\r
\r
addAndMakeVisible (audioSetupComp);\r
\r
~MainComponent()\r
{\r
- audioDeviceManager.removeMidiInputCallback (String::empty, this);\r
+ audioDeviceManager.removeMidiInputCallback (String(), this);\r
}\r
\r
//==============================================================================\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := MidiTest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := MidiTest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/MainComponent_a6ffb4a5.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking MidiTest\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning MidiTest\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping MidiTest\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MainComponent_a6ffb4a5.o: ../../Source/MainComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MainComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
06251F5E80644992958A3B61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
06606DC924B7DAE58792628E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
0671CDC6377ED9857C888231 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 0687135A9B0C2FEFF02D023F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
06A3571D29486CC63867E429 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; };
06ABA2CB47AC9A1C9C3DB734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
06B47D41CCEBB771274906E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
15A9B402DFA75E656A407EC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; };
15ADA6032EE53D202CD50575 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OggVorbisAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
15C2EE8305EE8F0E0DA60E7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ 15CD600731386519A6F59ABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
16AB60E71EEED710531B2E18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
16B6619A5A552495ADC91C2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; };
176690C8D73C46A2A44EE5F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; };
9E5488FCBB203D6BFCC9626C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; };
9E9C69519E06E38297AC8941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h"; sourceTree = "SOURCE_ROOT"; };
9EC5AE6597C1E855A915B783 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jpeglib.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h"; sourceTree = "SOURCE_ROOT"; };
+ 9F1A34ABA1498389A7C3F428 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
9FB590DB65B12105CB3331E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
A01EB1FCF6F4D00B58A8D111 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
A0318E5733F0BDA8D1001ACB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_AudioCDBurner.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp"; sourceTree = "SOURCE_ROOT"; };
A4C1AC68972416D5A16E8FDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c"; sourceTree = "SOURCE_ROOT"; };
A4C85C1FBBAEF5CD869B481A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; };
A4E533840C379C5D511BBF40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDirectoryScanner.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h"; sourceTree = "SOURCE_ROOT"; };
+ A517CFD584E52958DA2EC804 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A55D76D2DD846DF369A1B062 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
A5B4B4ACFAFFCA55AA7DF0EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
A612D2AEB82CA6769747CFF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
68CAC12255032C9598B836DF,
004A7D1BC57F2136FF31D767,
3AC1657491C449D35317D152,
+ 15CD600731386519A6F59ABF,
0C7A1C47389DD6A1DE34D831,
8781C749016774125396B268,
B6F1399CBD41DC2FF546CA8C, ); name = "format_types"; sourceTree = "<group>"; };
13DEF72933AAB505B1665123,
0E98BF2DDB2F83B2BDC98BC2,
E37124530592B42579281C17,
+ A517CFD584E52958DA2EC804,
+ 9F1A34ABA1498389A7C3F428,
+ 0687135A9B0C2FEFF02D023F,
B42A973FBBF33F9386B9BB24,
73F2C869E920D4AA0AE4EAB0,
073A9B62DEBF52C846CC0618,
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
06251F5E80644992958A3B61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
06606DC924B7DAE58792628E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; };
0671CDC6377ED9857C888231 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 0687135A9B0C2FEFF02D023F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
06A3571D29486CC63867E429 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; };
06ABA2CB47AC9A1C9C3DB734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_File.cpp"; path = "../../../../modules/juce_core/files/juce_File.cpp"; sourceTree = "SOURCE_ROOT"; };
06B47D41CCEBB771274906E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cpu.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/cpu.h"; sourceTree = "SOURCE_ROOT"; };
15A9B402DFA75E656A407EC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MessageManager.cpp"; path = "../../../../modules/juce_events/messages/juce_MessageManager.cpp"; sourceTree = "SOURCE_ROOT"; };
15ADA6032EE53D202CD50575 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OggVorbisAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
15C2EE8305EE8F0E0DA60E7E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ 15CD600731386519A6F59ABF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
16AB60E71EEED710531B2E18 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyMappingEditorComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h"; sourceTree = "SOURCE_ROOT"; };
16B6619A5A552495ADC91C2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioTransportSource.cpp"; path = "../../../../modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp"; sourceTree = "SOURCE_ROOT"; };
176690C8D73C46A2A44EE5F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PropertySet.h"; path = "../../../../modules/juce_core/containers/juce_PropertySet.h"; sourceTree = "SOURCE_ROOT"; };
9E5488FCBB203D6BFCC9626C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; };
9E9C69519E06E38297AC8941 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h"; sourceTree = "SOURCE_ROOT"; };
9EC5AE6597C1E855A915B783 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jpeglib.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jpeglib.h"; sourceTree = "SOURCE_ROOT"; };
+ 9F1A34ABA1498389A7C3F428 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
9FB590DB65B12105CB3331E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_android_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
9FBD6E11D5668E77AF50973E = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = MidiTest/Images.xcassets; sourceTree = "SOURCE_ROOT"; };
A01EB1FCF6F4D00B58A8D111 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
A4C1AC68972416D5A16E8FDD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c"; sourceTree = "SOURCE_ROOT"; };
A4C85C1FBBAEF5CD869B481A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DragAndDropContainer.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp"; sourceTree = "SOURCE_ROOT"; };
A4E533840C379C5D511BBF40 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginDirectoryScanner.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h"; sourceTree = "SOURCE_ROOT"; };
+ A517CFD584E52958DA2EC804 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A55D76D2DD846DF369A1B062 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CompilerSupport.h"; path = "../../../../modules/juce_core/system/juce_CompilerSupport.h"; sourceTree = "SOURCE_ROOT"; };
A5B4B4ACFAFFCA55AA7DF0EE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
A612D2AEB82CA6769747CFF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentDragger.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp"; sourceTree = "SOURCE_ROOT"; };
68CAC12255032C9598B836DF,
004A7D1BC57F2136FF31D767,
3AC1657491C449D35317D152,
+ 15CD600731386519A6F59ABF,
0C7A1C47389DD6A1DE34D831,
8781C749016774125396B268,
B6F1399CBD41DC2FF546CA8C, ); name = "format_types"; sourceTree = "<group>"; };
13DEF72933AAB505B1665123,
0E98BF2DDB2F83B2BDC98BC2,
E37124530592B42579281C17,
+ A517CFD584E52958DA2EC804,
+ 9F1A34ABA1498389A7C3F428,
+ 0687135A9B0C2FEFF02D023F,
B42A973FBBF33F9386B9BB24,
73F2C869E920D4AA0AE4EAB0,
073A9B62DEBF52C846CC0618,
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="wHE0ay" name="MidiTest" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.MidiTest" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="s3xxCh" name="MidiTest">\r
<GROUP id="{7D29F5BC-1B05-AE8F-9202-5CF152AB1103}" name="Source">\r
<FILE id="kpmJ3T" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
midiMonitor.setScrollbarsShown (true);\r
midiMonitor.setCaretVisible (false);\r
midiMonitor.setPopupMenuEnabled (false);\r
- midiMonitor.setText (String::empty);\r
+ midiMonitor.setText (String());\r
addAndMakeVisible (midiMonitor);\r
\r
if (! BluetoothMidiDevicePairingDialogue::isAvailable())\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := JUCE\ Network\ Graphics\ Demo\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := JUCE\ Network\ Graphics\ Demo\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/BinaryData_ce4232d4.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_osc_be4cee16.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/BinaryData_ce4232d4.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_osc_be4cee16.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking JUCE Network Graphics Demo\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning JUCE Network Graphics Demo\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping JUCE Network Graphics Demo\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling BinaryData.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_osc.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
51F0F2EB22A60569E24FB86E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; };
51FFA102D25322925C454ACD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; };
52058B3A331BFA856932EEED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; };
+ 53105889A1FAACE8908856FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
53AB900649E4156D953DB1CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; };
53F664A2A3FE1983E183A431 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; };
54358D8A9A8DE6AF4F781E8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; };
757D712721E9C95EDB104FF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jerror.h"; sourceTree = "SOURCE_ROOT"; };
758A85BA2A15681252AAC852 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
75CBB4C7E9CBA8B36FA40FB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; };
+ 75ECF0F3EAC1B3152F2B3D91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
75F0E24A0BFFB573DA77B602 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../JuceLibraryCode/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; };
7665A2E5A2E41373D6F4C734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stream_decoder.h"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h"; sourceTree = "SOURCE_ROOT"; };
766D9EC18EA5CBA993EA7B34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c"; sourceTree = "SOURCE_ROOT"; };
A198E2290B15C62F68D21050 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; };
A1AF1E8ADB16AE21785390F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
A1F1F469B33048DD0609E02E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; };
+ A21023D075AB6F6C0044338D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
A210326040D3F2A40B2B9D15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; };
A23791E205B22F21521DF9F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; };
A239DEE243F0D1FB1158A8B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c"; sourceTree = "SOURCE_ROOT"; };
FF43622B9AAF3751B65DD81B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
FF7509FDC5B23104C7AF1665 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; };
FF796B6850F1EE2F18668D06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
+ FF8735B28B4092D4526B4C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
FFE74EF868B7D7FAA24DE742 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; };
5A58AF0A052C539F0E342A88 = {isa = PBXGroup; children = (
4FF648D72D6F1A78956CDA1B,
7A41A9C37A8BA7EFB6D1F518,
264B51063F7AA584D23B426E,
545C5A5F29523968A387FD91,
+ 53105889A1FAACE8908856FD,
CE06CB9CD28DE31FA1528DE5,
F906FBF064A716C5EADF5708,
5B8CE8EC0CEDF800AD5B71E1, ); name = "format_types"; sourceTree = "<group>"; };
A7198BFD9B0CC598BD50B587,
E368DF5C372BB7CCE82DC763,
58B4452DE10C4ABF8D8DC7EB,
+ FF8735B28B4092D4526B4C7A,
+ A21023D075AB6F6C0044338D,
+ 75ECF0F3EAC1B3152F2B3D91,
2ABA2A324D752641AD2EA84D,
42203A96B0F67E68EDB0939E,
864DAFF59D56AC67F7BE6F77,
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
51F0F2EB22A60569E24FB86E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; };
51FFA102D25322925C454ACD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; };
52058B3A331BFA856932EEED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Range.h"; path = "../../../../modules/juce_core/maths/juce_Range.h"; sourceTree = "SOURCE_ROOT"; };
+ 53105889A1FAACE8908856FD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
53AB900649E4156D953DB1CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; };
53F664A2A3FE1983E183A431 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; };
54358D8A9A8DE6AF4F781E8B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; };
757D712721E9C95EDB104FF8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jerror.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jerror.h"; sourceTree = "SOURCE_ROOT"; };
758A85BA2A15681252AAC852 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeLayout.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
75CBB4C7E9CBA8B36FA40FB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPath.h"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.h"; sourceTree = "SOURCE_ROOT"; };
+ 75ECF0F3EAC1B3152F2B3D91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
75F0E24A0BFFB573DA77B602 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../JuceLibraryCode/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; };
7665A2E5A2E41373D6F4C734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stream_decoder.h"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/protected/stream_decoder.h"; sourceTree = "SOURCE_ROOT"; };
766D9EC18EA5CBA993EA7B34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdapimin.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdapimin.c"; sourceTree = "SOURCE_ROOT"; };
A198E2290B15C62F68D21050 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsSoftwareRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h"; sourceTree = "SOURCE_ROOT"; };
A1AF1E8ADB16AE21785390F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_GraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_GraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; };
A1F1F469B33048DD0609E02E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; };
+ A21023D075AB6F6C0044338D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
A210326040D3F2A40B2B9D15 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PixelFormats.h"; path = "../../../../modules/juce_graphics/colour/juce_PixelFormats.h"; sourceTree = "SOURCE_ROOT"; };
A23791E205B22F21521DF9F4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; };
A239DEE243F0D1FB1158A8B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jchuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jchuff.c"; sourceTree = "SOURCE_ROOT"; };
FF43622B9AAF3751B65DD81B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
FF7509FDC5B23104C7AF1665 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Atomic.h"; path = "../../../../modules/juce_core/memory/juce_Atomic.h"; sourceTree = "SOURCE_ROOT"; };
FF796B6850F1EE2F18668D06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedPointer.h"; path = "../../../../modules/juce_core/memory/juce_ScopedPointer.h"; sourceTree = "SOURCE_ROOT"; };
+ FF8735B28B4092D4526B4C7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
FFE74EF868B7D7FAA24DE742 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; };
5A58AF0A052C539F0E342A88 = {isa = PBXGroup; children = (
4FF648D72D6F1A78956CDA1B,
7A41A9C37A8BA7EFB6D1F518,
264B51063F7AA584D23B426E,
545C5A5F29523968A387FD91,
+ 53105889A1FAACE8908856FD,
CE06CB9CD28DE31FA1528DE5,
F906FBF064A716C5EADF5708,
5B8CE8EC0CEDF800AD5B71E1, ); name = "format_types"; sourceTree = "<group>"; };
A7198BFD9B0CC598BD50B587,
E368DF5C372BB7CCE82DC763,
58B4452DE10C4ABF8D8DC7EB,
+ FF8735B28B4092D4526B4C7A,
+ A21023D075AB6F6C0044338D,
+ 75ECF0F3EAC1B3152F2B3D91,
2ABA2A324D752641AD2EA84D,
42203A96B0F67E68EDB0939E,
864DAFF59D56AC67F7BE6F77,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "JUCE Network Graphics Demo";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "JUCE Network Graphics Demo";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="gWI5Ir" name="JUCE Network Graphics Demo" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.NetworkGraphicsDemo"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.4">\r
<MAINGROUP id="OT9rJ2" name="JUCE Network Graphics Demo">\r
<GROUP id="{48D54E6E-37F4-B20A-E038-C63E4EDFD4D9}" name="Source">\r
<FILE id="BfclEZ" name="Demos.h" compile="0" resource="0" file="Source/Demos.h"/>\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := OSCMonitor\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := OSCMonitor\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_osc_be4cee16.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_osc_be4cee16.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking OSCMonitor\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning OSCMonitor\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping OSCMonitor\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_osc.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
05BECDDA18EEDCC6026046A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "floor_all.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/floor_all.h"; sourceTree = "SOURCE_ROOT"; };
0633D0C7EFAF3C2F1AAED8B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = "../../../../modules/juce_core/zip/zlib/crc32.c"; sourceTree = "SOURCE_ROOT"; };
0635718F78505B87C8C45C5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 0743372F26489CD53C1BDB91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
077D14BDF440711227A88652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = vorbisfile.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/vorbisfile.h"; sourceTree = "SOURCE_ROOT"; };
07D9756CD40A2257CE645AFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OutputStream.h"; path = "../../../../modules/juce_core/streams/juce_OutputStream.h"; sourceTree = "SOURCE_ROOT"; };
07E22F69D1BD5DBC61EB6B57 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; };
291605D143708CDD8FB77C6B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fixed.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h"; sourceTree = "SOURCE_ROOT"; };
29255870A697551C8FA98D7A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Base64.cpp"; path = "../../../../modules/juce_core/text/juce_Base64.cpp"; sourceTree = "SOURCE_ROOT"; };
29589E6D348361659DBFB01E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = adler32.c; path = "../../../../modules/juce_core/zip/zlib/adler32.c"; sourceTree = "SOURCE_ROOT"; };
+ 298C6806412F4881663FBFE1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
29DBE389E1B355F875D78678 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandManager.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp"; sourceTree = "SOURCE_ROOT"; };
2AA7FF1FB0D464A4E7B93360 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_basics.h"; path = "../../../../modules/juce_gui_basics/juce_gui_basics.h"; sourceTree = "SOURCE_ROOT"; };
2AE92F43F180A63B166DE38D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SubregionStream.cpp"; path = "../../../../modules/juce_core/streams/juce_SubregionStream.cpp"; sourceTree = "SOURCE_ROOT"; };
63CD373EBD8C663E48EAB6B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Javascript.cpp"; path = "../../../../modules/juce_core/javascript/juce_Javascript.cpp"; sourceTree = "SOURCE_ROOT"; };
63CF54631460F1BF4EA5A49A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcmaster.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcmaster.c"; sourceTree = "SOURCE_ROOT"; };
63D2D0BAF12BD5F0A74CCCC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedWriteLock.h"; sourceTree = "SOURCE_ROOT"; };
+ 64145B2DC92763E716E27FD0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
642F05C6BA421FDC6725C57F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Fonts.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_Fonts.mm"; sourceTree = "SOURCE_ROOT"; };
642F22B0ADEBA8CC1654EE2C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedValueSetter.h"; path = "../../../../modules/juce_core/containers/juce_ScopedValueSetter.h"; sourceTree = "SOURCE_ROOT"; };
64487A3372F2CFE88175C49F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
7E75ED738B0C5B23921807B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; };
7EB94A8A33CC592A2A77A907 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TopLevelWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
7F06AF9DADA9FA01C5BE542D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdsample.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdsample.c"; sourceTree = "SOURCE_ROOT"; };
+ 7F3A7557CFF37C91CAC4E71C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
7F527095A51540B79804CD7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; };
7F6D98AC02F8582F8923A6EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_QuickTimeMovieComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_QuickTimeMovieComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
7F97E4F4E4BF1A3D66A3B6AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TreeView.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.h"; sourceTree = "SOURCE_ROOT"; };
6D88A3624F51E4B8C4386378,
C629913291BE1608B58ABF38,
88964E03F3F86CDCA280D3CC,
+ 0743372F26489CD53C1BDB91,
442D9B72ECE154D5D4E7C72F,
1010FD77F32B1F7F525FC184,
2F13071B3F288C3AA6842EF2, ); name = "format_types"; sourceTree = "<group>"; };
899BA221B227C1BD5378A636,
B694F3B120FE3A72D2BF95DA,
17F88B6945BC396BBE2196A7,
+ 298C6806412F4881663FBFE1,
+ 64145B2DC92763E716E27FD0,
+ 7F3A7557CFF37C91CAC4E71C,
D835E304C64C3C8EBC3A3115,
9444E056A9A5E4FD10664BA2,
DD424F8EA63B33E90F19A137,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.rawmaterialsoftware.OSCMonitor;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.rawmaterialsoftware.OSCMonitor;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="IhmIkj" name="OSCMonitor" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.rawmaterialsoftware.OSCMonitor" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="N9NMMk" name="OSCMonitor">\r
<GROUP id="{2B92546C-6B49-72D9-ACD0-0F2FCE9AD0D5}" name="Source">\r
<FILE id="fqVB21" name="OSCLogListBox.h" compile="0" resource="0" file="Source/OSCLogListBox.h"/>\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := OSCReceiver\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := OSCReceiver\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_osc_be4cee16.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_osc_be4cee16.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking OSCReceiver\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning OSCReceiver\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping OSCReceiver\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_osc.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
933071AE01A499C371BE3B91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; };
949383C054E70759782F179A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c"; sourceTree = "SOURCE_ROOT"; };
94A75685343FBB282A4844C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RuntimePermissions.h"; path = "../../../../modules/juce_core/misc/juce_RuntimePermissions.h"; sourceTree = "SOURCE_ROOT"; };
+ 959B30B8082436C8168381DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
96054061FBB98C3E767D4844 = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
968B458915CBFDAC547707B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
96E572E605BD2921A0C56843 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; };
9F442098CC5C1F10406A0470 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
9F6452874CE54BE04A310FEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; };
9F73A3F60DAA10EFFBF931F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 9F840DC674D346195ADFB6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A022F5153117EDD144C535EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; };
A0F56E204C579B3092C93B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
A10BDD742143769FB54E7B04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; };
F7FF860DC3ACED469A2BFEC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; };
F8353823A3BAC4B973DCCD1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
F882169438543868B110E088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Whirlpool.h"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h"; sourceTree = "SOURCE_ROOT"; };
+ F8C43D9DF701B2430990181D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
F91E4EDC09685B5D28610183 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; };
F951A9EACDB1F9CAAF40F669 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; };
F9DDF5ECEA898480B8C0682B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; };
89C20801FE087AA45091F8C8,
733CB62BD606962B480FA06C,
48F197EF4B1D7C387C4D4143,
+ 9F840DC674D346195ADFB6B8,
+ 959B30B8082436C8168381DD,
+ F8C43D9DF701B2430990181D,
EEE5998A58C5A2F3F16446EF,
78244B47E9D27361DD91FF4E,
BADB77F2A3EEB2CC3D92A6FE,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OSCReceiver;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OSCReceiver;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
933071AE01A499C371BE3B91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; };
949383C054E70759782F179A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c"; sourceTree = "SOURCE_ROOT"; };
94A75685343FBB282A4844C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RuntimePermissions.h"; path = "../../../../modules/juce_core/misc/juce_RuntimePermissions.h"; sourceTree = "SOURCE_ROOT"; };
+ 959B30B8082436C8168381DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
968B458915CBFDAC547707B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsContext.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h"; sourceTree = "SOURCE_ROOT"; };
96E572E605BD2921A0C56843 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileInputStream.h"; path = "../../../../modules/juce_core/files/juce_FileInputStream.h"; sourceTree = "SOURCE_ROOT"; };
97920C44ECF8B71BB55E10C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInputSource.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.h"; sourceTree = "SOURCE_ROOT"; };
9F442098CC5C1F10406A0470 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
9F6452874CE54BE04A310FEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; };
9F73A3F60DAA10EFFBF931F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 9F840DC674D346195ADFB6B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A022F5153117EDD144C535EB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterprocessConnectionServer.h"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.h"; sourceTree = "SOURCE_ROOT"; };
A0F56E204C579B3092C93B94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; };
A10BDD742143769FB54E7B04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; };
F7FF860DC3ACED469A2BFEC3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF8.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF8.h"; sourceTree = "SOURCE_ROOT"; };
F8353823A3BAC4B973DCCD1C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GZIPCompressorOutputStream.cpp"; path = "../../../../modules/juce_core/zip/juce_GZIPCompressorOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
F882169438543868B110E088 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Whirlpool.h"; path = "../../../../modules/juce_cryptography/hashing/juce_Whirlpool.h"; sourceTree = "SOURCE_ROOT"; };
+ F8C43D9DF701B2430990181D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
F91E4EDC09685B5D28610183 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; };
F951A9EACDB1F9CAAF40F669 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MACAddress.h"; path = "../../../../modules/juce_core/network/juce_MACAddress.h"; sourceTree = "SOURCE_ROOT"; };
F9DDF5ECEA898480B8C0682B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; };
89C20801FE087AA45091F8C8,
733CB62BD606962B480FA06C,
48F197EF4B1D7C387C4D4143,
+ 9F840DC674D346195ADFB6B8,
+ 959B30B8082436C8168381DD,
+ F8C43D9DF701B2430990181D,
EEE5998A58C5A2F3F16446EF,
78244B47E9D27361DD91FF4E,
BADB77F2A3EEB2CC3D92A6FE,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "OSCReceiver";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "OSCReceiver";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="pdocPt" name="OSCReceiver" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OSCReceiver" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="Y6Q0O9" name="OSCReceiver">\r
<GROUP id="{9F303ECD-83DE-CA91-97B4-C083DA897F49}" name="Source">\r
<FILE id="HHuoMc" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := OSCSender\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := OSCSender\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_osc_be4cee16.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_osc_be4cee16.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking OSCSender\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning OSCSender\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping OSCSender\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_osc.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
1DDFBB0F225E4F95F635052C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; };
1E02908C9637CF4C22BB58DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
1EED7017C33745D0E23EFED7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; };
+ 1F16C9C8F4AD25DEF565EA39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
1F38F916D630350DD8EC2FA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdct.h"; sourceTree = "SOURCE_ROOT"; };
1F983F682C7C39739FF66DFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; };
204825E69740E61C3BB37472 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; };
B3E0874D711C4A66976E6C4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/MainComponent.h; sourceTree = "SOURCE_ROOT"; };
B437041269FE1ABCACE8FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
B43D3771C0B8A99592E7F36B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B44295802853FE0B423E7743 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
B48FEF193584C4735B8DAEA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
B4C9EE22A48A894A442FDEF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
B57A5299F1CC56B74310EEDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c"; sourceTree = "SOURCE_ROOT"; };
D7D15CBB82F1C93719CCA56B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
D800E473B1A6BF368C967B8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
D85E5DDBCC12253BEE6B368D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; };
+ D8A3E2079688A7A7327E819A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
D8E4E84B18C9763EA6691DA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; };
D9453DCB804821349686056F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
D9E235F13969D41DE2334965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; };
BF32CCC7DACE9BFD99273809,
E74939618FF51AB431812853,
6467B818C4A8564579EB95A5,
+ D8A3E2079688A7A7327E819A,
+ 1F16C9C8F4AD25DEF565EA39,
+ B44295802853FE0B423E7743,
54D6721139580A36CE2D0A5E,
C87AB2E5D49E6030C4A3AC69,
F7123F50EA511941DE626E79,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OSCSender;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OSCSender;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
1DDFBB0F225E4F95F635052C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentPeer.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp"; sourceTree = "SOURCE_ROOT"; };
1E02908C9637CF4C22BB58DE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; };
1EED7017C33745D0E23EFED7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; };
+ 1F16C9C8F4AD25DEF565EA39 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
1F38F916D630350DD8EC2FA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jdct.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdct.h"; sourceTree = "SOURCE_ROOT"; };
1F983F682C7C39739FF66DFD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; };
204825E69740E61C3BB37472 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutManager.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp"; sourceTree = "SOURCE_ROOT"; };
B3E0874D711C4A66976E6C4C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MainComponent.h; path = ../../Source/MainComponent.h; sourceTree = "SOURCE_ROOT"; };
B437041269FE1ABCACE8FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; };
B43D3771C0B8A99592E7F36B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B44295802853FE0B423E7743 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
B48FEF193584C4735B8DAEA5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
B4C9EE22A48A894A442FDEF5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
B57A5299F1CC56B74310EEDE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c"; sourceTree = "SOURCE_ROOT"; };
D7D15CBB82F1C93719CCA56B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
D800E473B1A6BF368C967B8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
D85E5DDBCC12253BEE6B368D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; };
+ D8A3E2079688A7A7327E819A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
D8E4E84B18C9763EA6691DA1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; };
D9453DCB804821349686056F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
D9E235F13969D41DE2334965 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; };
BF32CCC7DACE9BFD99273809,
E74939618FF51AB431812853,
6467B818C4A8564579EB95A5,
+ D8A3E2079688A7A7327E819A,
+ 1F16C9C8F4AD25DEF565EA39,
+ B44295802853FE0B423E7743,
54D6721139580A36CE2D0A5E,
C87AB2E5D49E6030C4A3AC69,
F7123F50EA511941DE626E79,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "OSCSender";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "OSCSender";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="rysVAr" name="OSCSender" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OSCSender" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="knnZZJ" name="OSCSender">\r
<GROUP id="{F2A0007A-4D24-4DD6-DEC8-6428F36CE45D}" name="Source">\r
<FILE id="ORaBHU" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/>\r
79F1A1735711D07C259AEF15 = {isa = PBXBuildFile; fileRef = 5A920C68F8B3292144B1BC95; };
003AAB5BFC9435FA4823BA2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; };
00A864993620E35F6951A372 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
+ 012B5333962F8A00DCDC8EBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
015766ED6CD9D55279FC884A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; };
0164AA0AC217A99CDA13191B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "stream_encoder.c"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c"; sourceTree = "SOURCE_ROOT"; };
019CD85E295A7290855D0C24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
1BC364DFD3A975A0CBA0AC61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; };
1C02F9D8BEBC13937D8D9BAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
1C196D0BC6B08623601273FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 1C348581C78AB36C14C3537F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
1C5E7A9B230FE6B962802C53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitwriter.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h"; sourceTree = "SOURCE_ROOT"; };
1CC05551F14FFC0161D8E12A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; };
1CEAFFE79A9E1A1E32C2BFD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
6B5BE388D982E05CD2C7BE10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; };
6B5D185CB49DC6746B357183 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDataConverters.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h"; sourceTree = "SOURCE_ROOT"; };
6BC5C181AD876196213378C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; };
+ 6C32663096AA8DFE514E6F70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
6C3B851F65AB406E5B6CAF7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; };
6C4A5B3781D999AFA15F1016 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
6C5F536D935CF788C07424CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
A06B0489395A029A4F04EBF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c"; sourceTree = "SOURCE_ROOT"; };
A07D0C5C60BE446FD41ADE51 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceManager.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h"; sourceTree = "SOURCE_ROOT"; };
A08204B26124FCFF92383BF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jutils.c"; sourceTree = "SOURCE_ROOT"; };
+ A11F69B55BAC8E430EEAC691 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A1593C95C327810AC73A73F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; };
A19D3050F95BFD17129EA013 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; };
A1C21D6CF6F456E34A0E7FBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; };
B7612EA3B34C6AC48079A447,
58C9B8F93CF63036CA33A6C3,
AD0DBF0531130EAD4DF2A8FA,
+ 6C32663096AA8DFE514E6F70,
8E0D42B79853ED7FC60F931B,
D8F75466ADD0287144087C5B,
794DEE7E5CC51940507F676F, ); name = "format_types"; sourceTree = "<group>"; };
8D330180BEC5572287AB158A,
39CD252C183BBF175E1C0602,
33D5910744D9482DBA614144,
+ A11F69B55BAC8E430EEAC691,
+ 012B5333962F8A00DCDC8EBE,
+ 1C348581C78AB36C14C3537F,
7D15374142A01E2760AC4818,
D17F209C6915C948F90F1349,
CBF3ED31F58A0874E0E9A64B,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OpenGLAppExample;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.OpenGLAppExample;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
79F1A1735711D07C259AEF15 = {isa = PBXBuildFile; fileRef = 5A920C68F8B3292144B1BC95; };
003AAB5BFC9435FA4823BA2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; };
00A864993620E35F6951A372 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
+ 012B5333962F8A00DCDC8EBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
015766ED6CD9D55279FC884A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; };
0164AA0AC217A99CDA13191B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "stream_encoder.c"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_encoder.c"; sourceTree = "SOURCE_ROOT"; };
019CD85E295A7290855D0C24 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DialogWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.h"; sourceTree = "SOURCE_ROOT"; };
1BC364DFD3A975A0CBA0AC61 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AnimatedPositionBehaviours.h"; path = "../../../../modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h"; sourceTree = "SOURCE_ROOT"; };
1C02F9D8BEBC13937D8D9BAA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
1C196D0BC6B08623601273FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 1C348581C78AB36C14C3537F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
1C5E7A9B230FE6B962802C53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitwriter.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitwriter.h"; sourceTree = "SOURCE_ROOT"; };
1CC05551F14FFC0161D8E12A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; };
1CEAFFE79A9E1A1E32C2BFD6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XMLCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
6B5BE388D982E05CD2C7BE10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; };
6B5D185CB49DC6746B357183 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDataConverters.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioDataConverters.h"; sourceTree = "SOURCE_ROOT"; };
6BC5C181AD876196213378C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageCache.h"; path = "../../../../modules/juce_graphics/images/juce_ImageCache.h"; sourceTree = "SOURCE_ROOT"; };
+ 6C32663096AA8DFE514E6F70 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
6C3B851F65AB406E5B6CAF7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; };
6C4A5B3781D999AFA15F1016 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Viewport.h"; path = "../../../../modules/juce_gui_basics/layout/juce_Viewport.h"; sourceTree = "SOURCE_ROOT"; };
6C5F536D935CF788C07424CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
A06B0489395A029A4F04EBF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngwtran.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngwtran.c"; sourceTree = "SOURCE_ROOT"; };
A07D0C5C60BE446FD41ADE51 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioDeviceManager.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h"; sourceTree = "SOURCE_ROOT"; };
A08204B26124FCFF92383BF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jutils.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jutils.c"; sourceTree = "SOURCE_ROOT"; };
+ A11F69B55BAC8E430EEAC691 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
A1593C95C327810AC73A73F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPENote.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPENote.cpp"; sourceTree = "SOURCE_ROOT"; };
A19D3050F95BFD17129EA013 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AffineTransform.h"; path = "../../../../modules/juce_graphics/geometry/juce_AffineTransform.h"; sourceTree = "SOURCE_ROOT"; };
A1C21D6CF6F456E34A0E7FBE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; };
B7612EA3B34C6AC48079A447,
58C9B8F93CF63036CA33A6C3,
AD0DBF0531130EAD4DF2A8FA,
+ 6C32663096AA8DFE514E6F70,
8E0D42B79853ED7FC60F931B,
D8F75466ADD0287144087C5B,
794DEE7E5CC51940507F676F, ); name = "format_types"; sourceTree = "<group>"; };
8D330180BEC5572287AB158A,
39CD252C183BBF175E1C0602,
33D5910744D9482DBA614144,
+ A11F69B55BAC8E430EEAC691,
+ 012B5333962F8A00DCDC8EBE,
+ 1C348581C78AB36C14C3537F,
7D15374142A01E2760AC4818,
D17F209C6915C948F90F1349,
CBF3ED31F58A0874E0E9A64B,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "OpenGLAppExample";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "OpenGLAppExample";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="c3KrlE" name="OpenGLAppExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.OpenGLAppExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="amjEXL" name="OpenGLAppExample">\r
<GROUP id="{28FE2D12-A88D-07E2-72CF-CD04014CF225}" name="Source">\r
<GROUP id="{666960E2-D311-806A-1FE7-A27057939840}" name="Resources">\r
\r
static String::CharPointerType findEndOfFaceToken (String::CharPointerType t) noexcept\r
{\r
- return CharacterFunctions::findEndOfToken (t, CharPointer_ASCII ("/ \t"), String::empty.getCharPointer());\r
+ return CharacterFunctions::findEndOfToken (t, CharPointer_ASCII ("/ \t"), String().getCharPointer());\r
}\r
};\r
\r
091FA27535E993FACA7E0FF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; };
099CB39CA29E1ED5F689C082 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_22.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h"; sourceTree = "SOURCE_ROOT"; };
09A2BC7290878D59D9991ED3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 09CF8D79F80BB15318B260CC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
09D113F1ACE38E7FF87EC471 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../JuceLibraryCode/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
09E1EB16E6EFFDCDD2B09892 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryBlock.h"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.h"; sourceTree = "SOURCE_ROOT"; };
0AAE29186ED2AD6A0DACA056 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChangeBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
0D603AD75714B7CC474A45D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
0D9BD2274AA6F9081E60A196 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedPipe.cpp"; path = "../../../../modules/juce_core/network/juce_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; };
0DA09911CF116E73799CA0B3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativePoint.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 0DBF97D9FD71F7BDCAB7F7A1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
0DD021F0FADE79B577913355 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReferenceCountedObject.h"; path = "../../../../modules/juce_core/memory/juce_ReferenceCountedObject.h"; sourceTree = "SOURCE_ROOT"; };
0E27E32E44CDE4F786209EA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReverbAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_ReverbAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
0E2F963D8586DCC6CC882F04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; };
6547E998448E6C4F13D52FA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c"; sourceTree = "SOURCE_ROOT"; };
65523E6A2DCC99A71F894157 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "residue_44.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/residue_44.h"; sourceTree = "SOURCE_ROOT"; };
657610365F9F7708FFF7E906 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Misc.cpp"; path = "../../../../modules/juce_core/native/juce_android_Misc.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 65A4C94B572F41F4D4CFE064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
65BB11618A9F97EE299B1864 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ordinals.h; path = "../../../../modules/juce_audio_formats/codecs/flac/ordinals.h"; sourceTree = "SOURCE_ROOT"; };
65BBEFC85BFC6DAC542BFBF1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapistd.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jcapistd.c"; sourceTree = "SOURCE_ROOT"; };
65F3CDA0D0479E6FC42013FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedReadLock.h"; path = "../../../../modules/juce_core/threads/juce_ScopedReadLock.h"; sourceTree = "SOURCE_ROOT"; };
860AB680399C2884FE9B0D19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringPairArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringPairArray.cpp"; sourceTree = "SOURCE_ROOT"; };
8651D69ED86CAC13B4966053 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationProperties.h"; path = "../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.h"; sourceTree = "SOURCE_ROOT"; };
87231784C36FC88B589C2C92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TabbedButtonBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 87637051012A0728D4806B6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
87EF76FE467F0E1EF10B3E8C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_8.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_8.h"; sourceTree = "SOURCE_ROOT"; };
880FD85A41F02F3748CFCAE3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Rectangle.h"; path = "../../../../modules/juce_graphics/geometry/juce_Rectangle.h"; sourceTree = "SOURCE_ROOT"; };
882CC37B469E0EEF75975B46 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; };
54420A7FCB25BAEEEB0FEEA0,
B3CD2EAF0DAB67CFA880BF8A,
826E3E424F0A7BDF5FECE7F0,
+ 09CF8D79F80BB15318B260CC,
237404D7EAAD696962C85B05,
92E9E50DCD5CC8113296C700,
6B5E4C82FF829907B7AAD9E3, ); name = "format_types"; sourceTree = "<group>"; };
DF743B3F7C5D4E39357B2ABD,
A7CFEAB5213E21D1E53E98E2,
EBB0CCB80A0162539892103D,
+ 87637051012A0728D4806B6F,
+ 0DBF97D9FD71F7BDCAB7F7A1,
+ 65A4C94B572F41F4D4CFE064,
CA7A3A2C10738D0ED143E698,
3BEDA5F6F4D05A0A48EB40BC,
9F51A8C806F771FD62CA1D19,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.timurdoumler.PluckedStringsDemo;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.timurdoumler.PluckedStringsDemo;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="jKHEJM" name="PluckedStringsDemo" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.timurdoumler.PluckedStringsDemo" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="IWdVf7" name="PluckedStringsDemo">\r
<GROUP id="{8800CD50-6741-8B75-0305-FAF13427EF5D}" name="Source">\r
<FILE id="Z7hWe1" name="StringSynthesiser.h" compile="0" resource="0"\r
pluginIsMidiEffectPlugin="1" pluginSilenceInIsSilenceOut="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="ArpeggiatorAU"\r
pluginRTASCategory="" aaxIdentifier="com.ROLI.Arpeggiator" pluginAAXCategory="AAX_EPlugInCategory_Effect"\r
- jucerVersion="4.2.3" companyName="ROLI Ltd." companyWebsite="www.juce.com"\r
+ jucerVersion="4.2.4" companyName="ROLI Ltd." companyWebsite="www.juce.com"\r
companyEmail="info@juce.com" buildAUv3="0">\r
<MAINGROUP id="l0H2am" name="Arpeggiator">\r
<GROUP id="{E91162B3-479D-3630-4B5F-0E76EE995FB8}" name="Source">\r
009F880F1C927129D79457CD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
00B396B0FE706AA23B729E8F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationProperties.cpp"; path = "../../../../../modules/juce_data_structures/app_properties/juce_ApplicationProperties.cpp"; sourceTree = "SOURCE_ROOT"; };
010F7CC679F518EB97C86552 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ScrollBar.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_ScrollBar.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 01A03043BD956D0A30DC5B41 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
01A591455BDD1113C23E09F6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RecentlyOpenedFilesList.cpp"; path = "../../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp"; sourceTree = "SOURCE_ROOT"; };
01ED8F522ABA76BF0E0D9249 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; };
02197356D3685DBECD8CA4A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CADebugPrintf.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CADebugPrintf.h"; sourceTree = "SOURCE_ROOT"; };
2CFC098BABAF6F3A9DFA615A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAVectorUnit.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnit.cpp"; sourceTree = "SOURCE_ROOT"; };
2DB885170C23EF6315B01E07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../../../../modules/juce_graphics/native/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
2DBEA9C65CE70C0A16C832F5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Primes.cpp"; path = "../../../../../modules/juce_cryptography/encryption/juce_Primes.cpp"; sourceTree = "SOURCE_ROOT"; };
- 2DD523352F6EE4FCFCE9A6F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; };
2DE0D81D1002AACD733312D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AUScopeElement.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUScopeElement.cpp"; sourceTree = "SOURCE_ROOT"; };
2DF4931504468BD9E20AE3E6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAMutex.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAMutex.cpp"; sourceTree = "SOURCE_ROOT"; };
2E05B3795F27137B74532DCF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; };
2E886B4634424C6F38673E3C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcapimin.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jcapimin.c"; sourceTree = "SOURCE_ROOT"; };
2E94A5BF0507304C7FBE7DAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../JuceLibraryCode/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; };
2EC53AB4DD0E835D9B23844C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUPlugInDispatch.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUPlugInDispatch.h"; sourceTree = "SOURCE_ROOT"; };
+ 2F9B863B3208F7FDC2DFB5C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; };
2FFF28CCC21983E2097F661E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; };
+ 3076EC4F52A19CE9017D3F25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; };
315792D7850F26654F7F799A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
316054DECCF2C8CA1375419C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAVectorUnitTypes.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAVectorUnitTypes.h"; sourceTree = "SOURCE_ROOT"; };
31C6340CFAED51F9297A247B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CustomTypeface.cpp"; path = "../../../../../modules/juce_graphics/fonts/juce_CustomTypeface.cpp"; sourceTree = "SOURCE_ROOT"; };
- 31EA1DBEF38B6612DCF697ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
+ 32A851BECAA8CB552DA0C92B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; };
32AAD6851954F58C57AAF699 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; };
33FA636BC069C12099595FF7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
- 34E23BC027A8B05CC5F418FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
- 34F7EF8094F8E02C29C9851B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
35A89273665F75DDA18CDC47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
35D50824AD807A721FA1ED0D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; };
3676883386C9710B77E2A882 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = bitreader.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/bitreader.h"; sourceTree = "SOURCE_ROOT"; };
2B44B90F3CEDD45A731586AD = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
2C88000D1FD0FF38CE9A45DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_RTAS_MacUtilities.mm"; path = "../../../../../modules/juce_audio_plugin_client/RTAS/juce_RTAS_MacUtilities.mm"; sourceTree = "SOURCE_ROOT"; };
2D0FF4338F332D5D2EF467BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ByteOrder.h"; path = "../../../../../modules/juce_core/memory/juce_ByteOrder.h"; sourceTree = "SOURCE_ROOT"; };
+ 2DD523352F6EE4FCFCE9A6F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrayAllocationBase.h"; path = "../../../../../modules/juce_core/containers/juce_ArrayAllocationBase.h"; sourceTree = "SOURCE_ROOT"; };
2F12CFEB1E95BC54E1CD3C7D = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
2F4E8F666770D3FE1819841C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../JuceLibraryCode/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; };
- 2F9B863B3208F7FDC2DFB5C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentDragger.h"; path = "../../../../../modules/juce_gui_basics/mouse/juce_ComponentDragger.h"; sourceTree = "SOURCE_ROOT"; };
- 3076EC4F52A19CE9017D3F25 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; };
30C6744AD7589406A556BB04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 31EA1DBEF38B6612DCF697ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Strings.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Strings.mm"; sourceTree = "SOURCE_ROOT"; };
326380A033B511A7D6C908B6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Component.cpp"; path = "../../../../../modules/juce_gui_basics/components/juce_Component.cpp"; sourceTree = "SOURCE_ROOT"; };
- 32A851BECAA8CB552DA0C92B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionListener.h"; path = "../../../../../modules/juce_events/broadcasters/juce_ActionListener.h"; sourceTree = "SOURCE_ROOT"; };
333B1B17AC6BBF4E5330BA2A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponent.mm"; path = "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
3393B8D4E413710805AAD1FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; };
341FDAB807E3998D5B7D7293 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; };
3447AC4248751CBF85190EAB = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Fonts.cpp"; path = "../../../../../modules/juce_graphics/native/juce_linux_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
34A5198B33BE63C226542043 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; };
34D919EE29BFF65E7B058F7B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WeakReference.h"; path = "../../../../../modules/juce_core/memory/juce_WeakReference.h"; sourceTree = "SOURCE_ROOT"; };
+ 34E23BC027A8B05CC5F418FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Thread.cpp"; path = "../../../../../modules/juce_core/threads/juce_Thread.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 34F7EF8094F8E02C29C9851B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; };
35BC4E6396C07229A7B57058 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
364C3095D20CCE47471C4DB0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableListBox.cpp"; path = "../../../../../modules/juce_gui_basics/widgets/juce_TableListBox.cpp"; sourceTree = "SOURCE_ROOT"; };
36B5D78633D30EBA28D70796 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ThreadWithProgressWindow.cpp"; path = "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp"; sourceTree = "SOURCE_ROOT"; };
425CE8E9D6EE24F5E6D9FCC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
427916B14A13C9592134DE85 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
42A4B8FE13CEA81021C02892 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctint.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctint.c"; sourceTree = "SOURCE_ROOT"; };
+ 42B3AF98E940C8680326C0CA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
42CC4A0B344E62ED93EC74D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_events.mm"; path = "../../JuceLibraryCode/juce_events.mm"; sourceTree = "SOURCE_ROOT"; };
433FE5AD20CFA2F2D6A1E037 = {isa = PBXFileReference; lastKnownFileType = file.r; name = AUResources.r; path = "../../../../../modules/juce_audio_plugin_client/AU/AUResources.r"; sourceTree = "SOURCE_ROOT"; };
437EBCEEE86D33C4B8E4659F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
C0EDB3E56321B663CEA2E600 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_formats.mm"; path = "../../../../../modules/juce_audio_formats/juce_audio_formats.mm"; sourceTree = "SOURCE_ROOT"; };
C10ABAA3BD59DAF94F6E8B19 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Network.cpp"; path = "../../../../../modules/juce_core/native/juce_win32_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
C155AA1B4897630C869644E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawablePath.cpp"; path = "../../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C17050197ECC3AD239C03654 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
C175608A57B2756CA559759E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Label.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_Label.h"; sourceTree = "SOURCE_ROOT"; };
C18684F220FB0814153BE4E0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferedInputStream.h"; path = "../../../../../modules/juce_core/streams/juce_BufferedInputStream.h"; sourceTree = "SOURCE_ROOT"; };
C18A26D290AB9B1B16DDF330 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_VST_Wrapper.mm"; path = "../../../../../modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm"; sourceTree = "SOURCE_ROOT"; };
DF6B4903F41F115C8CB35F1F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitmath.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitmath.c"; sourceTree = "SOURCE_ROOT"; };
DF9BC1627F11E58C4E294F04 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentListener.h"; path = "../../../../../modules/juce_gui_basics/components/juce_ComponentListener.h"; sourceTree = "SOURCE_ROOT"; };
DFB11A01A5F93DE884F33906 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; };
+ E00EB77F90408D1540628363 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
E02C32444D0AB4B491EAC31A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BorderSize.h"; path = "../../../../../modules/juce_graphics/geometry/juce_BorderSize.h"; sourceTree = "SOURCE_ROOT"; };
E06C44C9919D6BEA39ADD6DD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
E09104861140563DE73A0329 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_EdgeTable.cpp"; path = "../../../../../modules/juce_graphics/geometry/juce_EdgeTable.cpp"; sourceTree = "SOURCE_ROOT"; };
984BE3EEB980581B9CF1BD1C,
B4F21FE2C6382633783FF727,
AEC2C3E4D6FD3687B337E2B2,
+ 01A03043BD956D0A30DC5B41,
9ECB42E31DD6B72D21BC4195,
738D739A17DA063893459D74,
59D1F379F1100BA563ABC14B, ); name = "format_types"; sourceTree = "<group>"; };
4C88E0FDC3F83F0EF487620A,
0724EE0AC211E89A6F7958A8,
CDF60F2C42393AB69C766ACF,
+ C17050197ECC3AD239C03654,
+ 42B3AF98E940C8680326C0CA,
+ E00EB77F90408D1540628363,
0E488474E503D822F21E7ED1,
0441B2D9E47EFCD7344DCA87,
D57CBCE41DCFFF4B35AED051,
<OutputFile>$(IntDir)\Arpeggiator.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
<OutputFile>$(IntDir)\Arpeggiator.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
167A331857E2C569DCD49503 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Message.h"; path = "../../../../../modules/juce_events/messages/juce_Message.h"; sourceTree = "SOURCE_ROOT"; };
169146CE0C9730602B3D31BD = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GainPlugIn.vst; sourceTree = "BUILT_PRODUCTS_DIR"; };
16AA0774C9C905089427796B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBoundsConstrainer.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 1708A4A271D6457F239F1981 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
17F8F5D68492B7AA9085C409 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlacAudioFormat.cpp"; path = "../../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
183AA5F36A47F440F056FD9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
18602F0B69EF7D2A12C1BD9A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_osx_MessageQueue.h"; path = "../../../../../modules/juce_events/native/juce_osx_MessageQueue.h"; sourceTree = "SOURCE_ROOT"; };
45B7DA5829EC535A7358B483 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LagrangeInterpolator.cpp"; path = "../../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; };
45BD34FB3E3E4040E4C8722E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "psych_16.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/psych_16.h"; sourceTree = "SOURCE_ROOT"; };
45CF9FC46ECEB2B97446A51C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; };
+ 460E860FEB29C741E8C15D49 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
46ADA128BDAF3D249C4C2ADC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inffixed.h; path = "../../../../../modules/juce_core/zip/zlib/inffixed.h"; sourceTree = "SOURCE_ROOT"; };
46D387910B077A3AA7CB9C92 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPESynthesiserVoice.h"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPESynthesiserVoice.h"; sourceTree = "SOURCE_ROOT"; };
471D92ACB8B31557BCA3B255 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileSearchPathListComponent.h"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h"; sourceTree = "SOURCE_ROOT"; };
B6C2B6E81E1DF9E8505A0801 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; };
B6D1F711C549A6F9A3D94EC2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdhuff.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jdhuff.c"; sourceTree = "SOURCE_ROOT"; };
B6D7D629C02602FF516F6C9F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fixed.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/fixed.h"; sourceTree = "SOURCE_ROOT"; };
+ B6DB6CCCC6ADB3EF8C91BA2D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
B7272F573644C109E13069D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_cryptography.h"; path = "../../../../../modules/juce_cryptography/juce_cryptography.h"; sourceTree = "SOURCE_ROOT"; };
B74737CDC16DD601904CD554 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextLayout.cpp"; path = "../../../../../modules/juce_graphics/fonts/juce_TextLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
B751AAE21DEEAB7B91615223 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Button.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_Button.h"; sourceTree = "SOURCE_ROOT"; };
F3B8EEB02E5588D99021DD10 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
F3BFC5ADFAD663890D658894 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BufferingAudioSource.h"; path = "../../../../../modules/juce_audio_basics/sources/juce_BufferingAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
F3FC0F1212CEA1EE597AF0DC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_opengl.cpp"; path = "../../../../../modules/juce_opengl/juce_opengl.cpp"; sourceTree = "SOURCE_ROOT"; };
+ F4D0076B169A0FEB870639F1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
F507AE61AF55B2101383B1E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectShowComponent.h"; path = "../../../../../modules/juce_video/playback/juce_DirectShowComponent.h"; sourceTree = "SOURCE_ROOT"; };
F527FEA0852AA21984AD9F47 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CoreGraphicsHelpers.h"; path = "../../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsHelpers.h"; sourceTree = "SOURCE_ROOT"; };
F549ECCF4D91FC7A30105297 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NamedPipe.h"; path = "../../../../../modules/juce_core/network/juce_NamedPipe.h"; sourceTree = "SOURCE_ROOT"; };
3E750A56336FE91FE4190D0B,
CE57E03FD67001AF17AE9348,
115075E87FFDE3A0562DAB11,
+ 1708A4A271D6457F239F1981,
B480AA30CA4A3E925CD4D7BA,
8BE1CAAB600CECDD6390B937,
8C68CCB04F23709D332A85A3, ); name = "format_types"; sourceTree = "<group>"; };
60C8E3455765A2BECDE78B9D,
A361C360821B1E71E81F7CA8,
ECF93FB75583FDA74259A503,
+ B6DB6CCCC6ADB3EF8C91BA2D,
+ 460E860FEB29C741E8C15D49,
+ F4D0076B169A0FEB870639F1,
52665D9607E534FE81707A6C,
8791B975D75392F7B168AB66,
476A4BF63FB8E65B39CDC05F,
<OutputFile>$(IntDir)\GainPlugIn.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
<OutputFile>$(IntDir)\GainPlugIn.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0"\r
pluginSilenceInIsSilenceOut="1" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="GainPlugInAU" pluginRTASCategory="" aaxIdentifier="com.ROLI.GainPlugIn"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.4"\r
pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="sXaVAU" name="GainPlugIn">\r
<GROUP id="{57500C1B-EA6F-4A79-EE51-1D02CA8A8350}" name="Source">\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
void sliderValueChanged (Slider* slider) override\r
{\r
if (AudioProcessorParameter* param = getParameterForSlider (slider))\r
- param->setValueNotifyingHost ((float) slider->getValue());\r
+ {\r
+ if (slider->isMouseButtonDown())\r
+ param->setValueNotifyingHost ((float) slider->getValue());\r
+ else\r
+ param->setValue ((float) slider->getValue());\r
+ }\r
}\r
\r
void sliderDragStarted (Slider* slider) override\r
2FCF7727E41BF46E362269C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiDocumentPanel.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
2FD06966FAB4136A6DD8D71D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; };
2FEA20EE9A0CF8F731422AF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "stream_encoder.h"; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/stream_encoder.h"; sourceTree = "SOURCE_ROOT"; };
+ 2FFB8CCA588EF6FC1FC8ACED = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
300E1AADBE7B17F677E862B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_UIViewComponent.mm"; path = "../../../../../modules/juce_gui_extra/native/juce_ios_UIViewComponent.mm"; sourceTree = "SOURCE_ROOT"; };
306F525D44514608FF8A10F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLAppComponent.h"; path = "../../../../../modules/juce_opengl/utils/juce_OpenGLAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
307DB099C9A79CBB7B475924 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Singleton.h"; path = "../../../../../modules/juce_core/memory/juce_Singleton.h"; sourceTree = "SOURCE_ROOT"; };
8D8D6C4E9A3B9D7ECA7A8B6F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JSON.cpp"; path = "../../../../../modules/juce_core/javascript/juce_JSON.cpp"; sourceTree = "SOURCE_ROOT"; };
8DFC4987C78D34B54C43F0F0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngwutil.c; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngwutil.c"; sourceTree = "SOURCE_ROOT"; };
8EB72E0BBFF2C0E0BA3EDA96 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../../modules/juce_core/containers/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; };
+ 8F20F683BBA8F2FF5F05E341 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
8F5F65FD0D7B5E2A7029D68C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_22.h"; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_22.h"; sourceTree = "SOURCE_ROOT"; };
8F6829961A0F50B8265BD9CB = {isa = PBXFileReference; lastKnownFileType = file.nib; name = RecentFilesMenuTemplate.nib; path = RecentFilesMenuTemplate.nib; sourceTree = "SOURCE_ROOT"; };
8F808F4330D4F791E62FC452 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageConvolutionKernel.cpp"; path = "../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp"; sourceTree = "SOURCE_ROOT"; };
B398826F11A2F358C52DAA30 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Sampler.h"; path = "../../../../../modules/juce_audio_formats/sampler/juce_Sampler.h"; sourceTree = "SOURCE_ROOT"; };
B3ADCB0036F82A48201E3C26 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; };
B3C3709B0A46BA11D4EC036E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B46F461B4E60B0A372E22DC5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
B48DD9BFC06C1234CE44C42B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = crc32.c; path = "../../../../../modules/juce_core/zip/zlib/crc32.c"; sourceTree = "SOURCE_ROOT"; };
B4967CB32848813A53D167FC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; };
B4A176C11E9F3D31501D175D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiDataConcatenator.h"; path = "../../../../../modules/juce_audio_devices/native/juce_MidiDataConcatenator.h"; sourceTree = "SOURCE_ROOT"; };
CD111D36AD8E9D73CE9739F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; };
CD4A4B5DF38D0F6C1B5CA961 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FilenameComponent.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
CE1C954808FDA669FEEFDC2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
- CE756CA0F5505BA8084D5CA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
CF2A59FABE1AEC5251A7C9A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAAudioChannelLayout.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAudioChannelLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
+ D01619CC43F88EC81883B673 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; };
D5445BE1A8D52195956FD045 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioFormat.h"; path = "../../../../../modules/juce_audio_formats/format/juce_AudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
D6889EB5ED8960BD2093A686 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ios_Audio.cpp"; path = "../../../../../modules/juce_audio_devices/native/juce_ios_Audio.cpp"; sourceTree = "SOURCE_ROOT"; };
DA5881053EBA06F96F1D1CF3 = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MultiOutSynth.vst3; sourceTree = "BUILT_PRODUCTS_DIR"; };
CD2CEC703F63930859D26DBA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTPluginFormat.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h"; sourceTree = "SOURCE_ROOT"; };
CD4CB495D75A2ABAA66A2951 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MixerAudioSource.h"; path = "../../../../../modules/juce_audio_basics/sources/juce_MixerAudioSource.h"; sourceTree = "SOURCE_ROOT"; };
CDB15D2B8437758B0F7434B0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; };
+ CE756CA0F5505BA8084D5CA8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = "../../../../../modules/juce_graphics/image_formats/pnglib/pngconf.h"; sourceTree = "SOURCE_ROOT"; };
CE7AB9CEBC2AD27B236A69F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StandaloneFilterApp.cpp"; path = "../../../../../modules/juce_audio_plugin_client/Standalone/juce_StandaloneFilterApp.cpp"; sourceTree = "SOURCE_ROOT"; };
CEA5C634122F13B61BC06B2B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; };
CEEC9947F99D7F39C77DE79B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_NamedValueSet.cpp"; path = "../../../../../modules/juce_core/containers/juce_NamedValueSet.cpp"; sourceTree = "SOURCE_ROOT"; };
- D01619CC43F88EC81883B673 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ShapeButton.h"; path = "../../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.h"; sourceTree = "SOURCE_ROOT"; };
D06DCC799C2F8567B19C2B0A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Reverb.h"; path = "../../../../../modules/juce_audio_basics/effects/juce_Reverb.h"; sourceTree = "SOURCE_ROOT"; };
D08EBD01477B270E49ADD283 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitwise.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/bitwise.c"; sourceTree = "SOURCE_ROOT"; };
D18DE409087FFFDCA4187D4F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableText.cpp"; path = "../../../../../modules/juce_gui_basics/drawables/juce_DrawableText.cpp"; sourceTree = "SOURCE_ROOT"; };
D3A6E1B603DE41421B936020 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; };
D44AA51289630AADC5B6790C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; };
D494EAD9146C1223068494AD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageFileFormat.h"; path = "../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"; sourceTree = "SOURCE_ROOT"; };
+ D4EC0887DABB7D5A7E911549 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
D503329DCE178787E5B2D8C2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImagePreviewComponent.h"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; };
D50539AB3F3030B5B6EE1E27 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_ASCII.h"; path = "../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h"; sourceTree = "SOURCE_ROOT"; };
D5BD3DE485D0F4E7C3BB6A0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Files.mm"; path = "../../../../../modules/juce_core/native/juce_mac_Files.mm"; sourceTree = "SOURCE_ROOT"; };
60EBEDFDF4A6E7DED70B9185,
AA59E230F960D32E4BF578AF,
676CB38425FD7162414A9EBA,
+ 8F20F683BBA8F2FF5F05E341,
27B53FF2B2CA458D1BFF27DA,
3F2F67CDD0CE06807A6EE36E,
CD2CEC703F63930859D26DBA, ); name = "format_types"; sourceTree = "<group>"; };
F4B3CEA81F88AEE7F2C0C3C5,
FC42E14EA4604FB4C5548219,
CAF48DE29336FD7E6BA83365,
+ D4EC0887DABB7D5A7E911549,
+ B46F461B4E60B0A372E22DC5,
+ 2FFB8CCA588EF6FC1FC8ACED,
ADB8C7586BC0F1A932F5F0BB,
E124A8EDD335F18AEEE14AE1,
2FCF7727E41BF46E362269C4,
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lMultiOutSynth";
INSTALL_PATH = "/Library/Application Support/Avid/Audio/Plug-Ins/";
LIBRARY_SEARCH_PATHS = ("$(inherited)", "\"$(HOME)/SDKs/AAX/Libs/Debug\"");
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lAAXLibrary -lMultiOutSynth";
INSTALL_PATH = "/Library/Application Support/Avid/Audio/Plug-Ins/";
LIBRARY_SEARCH_PATHS = ("$(inherited)", "\"$(HOME)/SDKs/AAX/Libs/Release\"");
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lAAXLibrary -lMultiOutSynth";
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "~/SDKs/AAX", "~/SDKs/AAX/Interfaces", "~/SDKs/AAX/Interfaces/ACF", "../../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
PRODUCT_BUNDLE_IDENTIFIER = com.ROLI.MultiOutSynth;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "~/SDKs/AAX", "~/SDKs/AAX/Interfaces", "~/SDKs/AAX/Interfaces/ACF", "../../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
PRODUCT_BUNDLE_IDENTIFIER = com.ROLI.MultiOutSynth;
<OutputFile>$(IntDir)\MultiOutSynth.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
<OutputFile>$(IntDir)\MultiOutSynth.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
pluginSilenceInIsSilenceOut="0" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="MultiOutSynthAU" pluginRTASCategory=""\r
aaxIdentifier="com.ROLI.MultiOutSynth" pluginAAXCategory="AAX_ePlugInCategory_SWGenerators"\r
- jucerVersion="4.2.3" companyName="ROLI Ltd." companyWebsite="www.roli.com"\r
+ jucerVersion="4.2.4" companyName="ROLI Ltd." companyWebsite="www.roli.com"\r
companyEmail="info@juce.com" pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="uGSDhi" name="MultiOutSynth">\r
<GROUP id="{78464AFF-72EB-5BDD-4FD3-6C8C6CF5DFA3}" name="Source">\r
3E9C541A14A9853BF59E72A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImagePreviewComponent.cpp"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
3ED2CBBCD8CD636730F6771F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryIterator.cpp"; path = "../../../../../modules/juce_core/files/juce_DirectoryIterator.cpp"; sourceTree = "SOURCE_ROOT"; };
3EF69AC6D7A75BCF43A2FE91 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBuilder.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.h"; sourceTree = "SOURCE_ROOT"; };
+ 3F3CDD8265781AA6E58916D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
3FA212821034AFA68D277C94 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = "libpng_readme.txt"; path = "../../../../../modules/juce_graphics/image_formats/pnglib/libpng_readme.txt"; sourceTree = "SOURCE_ROOT"; };
3FC57131CE9EA206DBA5E7B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAStreamBasicDescription.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAStreamBasicDescription.h"; sourceTree = "SOURCE_ROOT"; };
3FCAC060EB649E790C494124 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_core.cpp"; path = "../../../../../modules/juce_core/juce_core.cpp"; sourceTree = "SOURCE_ROOT"; };
589790462BFA1ACD31F0042E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ScopedLock.h"; path = "../../../../../modules/juce_core/threads/juce_ScopedLock.h"; sourceTree = "SOURCE_ROOT"; };
589F8F03BB18E494AEBD6101 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Typeface.cpp"; path = "../../../../../modules/juce_graphics/fonts/juce_Typeface.cpp"; sourceTree = "SOURCE_ROOT"; };
590829FC32E83F6CF32B0458 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GroupComponent.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_GroupComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 591E0EE3B809F18F79893C71 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
59420A818BB57FA17DE533F9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; };
5947287DFB39DB274AFBA860 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AUCarbonViewControl.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h"; sourceTree = "SOURCE_ROOT"; };
597386A458AC5E4D64C18066 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CAAudioChannelLayout.cpp; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAudioChannelLayout.cpp"; sourceTree = "SOURCE_ROOT"; };
5EA2D7D4DD82CE7460EC70ED = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; };
5EBDD3AD7A64FF54EDE0C5AE = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V1.cpp"; path = "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp"; sourceTree = "SOURCE_ROOT"; };
5EF2F091583F20C8CE73F7A9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 5EF6018102FB505CDA5E82FE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
5F2B1BEE9EB87892E0FD44AA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; };
5F74A97551ACF53D3B0E8C64 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; };
5FF49741ABB5C8D6C11547BA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_cryptography.cpp"; path = "../../../../../modules/juce_cryptography/juce_cryptography.cpp"; sourceTree = "SOURCE_ROOT"; };
BBC9BF6DCD11885CA9E119E5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileDragAndDropTarget.h"; path = "../../../../../modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h"; sourceTree = "SOURCE_ROOT"; };
BC3AD0B0EAFB9202A4628D87 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
BC4D26F9883D8FE32DEDC298 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; };
+ BC92B8A2B7B3CEFA8B3F541D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
BCC02F39B2F24479D8F6DB50 = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-VST3.plist"; path = "Info-VST3.plist"; sourceTree = "SOURCE_ROOT"; };
BCCCB0F3D86B3F05A2FDC6BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyPressMappingSet.cpp"; path = "../../../../../modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp"; sourceTree = "SOURCE_ROOT"; };
BD1941870623E3B285EA0C3D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MissingGLDefinitions.h"; path = "../../../../../modules/juce_opengl/native/juce_MissingGLDefinitions.h"; sourceTree = "SOURCE_ROOT"; };
15D9387120B61E7C407F2C76,
05085296947E594C821B4B99,
E59436CDDCF0D85D9D70069D,
+ 3F3CDD8265781AA6E58916D5,
FF8FFE608168896DE86209DD,
380147C3BE63B15FFA951023,
899CCE2491A041C70D8B77C7, ); name = "format_types"; sourceTree = "<group>"; };
B7A9F5BE275B027C0B0C40C3,
30B076BD20CDD8F27B6604CB,
4B3AE7D751B71B85831E94D7,
+ 591E0EE3B809F18F79893C71,
+ BC92B8A2B7B3CEFA8B3F541D,
+ 5EF6018102FB505CDA5E82FE,
626706DB11D4536E1FFD2239,
590829FC32E83F6CF32B0458,
226AECA874A1905BE3AF8359,
<OutputFile>$(IntDir)\NoiseGate.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
<OutputFile>$(IntDir)\NoiseGate.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\Win32" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0"\r
pluginSilenceInIsSilenceOut="0" pluginEditorRequiresKeys="0"\r
pluginAUExportPrefix="NoiseGateAU" pluginRTASCategory="" aaxIdentifier="com.roli.NoiseGate"\r
- pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.3"\r
+ pluginAAXCategory="AAX_ePlugInCategory_Dynamics" jucerVersion="4.2.4"\r
pluginIsMidiEffectPlugin="0" buildAUv3="0">\r
<MAINGROUP id="FVYuyg" name="NoiseGate">\r
<GROUP id="{6EB662B0-ED81-2504-8B90-DCBFA5675DFC}" name="Source">\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := Surround.so\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -O3 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -fPIC -O3 -Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := Surround.so\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/SurroundProcessor_c7ed9c55.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o \\r
- $(OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/SurroundProcessor_c7ed9c55.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o \\r
+ $(JUCE_OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking Surround\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning Surround\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping Surround\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/SurroundProcessor_c7ed9c55.o: ../../Source/SurroundProcessor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/SurroundProcessor_c7ed9c55.o: ../../Source/SurroundProcessor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling SurroundProcessor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o: ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o: ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_plugin_client_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o: ../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o: ../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_plugin_client_VST2.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
298205CEB528B1048E7572B7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormat.cpp"; path = "../../../../../modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
29CDCCC7FB95D6C13A9CD0C0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = md5.c; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/md5.c"; sourceTree = "SOURCE_ROOT"; };
29ED8FCBD8C2266ADEB20562 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_plugin_client_AU_2.mm"; path = "../../JuceLibraryCode/juce_audio_plugin_client_AU_2.mm"; sourceTree = "SOURCE_ROOT"; };
+ 2A5DBFDAAA4270D64B38E5F8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
2B3FB20F8237DB0C8618F18D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; };
2B666A8D2E1E9F81D5139566 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MD5.cpp"; path = "../../../../../modules/juce_cryptography/hashing/juce_MD5.cpp"; sourceTree = "SOURCE_ROOT"; };
2B71D20D7270815E421D2F9C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; };
412F2AF92D2B1087AC0FB2E1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcparam.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jcparam.c"; sourceTree = "SOURCE_ROOT"; };
416D78C0452B796EABB0E320 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MouseCursor.mm"; path = "../../../../../modules/juce_gui_basics/native/juce_mac_MouseCursor.mm"; sourceTree = "SOURCE_ROOT"; };
41746FC663B6AAAADECE1425 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsDisplayComponent.h"; path = "../../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 418A9016C2A8196E6EC8D652 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
41929CC1698D3B82A3898EA5 = {isa = PBXFileReference; lastKnownFileType = text.txt; name = "changes to libjpeg for JUCE.txt"; path = "../../../../../modules/juce_graphics/image_formats/jpglib/changes to libjpeg for JUCE.txt"; sourceTree = "SOURCE_ROOT"; };
41A64D81E976A07DB6741318 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeTokeniser.h"; path = "../../../../../modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; };
41FF3F669144D70DC5279453 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jcprepct.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jcprepct.c"; sourceTree = "SOURCE_ROOT"; };
831D6FCD81612A1649B0CF08 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ValueTree.h"; path = "../../../../../modules/juce_data_structures/values/juce_ValueTree.h"; sourceTree = "SOURCE_ROOT"; };
832774543B7277913460C41E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAAutoDisposer.h; path = "../../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAAutoDisposer.h"; sourceTree = "SOURCE_ROOT"; };
83E2EFC9133757FD09C67ABE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; };
+ 84339DDD6E22F3870FA464D5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
84361AF1AD46751899D33C5D = {isa = PBXFileReference; lastKnownFileType = file.r; name = "juce_audio_plugin_client_RTAS.r"; path = "../../../../../modules/juce_audio_plugin_client/juce_audio_plugin_client_RTAS.r"; sourceTree = "SOURCE_ROOT"; };
854BE217C612C256BED72308 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_HighResolutionTimer.cpp"; path = "../../../../../modules/juce_core/threads/juce_HighResolutionTimer.cpp"; sourceTree = "SOURCE_ROOT"; };
857D93C46EF5F30B686666FF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jctrans.c; path = "../../../../../modules/juce_graphics/image_formats/jpglib/jctrans.c"; sourceTree = "SOURCE_ROOT"; };
863578C8C35502444456B6EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel_V3.cpp"; path = "../../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp"; sourceTree = "SOURCE_ROOT"; };
86382EEFD2D874C080F395EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_video.mm"; path = "../../JuceLibraryCode/juce_video.mm"; sourceTree = "SOURCE_ROOT"; };
86422EC835DBE9E12ACAA844 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = memory.h; path = "../../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h"; sourceTree = "SOURCE_ROOT"; };
- 86C60AB46BC50B750493C0C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
- 878E3A6EA611E5474CCCF740 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; };
+ 870B95887E00B482EC3BCBC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
87CBFFF0A410C24D08C77B9D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AffineTransform.cpp"; path = "../../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp"; sourceTree = "SOURCE_ROOT"; };
884753558BC1F3FA3CD36289 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; };
889215816EC0BE292B4FC278 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
80EFB73C0DD18C003A15150B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiFile.cpp"; path = "../../../../../modules/juce_audio_basics/midi/juce_MidiFile.cpp"; sourceTree = "SOURCE_ROOT"; };
83C89E3C13A5897E5A1A062E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEMessages.h"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPEMessages.h"; sourceTree = "SOURCE_ROOT"; };
85FAAFC7204659F3B375631F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiOutput.cpp"; path = "../../../../../modules/juce_audio_devices/midi_io/juce_MidiOutput.cpp"; sourceTree = "SOURCE_ROOT"; };
- 870B95887E00B482EC3BCBC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 86C60AB46BC50B750493C0C4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 878E3A6EA611E5474CCCF740 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharacterFunctions.h"; path = "../../../../../modules/juce_core/text/juce_CharacterFunctions.h"; sourceTree = "SOURCE_ROOT"; };
8884CB197E61E62731D1A4B5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; };
89BE99C79A12FAA559AB0958 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioCDReader.cpp"; path = "../../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; };
8A0648AE319C0CEA55D7AD88 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; };
E8B7C9D914F19F473EA46B12 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h"; sourceTree = "SOURCE_ROOT"; };
E9146BA7D2CFDD5DE8C1A4EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MPEZone.h"; path = "../../../../../modules/juce_audio_basics/mpe/juce_MPEZone.h"; sourceTree = "SOURCE_ROOT"; };
E926027E5704282DD6F4AFEE = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = floor1.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/floor1.c"; sourceTree = "SOURCE_ROOT"; };
+ E9501FE4D42D2C7F6A97EAA0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
E953B89607509135D337044D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = analysis.c; path = "../../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/analysis.c"; sourceTree = "SOURCE_ROOT"; };
E9826AAFDC691D5BDB7E7F53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; };
E9D99C7B57FBA78B15C7B7C5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; };
8B61BBC7490B7EB09164C24E,
C3DA1C57A25DCB12F2DF99AB,
97486545E0DEF7983FD5CA4A,
+ 84339DDD6E22F3870FA464D5,
0865F1C307283AE02E351740,
6EA1D72172113F26FB6B928E,
9BA022320B40176B7D34174A, ); name = "format_types"; sourceTree = "<group>"; };
35FFFC72EB6015F79E23D471,
625DB3E333234BCF2DC1352A,
C34797F37266DB39D227210D,
+ E9501FE4D42D2C7F6A97EAA0,
+ 2A5DBFDAAA4270D64B38E5F8,
+ 418A9016C2A8196E6EC8D652,
B3ECDD29979ACEC5B31C54BF,
E44F53D99BB88A6D31DC5B66,
22A3F345BE74DB54722E6246,
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lSurround";
INSTALL_PATH = "/Library/Application Support/Avid/Audio/Plug-Ins/";
LIBRARY_SEARCH_PATHS = ("$(inherited)", "\"$(HOME)/SDKs/AAX/Libs/Debug\"");
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lAAXLibrary -lSurround";
INSTALL_PATH = "/Library/Application Support/Avid/Audio/Plug-Ins/";
LIBRARY_SEARCH_PATHS = ("$(inherited)", "\"$(HOME)/SDKs/AAX/Libs/Release\"");
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
OTHER_LDFLAGS = "-bundle -lAAXLibrary -lSurround";
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "~/SDKs/AAX", "~/SDKs/AAX/Interfaces", "~/SDKs/AAX/Interfaces/ACF", "../../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
PRODUCT_BUNDLE_IDENTIFIER = com.ROLI.Surround;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "~/SDKs/AAX", "~/SDKs/AAX/Interfaces", "~/SDKs/AAX/Interfaces/ACF", "../../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_CPLUSPLUSFLAGS = "-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion -Woverloaded-virtual -Wreorder -Wconstant-conversion -Wsign-conversion";
PRODUCT_BUNDLE_IDENTIFIER = com.ROLI.Surround;
<OutputFile>$(IntDir)\Surround.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\x64"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\x64\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\x64" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
<OutputFile>$(IntDir)\Surround.bsc</OutputFile>\r
</Bscmake>\r
<PostBuildEvent>\r
- <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"</Command>\r
+ <Command>copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).vst3"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents"\r
+mkdir "$(OutDir)\$(TargetName).aaxplugin\Contents\x64"\r
+copy /Y "$(OutDir)\$(TargetFileName)" "$(OutDir)\$(TargetName).aaxplugin\Contents\x64\$(TargetName).aaxplugin"\r
+c:\SDKs\AAX\Utilities\CreatePackage.bat "$(OutDir)\$(TargetName).aaxplugin\Contents\x64" "c:\SDKs\AAX\Utilities\PlugIn.ico"</Command>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
private:\r
String getLayoutName() const\r
{\r
- if (AudioProcessor* processor = getAudioProcessor())\r
- return processor->busArrangement.outputBuses.getReference (0).channels.getDescription();\r
+ if (AudioProcessor* p = getAudioProcessor())\r
+ return p->busArrangement.outputBuses.getReference (0).channels.getDescription();\r
\r
return "Unknown";\r
}\r
const String getName() const override { return "Surround PlugIn"; }\r
bool acceptsMidi() const override { return false; }\r
bool producesMidi() const override { return false; }\r
- bool silenceInProducesSilenceOut() const override { return true; }\r
double getTailLengthSeconds() const override { return 0; }\r
\r
//==============================================================================\r
pluginIsMidiEffectPlugin="0" pluginSilenceInIsSilenceOut="0"\r
pluginEditorRequiresKeys="0" pluginAUExportPrefix="SurroundAU"\r
pluginRTASCategory="" aaxIdentifier="com.ROLI.Surround" pluginAAXCategory="AAX_ePlugInCategory_Dynamics"\r
- jucerVersion="4.2.3" buildAUv3="0">\r
+ jucerVersion="4.2.4" buildAUv3="0">\r
<MAINGROUP id="dEAH7t" name="Surround">\r
<GROUP id="{1CB41212-BD0E-AC71-15E8-C40AD59BD2EE}" name="Source">\r
<FILE id="sLk2ic" name="SurroundProcessor.cpp" compile="1" resource="0"\r
2DCE8865F812F11BFE50B518 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
2DD3B8CC10CDFA57C4BBE959 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioParameterChoice.h"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h"; sourceTree = "SOURCE_ROOT"; };
2E2137ACDED8F7FDA402AFE4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = memory.h; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/include/private/memory.h"; sourceTree = "SOURCE_ROOT"; };
+ 2E52CEE653E4B3BCCFA261C7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
2E96F44C68311A1EB839275A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V3.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h"; sourceTree = "SOURCE_ROOT"; };
2EE66D27896775F0F1395C55 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleComponent.cpp"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
2F6E53E6746610E44FA47EF3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BasicNativeHeaders.h"; path = "../../../../modules/juce_core/native/juce_BasicNativeHeaders.h"; sourceTree = "SOURCE_ROOT"; };
7BB91094F378EBD92A6B33E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; };
7BEA6729CA4E2FBF16CA8FAC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; };
7BEA6A8588384F48F8174455 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectSound.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_DirectSound.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 7C0FE9A770AE17EB86105E79 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
7C48CCF9E4A6441E4ECA086B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; };
7C9B9B7D98173CF92521CD90 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
7CA385641AE9AAACA3AF4785 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; };
9E7307F339FCE45305069039 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; };
9E89D9AFB083F08BAE9E1BDF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_AudioCDReader.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_AudioCDReader.cpp"; sourceTree = "SOURCE_ROOT"; };
9F13FED7A58E73C196A8DA35 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "codec_internal.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/codec_internal.h"; sourceTree = "SOURCE_ROOT"; };
+ 9F771CD14B117446FB2BF9E9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
9FC7AF41406FF52C02227F0B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsMediaAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_WindowsMediaAudioFormat.h"; sourceTree = "SOURCE_ROOT"; };
A03711E4C934AC0C97ED2CC7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; };
A072D286681A3B8E148C34E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; };
FA02B4707CCF843EB45C40EA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutResizerBar.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h"; sourceTree = "SOURCE_ROOT"; };
FA7F7EEFA3508900448C659C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; };
FB0ED32BF7C5FD14B5B33711 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; };
+ FB8A0B12249D1B586E0DE190 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
FB8DEDDB025CD1B3599DBFDA = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "stream_decoder.c"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/stream_decoder.c"; sourceTree = "SOURCE_ROOT"; };
FBF8014D8811B9B5AAC175E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
FC0F6A6E9D190A0C51C88471 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; };
B7AE0149FF49C6EE294D03EE,
47DF39DDF6085A33F2282CF1,
E8D30B5E295B1C331EA24873,
+ 9F771CD14B117446FB2BF9E9,
4940BC726C0DA4D4F4EB403C,
8FE177F5571307A339832F6E,
97346F3788D1AAC32D47D4D4, ); name = "format_types"; sourceTree = "<group>"; };
C08BE05BAF052D2C26B0A4F5,
75DA1BE4F0FB5A3879B05847,
73496E7F458E957E4BE0D388,
+ FB8A0B12249D1B586E0DE190,
+ 7C0FE9A770AE17EB86105E79,
+ 2E52CEE653E4B3BCCFA261C7,
56B09AC75A152B6AE8C18DB8,
230582C40A7D03F6691C7612,
0351B5860D662C1B46594126,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.SimpleFFTExample;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.SimpleFFTExample;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="cgcxPd" name="SimpleFFTExample" projectType="guiapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.SimpleFFTExample" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3">\r
+ jucerVersion="4.2.4">\r
<MAINGROUP id="rZCHr8" name="SimpleFFTExample">\r
<GROUP id="{8DC23B3F-98AC-AB1C-B26A-E693AF2DF0D2}" name="Source">\r
<FILE id="B1L62H" name="SpectrogramComponent.h" compile="0" resource="0"\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -fPIC -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -Wl,--no-undefined -shared -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := JuceDemoPlugin.so\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -fPIC -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -fPIC -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -Wl,--no-undefined -shared -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := JuceDemoPlugin.so\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/PluginEditor_94d4fb09.o \\r
- $(OBJDIR)/PluginProcessor_a059e380.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o \\r
- $(OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/PluginEditor_94d4fb09.o \\r
+ $(JUCE_OBJDIR)/PluginProcessor_a059e380.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o \\r
+ $(JUCE_OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking JuceDemoPlugin\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning JuceDemoPlugin\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping JuceDemoPlugin\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/PluginEditor_94d4fb09.o: ../../Source/PluginEditor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/PluginEditor_94d4fb09.o: ../../Source/PluginEditor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling PluginEditor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/PluginProcessor_a059e380.o: ../../Source/PluginProcessor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/PluginProcessor_a059e380.o: ../../Source/PluginProcessor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling PluginProcessor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o: ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_plugin_client_utils_35fbf7.o: ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_plugin_client_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o: ../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_plugin_client_VST2_fd137df.o: ../../JuceLibraryCode/juce_audio_plugin_client_VST2.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_plugin_client_VST2.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
35AFE1E124E99572CBA1F46D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PerformanceCounter.cpp"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.cpp"; sourceTree = "SOURCE_ROOT"; };
35F57A1FB7A15A5374251F97 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.h"; sourceTree = "SOURCE_ROOT"; };
366D4ADE01A2B4B6E0047A34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "lpc_flac.c"; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/lpc_flac.c"; sourceTree = "SOURCE_ROOT"; };
+ 36793CB90360BAF15C6C94D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
36CB6C4D85EFD5015D667E96 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MPEInstrument.cpp"; path = "../../../../modules/juce_audio_basics/mpe/juce_MPEInstrument.cpp"; sourceTree = "SOURCE_ROOT"; };
36EDB9DCF2D5260319028905 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; };
371CABFCE28A273E9150F537 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawablePath.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawablePath.h"; sourceTree = "SOURCE_ROOT"; };
704A1428992F4CA4A606E2B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; };
705AC662E310AC822FDEA734 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ZipFile.cpp"; path = "../../../../modules/juce_core/zip/juce_ZipFile.cpp"; sourceTree = "SOURCE_ROOT"; };
70833A7D4499DDCFA183E14B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctred.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jidctred.c"; sourceTree = "SOURCE_ROOT"; };
+ 70964D7E4EC5D988A2B2E460 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
709C82A5435B2B3933ED5343 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LowLevelGraphicsPostScriptRenderer.h"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.h"; sourceTree = "SOURCE_ROOT"; };
70BA280499987A1D14FCB1A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryBlock.cpp"; path = "../../../../modules/juce_core/memory/juce_MemoryBlock.cpp"; sourceTree = "SOURCE_ROOT"; };
70D113696646BD43B4D0C3A6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StringArray.cpp"; path = "../../../../modules/juce_core/text/juce_StringArray.cpp"; sourceTree = "SOURCE_ROOT"; };
A31CE7177BF947DB60F72D94 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BubbleMessageComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
A3F95510DCE3352156FE67E4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_audio_utils.cpp"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.cpp"; sourceTree = "SOURCE_ROOT"; };
A3FF50EFE17D8634A9A0A6EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = framing.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/framing.c"; sourceTree = "SOURCE_ROOT"; };
+ A4DAEB5C0621C1C04EA93AEC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
A52038A2E61AB03CF55A3B0F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferingAudioFormatReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_BufferingAudioFormatReader.cpp"; sourceTree = "SOURCE_ROOT"; };
A5479787577EB56F20ECF48F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CAReferenceCounted.h; path = "../../../../modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CAReferenceCounted.h"; sourceTree = "SOURCE_ROOT"; };
A59A08DCC76EE0FC7EBE1203 = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
EECBEDF7C26CF9597CC601D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlacAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; };
EED2AEDB27E7562C4DCFA637 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TimeSliceThread.h"; path = "../../../../modules/juce_core/threads/juce_TimeSliceThread.h"; sourceTree = "SOURCE_ROOT"; };
EFD8E22899758751230A8590 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryOutputStream.h"; path = "../../../../modules/juce_core/streams/juce_MemoryOutputStream.h"; sourceTree = "SOURCE_ROOT"; };
+ F00B6472C8811E341D954036 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
F04CF5D4410243EF3DEDBEB8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Font.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_Font.cpp"; sourceTree = "SOURCE_ROOT"; };
F0DC1A84185952857B3DCAE8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LagrangeInterpolator.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.cpp"; sourceTree = "SOURCE_ROOT"; };
F0E927F230180C28CFB91C99 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = misc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/misc.h"; sourceTree = "SOURCE_ROOT"; };
6A72E46DBDCFAD6F7039E739,
F6AE333028FC864D4653A7B5,
070E3EFE91BE8407EE1EBD8C,
+ A4DAEB5C0621C1C04EA93AEC,
A9C466FBA4FCF6484BCF86A2,
6501BB1AAFD5B3DC4A783F85,
CC04A3CE3003C0A0AB35A7AF, ); name = "format_types"; sourceTree = "<group>"; };
D18B1676A7BB2890B81717FD,
D7FE483198CE40495DE72435,
5647736926AE116B8C392630,
+ 70964D7E4EC5D988A2B2E460,
+ F00B6472C8811E341D954036,
+ 36793CB90360BAF15C6C94D3,
4AB9AA07703E3BAE99B586C3,
6A3C840E1B6CD34CA8C8DB4B,
C859B01B55EAB67BC10ED803,
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
INFOPLIST_FILE = Info-VST.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
INFOPLIST_FILE = Info-VST3.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST3/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/AUBase\"";
INFOPLIST_FILE = Info-AU.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
OTHER_LDFLAGS = "-bundle -lJuceDemoPlugin";
OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Extras/CoreAudio/AudioUnits/AUPublic/AUBase\"";
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "@executable_path/../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.JuceDemoPlugin;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
pluginWantsMidiIn="1" pluginProducesMidiOut="1" pluginSilenceInIsSilenceOut="0"\r
pluginTailLength="0" pluginEditorRequiresKeys="1" pluginAUExportPrefix="JuceDemoProjectAU"\r
pluginAUViewClass="JuceDemoProjectAU_V1" pluginRTASCategory=""\r
- bundleIdentifier="com.juce.JuceDemoPlugin" jucerVersion="4.2.3"\r
+ bundleIdentifier="com.juce.JuceDemoPlugin" jucerVersion="4.2.4"\r
companyName="ROLI Ltd." aaxIdentifier="com.yourcompany.JuceDemoPlugin"\r
buildAAX="0" pluginAAXCategory="AAX_ePlugInCategory_Dynamics"\r
includeBinaryInAppConfig="1" buildVST3="1" pluginManufacturerEmail="support@yourcompany.com"\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
void valueChanged() override\r
{\r
- param.setValueNotifyingHost ((float) Slider::getValue());\r
+ if (isMouseButtonDown())\r
+ param.setValueNotifyingHost ((float) Slider::getValue());\r
+ else\r
+ param.setValue ((float) Slider::getValue());\r
}\r
\r
void timerCallback() override { updateSliderPos(); }\r
JuceDemoPluginAudioProcessorEditor::JuceDemoPluginAudioProcessorEditor (JuceDemoPluginAudioProcessor& owner)\r
: AudioProcessorEditor (owner),\r
midiKeyboard (owner.keyboardState, MidiKeyboardComponent::horizontalKeyboard),\r
- timecodeDisplayLabel (String::empty),\r
- gainLabel (String::empty, "Throughput level:"),\r
- delayLabel (String::empty, "Delay:")\r
+ timecodeDisplayLabel (String()),\r
+ gainLabel (String(), "Throughput level:"),\r
+ delayLabel (String(), "Delay:")\r
{\r
// add some sliders..\r
addAndMakeVisible (gainSlider = new ParameterSlider (*owner.gainParam));\r
double getTailLengthSeconds() const override { return 0.0; }\r
\r
//==============================================================================\r
- int getNumPrograms() override { return 1; }\r
+ int getNumPrograms() override { return 0; }\r
int getCurrentProgram() override { return 0; }\r
void setCurrentProgram (int /*index*/) override {}\r
- const String getProgramName (int /*index*/) override { return "Default"; }\r
+ const String getProgramName (int /*index*/) override { return String(); }\r
void changeProgramName (int /*index*/, const String& /*name*/) override {}\r
\r
//==============================================================================\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := Plugin\ Host\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ~/SDKs/VST3\ SDK -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := Plugin\ Host\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/FilterGraph_62e9c017.o \\r
- $(OBJDIR)/GraphEditorPanel_3dbd4872.o \\r
- $(OBJDIR)/HostStartup_5ce96f96.o \\r
- $(OBJDIR)/InternalFilters_beb54bdf.o \\r
- $(OBJDIR)/MainHostWindow_e920295a.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/FilterGraph_62e9c017.o \\r
+ $(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o \\r
+ $(JUCE_OBJDIR)/HostStartup_5ce96f96.o \\r
+ $(JUCE_OBJDIR)/InternalFilters_beb54bdf.o \\r
+ $(JUCE_OBJDIR)/MainHostWindow_e920295a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking Plugin Host\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning Plugin Host\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping Plugin Host\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/FilterGraph_62e9c017.o: ../../Source/FilterGraph.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/FilterGraph_62e9c017.o: ../../Source/FilterGraph.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling FilterGraph.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/GraphEditorPanel_3dbd4872.o: ../../Source/GraphEditorPanel.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/GraphEditorPanel_3dbd4872.o: ../../Source/GraphEditorPanel.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling GraphEditorPanel.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/HostStartup_5ce96f96.o: ../../Source/HostStartup.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/HostStartup_5ce96f96.o: ../../Source/HostStartup.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling HostStartup.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/InternalFilters_beb54bdf.o: ../../Source/InternalFilters.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/InternalFilters_beb54bdf.o: ../../Source/InternalFilters.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling InternalFilters.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/MainHostWindow_e920295a.o: ../../Source/MainHostWindow.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/MainHostWindow_e920295a.o: ../../Source/MainHostWindow.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling MainHostWindow.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
05B20BD978297F87BD60E6EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; };
05F4EC3408F31D59EF961555 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LagrangeInterpolator.h"; path = "../../../../modules/juce_audio_basics/effects/juce_LagrangeInterpolator.h"; sourceTree = "SOURCE_ROOT"; };
0647115F688F4B35C22C0A56 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyMappingEditorComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 069AD628740BD9731986CDFC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
06C1447B9CBC6813BB7BEA53 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPool.h"; path = "../../../../modules/juce_core/text/juce_StringPool.h"; sourceTree = "SOURCE_ROOT"; };
06EB1158FAA7044D25A1B836 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; };
072056D37C68FC94B080506C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResamplingAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; };
5C24DE268797C1C7AC932837 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Socket.cpp"; path = "../../../../modules/juce_core/network/juce_Socket.cpp"; sourceTree = "SOURCE_ROOT"; };
5CAD4033015519DB9995E82C = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; };
5CD825D3FEC4CA9FEE05D4D2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 5D4FF9B8DDE175EF5807AA2F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
5D6AF55EDB77231E95C23086 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AttributedString.h"; path = "../../../../modules/juce_graphics/fonts/juce_AttributedString.h"; sourceTree = "SOURCE_ROOT"; };
5DF1460C31CD1BF8FADF56D3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentAnimator.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp"; sourceTree = "SOURCE_ROOT"; };
5E0882CA277CB65EBD9292BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TemporaryFile.cpp"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.cpp"; sourceTree = "SOURCE_ROOT"; };
BFC98B56313D64177AE6B385 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; };
BFCA358DEECC78ABB7B6E8A5 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XmlElement.cpp"; path = "../../../../modules/juce_core/xml/juce_XmlElement.cpp"; sourceTree = "SOURCE_ROOT"; };
BFE7688FBFC63D7180BC9D6A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorParameters.cpp"; path = "../../../../modules/juce_audio_processors/utilities/juce_AudioProcessorParameters.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C01972C590DF60155C0DEB02 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
C0866AEADD1BEEDB904EE8A3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.h"; sourceTree = "SOURCE_ROOT"; };
C08CEA80C09A398668B42CF9 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Sampler.h"; path = "../../../../modules/juce_audio_formats/sampler/juce_Sampler.h"; sourceTree = "SOURCE_ROOT"; };
C0EAB8DB78CC1330EBFB1BB4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; };
D5952905FC386C19D0818398 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; };
D5C074653417ED69A2B570AC = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
D5CCBF553F4EDCB7D7063619 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = backends.h; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/backends.h"; sourceTree = "SOURCE_ROOT"; };
+ D6D2E69C959FC3BD17220770 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
D6F2511A04A72954F91F6761 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitrate.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/bitrate.c"; sourceTree = "SOURCE_ROOT"; };
D7433453EBB3700D2805FF42 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; };
D773325946ED4F2F2A1285A0 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jfdctfst.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jfdctfst.c"; sourceTree = "SOURCE_ROOT"; };
D99B064D47C6B0FDDBC66B02,
ACE3FF969AC408A50E9A6A4C,
B1CA1F3AE7555C4FB4CE52D2,
+ 069AD628740BD9731986CDFC,
10EE0138720A51EBAD46FFCC,
A53F1F6AAA9F18823C239E6C,
C270737E2B85C6D98E145525, ); name = "format_types"; sourceTree = "<group>"; };
6493E8C53EE6361EEA57D243,
96E7B79CFB1B3EC9EC2505CD,
5B6A592439B2BEA9C6B14720,
+ D6D2E69C959FC3BD17220770,
+ C01972C590DF60155C0DEB02,
+ 5D4FF9B8DDE175EF5807AA2F,
E218E66CE4F1DDA0B9BED814,
559A2F8A7A121471D8026D81,
F3FCF5C0D92A2991A513B0D3,
HEADER_SEARCH_PATHS = ("\"~/SDKs/VST3 SDK\"", "../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.roli.pluginhost;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="NTe0XB0ij" name="Plugin Host" projectType="guiapp" version="1.0.0"\r
juceFolder="../../../juce" vstFolderMac="~/SDKs/vstsdk2.4" vstFolderPC="c:\SDKs\vstsdk2.4"\r
- bundleIdentifier="com.roli.pluginhost" jucerVersion="4.2.3" companyName="ROLI Ltd."\r
+ bundleIdentifier="com.roli.pluginhost" jucerVersion="4.2.4" companyName="ROLI Ltd."\r
includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="" rtasFolder="~/SDKs/PT_80_SDK"\r
{\r
ScopedPointer<XmlElement> xml (createXml());\r
\r
- if (! xml->writeToFile (file, String::empty))\r
+ if (! xml->writeToFile (file, String()))\r
return Result::fail ("Couldn't write to the file");\r
\r
return Result::ok();\r
\r
if (draggingConnector != nullptr)\r
{\r
- draggingConnector->setTooltip (String::empty);\r
+ draggingConnector->setTooltip (String());\r
\r
int x = e2.x;\r
int y = e2.y;\r
if (draggingConnector == nullptr)\r
return;\r
\r
- draggingConnector->setTooltip (String::empty);\r
+ draggingConnector->setTooltip (String());\r
\r
const MouseEvent e2 (e.getEventRelativeTo (this));\r
\r
//==============================================================================\r
GraphDocumentComponent::GraphDocumentComponent (AudioPluginFormatManager& formatManager,\r
AudioDeviceManager* deviceManager_)\r
- : graph (formatManager), deviceManager (deviceManager_),\r
+ : graph (new FilterGraph (formatManager)), deviceManager (deviceManager_),\r
graphPlayer (getAppProperties().getUserSettings()->getBoolValue ("doublePrecisionProcessing", false))\r
{\r
- addAndMakeVisible (graphPanel = new GraphEditorPanel (graph));\r
+ addAndMakeVisible (graphPanel = new GraphEditorPanel (*graph));\r
\r
deviceManager->addChangeListener (graphPanel);\r
\r
- graphPlayer.setProcessor (&graph.getGraph());\r
+ graphPlayer.setProcessor (&graph->getGraph());\r
\r
keyState.addListener (&graphPlayer.getMidiMessageCollector());\r
\r
addAndMakeVisible (statusBar = new TooltipBar());\r
\r
deviceManager->addAudioCallback (&graphPlayer);\r
- deviceManager->addMidiInputCallback (String::empty, &graphPlayer.getMidiMessageCollector());\r
+ deviceManager->addMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector());\r
\r
graphPanel->updateComponents();\r
}\r
\r
GraphDocumentComponent::~GraphDocumentComponent()\r
{\r
- deviceManager->removeAudioCallback (&graphPlayer);\r
- deviceManager->removeMidiInputCallback (String::empty, &graphPlayer.getMidiMessageCollector());\r
- deviceManager->removeChangeListener (graphPanel);\r
+ releaseGraph();\r
\r
- deleteAllChildren();\r
-\r
- graphPlayer.setProcessor (nullptr);\r
keyState.removeListener (&graphPlayer.getMidiMessageCollector());\r
-\r
- graph.clear();\r
}\r
\r
void GraphDocumentComponent::resized()\r
{\r
graphPanel->createNewPlugin (desc, x, y);\r
}\r
+\r
+void GraphDocumentComponent::unfocusKeyboardComponent()\r
+{\r
+ keyboardComp->unfocusAllComponents();\r
+}\r
+\r
+void GraphDocumentComponent::releaseGraph()\r
+{\r
+ deviceManager->removeAudioCallback (&graphPlayer);\r
+ deviceManager->removeMidiInputCallback (String(), &graphPlayer.getMidiMessageCollector());\r
+ deviceManager->removeChangeListener (graphPanel);\r
+\r
+ deleteAllChildren();\r
+\r
+ graphPlayer.setProcessor (nullptr);\r
+ graph = nullptr;\r
+}\r
inline void setDoublePrecision (bool doublePrecision) { graphPlayer.setDoublePrecisionProcessing (doublePrecision); }\r
\r
//==============================================================================\r
- FilterGraph graph;\r
+ ScopedPointer<FilterGraph> graph;\r
\r
//==============================================================================\r
void resized();\r
\r
+ //==============================================================================\r
+ void unfocusKeyboardComponent();\r
+\r
+ //==============================================================================\r
+ void releaseGraph();\r
+\r
private:\r
//==============================================================================\r
AudioDeviceManager* deviceManager;\r
\r
if (fileToOpen.existsAsFile())\r
if (GraphDocumentComponent* graph = mainWindow->getGraphEditor())\r
- graph->graph.loadFrom (fileToOpen, true);\r
+ if (FilterGraph* ioGraph = graph->graph.get())\r
+ ioGraph->loadFrom (fileToOpen, true);\r
}\r
\r
void shutdown() override\r
->getIntValue ("pluginSortMethod", KnownPluginList::sortByManufacturer);\r
\r
knownPluginList.addChangeListener (this);\r
- getGraphEditor()->graph.addChangeListener (this);\r
+\r
+ if (FilterGraph* filterGraph = getGraphEditor()->graph.get())\r
+ filterGraph->addChangeListener (this);\r
\r
addKeyListener (getCommandManager().getKeyMappings());\r
\r
MainHostWindow::~MainHostWindow()\r
{\r
pluginListWindow = nullptr;\r
+ knownPluginList.removeChangeListener (this);\r
+\r
+ if (FilterGraph* filterGraph = getGraphEditor()->graph.get())\r
+ filterGraph->removeChangeListener (this);\r
+\r
+ getAppProperties().getUserSettings()->setValue ("mainWindowPos", getWindowStateAsString());\r
+ clearContentComponent();\r
\r
#if JUCE_MAC\r
setMacMainMenu (nullptr);\r
#else\r
setMenuBar (nullptr);\r
#endif\r
-\r
- knownPluginList.removeChangeListener (this);\r
- getGraphEditor()->graph.removeChangeListener (this);\r
-\r
- getAppProperties().getUserSettings()->setValue ("mainWindowPos", getWindowStateAsString());\r
- clearContentComponent();\r
}\r
\r
void MainHostWindow::closeButtonPressed()\r
PluginWindow::closeAllCurrentlyOpenWindows();\r
\r
if (getGraphEditor() == nullptr\r
- || getGraphEditor()->graph.saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
+ || getGraphEditor()->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
{\r
+ // Some plug-ins do not want [NSApp stop] to be called\r
+ // before the plug-ins are not deallocated.\r
+ getGraphEditor()->releaseGraph();\r
+\r
JUCEApplication::quit();\r
return true;\r
}\r
getAppProperties().saveIfNeeded();\r
}\r
}\r
- else if (changed == &getGraphEditor()->graph)\r
+ else if (changed == getGraphEditor()->graph)\r
{\r
String title = JUCEApplication::getInstance()->getApplicationName();\r
\r
- File f = getGraphEditor()->graph.getFile();\r
+ File f = getGraphEditor()->graph->getFile();\r
\r
if (f.existsAsFile())\r
title = f.getFileName() + " - " + title;\r
if (menuItemID == 250)\r
{\r
if (graphEditor != nullptr)\r
- graphEditor->graph.clear();\r
+ if (FilterGraph* filterGraph = getGraphEditor()->graph.get())\r
+ filterGraph->clear();\r
}\r
else if (menuItemID >= 100 && menuItemID < 200)\r
{\r
recentFiles.restoreFromString (getAppProperties().getUserSettings()\r
->getValue ("recentFilterGraphFiles"));\r
\r
- if (graphEditor != nullptr && graphEditor->graph.saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
- graphEditor->graph.loadFrom (recentFiles.getFile (menuItemID - 100), true);\r
+ if (graphEditor != nullptr\r
+ && getGraphEditor()->graph != nullptr\r
+ && graphEditor->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
+ graphEditor->graph->loadFrom (recentFiles.getFile (menuItemID - 100), true);\r
}\r
else if (menuItemID >= 200 && menuItemID < 210)\r
{\r
}\r
}\r
\r
+void MainHostWindow::menuBarActivated (bool isActivated)\r
+{\r
+ GraphDocumentComponent* const graphEditor = getGraphEditor();\r
+\r
+ if (graphEditor != nullptr && isActivated)\r
+ graphEditor->unfocusKeyboardComponent();\r
+}\r
+\r
void MainHostWindow::createPlugin (const PluginDescription* desc, int x, int y)\r
{\r
GraphDocumentComponent* const graphEditor = getGraphEditor();\r
break;\r
\r
case CommandIDs::showPluginListEditor:\r
- result.setInfo ("Edit the list of available plug-Ins...", String::empty, category, 0);\r
+ result.setInfo ("Edit the list of available plug-Ins...", String(), category, 0);\r
result.addDefaultKeypress ('p', ModifierKeys::commandModifier);\r
break;\r
\r
case CommandIDs::showAudioSettings:\r
- result.setInfo ("Change the audio device settings", String::empty, category, 0);\r
+ result.setInfo ("Change the audio device settings", String(), category, 0);\r
result.addDefaultKeypress ('a', ModifierKeys::commandModifier);\r
break;\r
\r
break;\r
\r
case CommandIDs::aboutBox:\r
- result.setInfo ("About...", String::empty, category, 0);\r
+ result.setInfo ("About...", String(), category, 0);\r
break;\r
\r
case CommandIDs::allWindowsForward:\r
switch (info.commandID)\r
{\r
case CommandIDs::newFile:\r
- if (graphEditor != nullptr && graphEditor->graph.saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
- graphEditor->graph.newDocument();\r
+ if (graphEditor != nullptr && graphEditor->graph != nullptr && graphEditor->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
+ graphEditor->graph->newDocument();\r
break;\r
\r
case CommandIDs::open:\r
- if (graphEditor != nullptr && graphEditor->graph.saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
- graphEditor->graph.loadFromUserSpecifiedFile (true);\r
+ if (graphEditor != nullptr && graphEditor->graph != nullptr && graphEditor->graph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
+ graphEditor->graph->loadFromUserSpecifiedFile (true);\r
break;\r
\r
case CommandIDs::save:\r
- if (graphEditor != nullptr)\r
- graphEditor->graph.save (true, true);\r
+ if (graphEditor != nullptr && graphEditor->graph != nullptr)\r
+ graphEditor->graph->save (true, true);\r
break;\r
\r
case CommandIDs::saveAs:\r
- if (graphEditor != nullptr)\r
- graphEditor->graph.saveAs (File::nonexistent, true, true, true);\r
+ if (graphEditor != nullptr && graphEditor->graph != nullptr)\r
+ graphEditor->graph->saveAs (File(), true, true, true);\r
break;\r
\r
case CommandIDs::showPluginListEditor:\r
\r
GraphDocumentComponent* const graphEditor = getGraphEditor();\r
\r
- if (graphEditor != nullptr)\r
- graphEditor->graph.removeIllegalConnections();\r
+ if (graphEditor != nullptr && graphEditor->graph != nullptr)\r
+ graphEditor->graph->removeIllegalConnections();\r
}\r
\r
bool MainHostWindow::isInterestedInFileDrag (const StringArray&)\r
{\r
if (files.size() == 1 && File (files[0]).hasFileExtension (filenameSuffix))\r
{\r
- if (graphEditor->graph.saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
- graphEditor->graph.loadFrom (File (files[0]), true);\r
+ if (FilterGraph* filterGraph = graphEditor->graph.get())\r
+ if (filterGraph->saveIfNeededAndUserAgrees() == FileBasedDocument::savedOk)\r
+ filterGraph->loadFrom (File (files[0]), true);\r
}\r
else\r
{\r
\r
void MainHostWindow::updatePrecisionMenuItem (ApplicationCommandInfo& info)\r
{\r
- info.setInfo ("Double floating point precision rendering", String::empty, "General", 0);\r
+ info.setInfo ("Double floating point precision rendering", String(), "General", 0);\r
info.setTicked (isDoublePrecisionProcessing());\r
}\r
void fileDragExit (const StringArray& files);\r
void filesDropped (const StringArray& files, int, int);\r
\r
+ void menuBarActivated (bool isActive);\r
+\r
StringArray getMenuBarNames();\r
PopupMenu getMenuForIndex (int topLevelMenuIndex, const String& menuName);\r
void menuItemSelected (int menuItemID, int topLevelMenuIndex);\r
\r
<JUCERPROJECT id="AKfc5m" name="AudioPerformanceTest" projectType="guiapp"\r
version="1.0.0" bundleIdentifier="com.juce.AudioPerformanceTest"\r
- includeBinaryInAppConfig="1" jucerVersion="4.2.3">\r
+ includeBinaryInAppConfig="1" jucerVersion="4.2.4">\r
<MAINGROUP id="b1eVTe" name="AudioPerformanceTest">\r
<GROUP id="{AB66118C-9D88-1C3A-D95C-42892D828E4B}" name="Source">\r
<FILE id="SqGU9p" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := AudioPerformanceTest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := AudioPerformanceTest\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_audio_utils_c7eb679f.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking AudioPerformanceTest\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning AudioPerformanceTest\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping AudioPerformanceTest\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_utils_c7eb679f.o: ../../JuceLibraryCode/juce_audio_utils.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_utils.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
90BCC51EEB48DE909139B357 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; };
914D99CE5915E7B68BB47EEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BluetoothMidiDevicePairingDialogue.h"; path = "../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h"; sourceTree = "SOURCE_ROOT"; };
9156CF6C64EE06DB55B57572 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 915E7E2F19B34D7C2817FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
9163D3EF55AD0B2B197493EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
917260F53ED8BE9007BBD18A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c"; sourceTree = "SOURCE_ROOT"; };
91EA75E4BBE8A87A9618D202 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
958486C51C2FDFD3734B281C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
95999D007040ED6D71F707F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; };
96465102CA605250058AC064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
+ 964FF8CC7674C99B3BDA19C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
965C305E056C8DE917F22585 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; };
975F037FB7CE738278E88884 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = export.h; path = "../../../../modules/juce_audio_formats/codecs/flac/export.h"; sourceTree = "SOURCE_ROOT"; };
97C2FBD16505F28651574ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; };
BFED281053143D5D8C5218DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; };
BFFBF9E6ED32BDB7AF3DAA06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inffast.h; path = "../../../../modules/juce_core/zip/zlib/inffast.h"; sourceTree = "SOURCE_ROOT"; };
C03BC1AFDCE495377D00ECBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
+ C06642951FB2BCAC1BFFC1DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
C0BEF915D866FC6F9D28B4B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
C0C5B5C34349FD6B152E5B3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C0EE1D9B98C8AD2A1D605827 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
C1DE13DF18998D7583EB6C05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = "../../../../modules/juce_core/zip/zlib/zlib.h"; sourceTree = "SOURCE_ROOT"; };
C2386580F272DD8DA717AC5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
C28CB68C6B675F148A21EB5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C2C33484B546D89717341A07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
C2C6FDE8DDAFD2F83CB01949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = "../../../../modules/juce_core/zip/zlib/uncompr.c"; sourceTree = "SOURCE_ROOT"; };
C320A90C1F0F7C133C0C6C1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; };
C34F15FED2D289A1AC6D85A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; };
3DC079D7D7EFDF308DC44D4F,
A5EF5FDF979BC1FF68D3EA33,
8F9FE852D4F12052C098EECE,
+ 915E7E2F19B34D7C2817FC67,
45333ACAF454F661FC30924E,
123831F52D2C1E9A68B75613,
B8B0992FEC384EAE2FC83B39, ); name = "format_types"; sourceTree = "<group>"; };
07FFF8B1683CC2595613F38C,
83205FE6737B51491CAF017F,
89021205A4D054ED8FB19640,
+ C2C33484B546D89717341A07,
+ C06642951FB2BCAC1BFFC1DF,
+ 964FF8CC7674C99B3BDA19C3,
7DE749651A85480E34E2D909,
2B7BFB3838421DA82147C48E,
F5330B527A064EF5B090EBF5,
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
INSTALL_PATH = "$(HOME)/Applications";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.juce.AudioPerformanceTest;
SDKROOT_ppc = macosx10.5; }; name = Release; };
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
90BCC51EEB48DE909139B357 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenSL.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_OpenSL.cpp"; sourceTree = "SOURCE_ROOT"; };
914D99CE5915E7B68BB47EEB = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BluetoothMidiDevicePairingDialogue.h"; path = "../../../../modules/juce_audio_utils/gui/juce_BluetoothMidiDevicePairingDialogue.h"; sourceTree = "SOURCE_ROOT"; };
9156CF6C64EE06DB55B57572 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WebBrowserComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_WebBrowserComponent.h"; sourceTree = "SOURCE_ROOT"; };
+ 915E7E2F19B34D7C2817FC67 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
9163D3EF55AD0B2B197493EC = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctflt.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jidctflt.c"; sourceTree = "SOURCE_ROOT"; };
917260F53ED8BE9007BBD18A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jddctmgr.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jddctmgr.c"; sourceTree = "SOURCE_ROOT"; };
91EA75E4BBE8A87A9618D202 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
958486C51C2FDFD3734B281C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_processors.mm"; path = "../../../../modules/juce_audio_processors/juce_audio_processors.mm"; sourceTree = "SOURCE_ROOT"; };
95999D007040ED6D71F707F7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorGraph.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp"; sourceTree = "SOURCE_ROOT"; };
96465102CA605250058AC064 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; };
+ 964FF8CC7674C99B3BDA19C3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
965C305E056C8DE917F22585 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; };
975F037FB7CE738278E88884 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = export.h; path = "../../../../modules/juce_audio_formats/codecs/flac/export.h"; sourceTree = "SOURCE_ROOT"; };
97C2FBD16505F28651574ED4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; };
BFED281053143D5D8C5218DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_NSViewComponentPeer.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm"; sourceTree = "SOURCE_ROOT"; };
BFFBF9E6ED32BDB7AF3DAA06 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = inffast.h; path = "../../../../modules/juce_core/zip/zlib/inffast.h"; sourceTree = "SOURCE_ROOT"; };
C03BC1AFDCE495377D00ECBD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; };
+ C06642951FB2BCAC1BFFC1DF = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
C0BEF915D866FC6F9D28B4B1 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioProcessorEditor.cpp"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp"; sourceTree = "SOURCE_ROOT"; };
C0C5B5C34349FD6B152E5B3B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
C0EE1D9B98C8AD2A1D605827 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioAppComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioAppComponent.h"; sourceTree = "SOURCE_ROOT"; };
C1DE13DF18998D7583EB6C05 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = zlib.h; path = "../../../../modules/juce_core/zip/zlib/zlib.h"; sourceTree = "SOURCE_ROOT"; };
C2386580F272DD8DA717AC5F = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSampleBuffer.h"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.h"; sourceTree = "SOURCE_ROOT"; };
C28CB68C6B675F148A21EB5A = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_XMLCodeTokeniser.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp"; sourceTree = "SOURCE_ROOT"; };
+ C2C33484B546D89717341A07 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
C2C6FDE8DDAFD2F83CB01949 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = uncompr.c; path = "../../../../modules/juce_core/zip/zlib/uncompr.c"; sourceTree = "SOURCE_ROOT"; };
C320A90C1F0F7C133C0C6C1B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; };
C34F15FED2D289A1AC6D85A2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; };
3DC079D7D7EFDF308DC44D4F,
A5EF5FDF979BC1FF68D3EA33,
8F9FE852D4F12052C098EECE,
+ 915E7E2F19B34D7C2817FC67,
45333ACAF454F661FC30924E,
123831F52D2C1E9A68B75613,
B8B0992FEC384EAE2FC83B39, ); name = "format_types"; sourceTree = "<group>"; };
07FFF8B1683CC2595613F38C,
83205FE6737B51491CAF017F,
89021205A4D054ED8FB19640,
+ C2C33484B546D89717341A07,
+ C06642951FB2BCAC1BFFC1DF,
+ 964FF8CC7674C99B3BDA19C3,
7DE749651A85480E34E2D909,
2B7BFB3838421DA82147C48E,
F5330B527A064EF5B090EBF5,
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "AudioPerformanceTest";
SDKROOT = iphoneos;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
PRODUCT_NAME = "AudioPerformanceTest";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.3 -DJUCE_APP_VERSION_HEX=0x40203 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 -std=c++11\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt -lcurl \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.4 -DJUCE_APP_VERSION_HEX=0x40204 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 -std=c++11\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := Projucer\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.3 -DJUCE_APP_VERSION_HEX=0x40203 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 -std=c++11\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt -lcurl \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=4.2.4 -DJUCE_APP_VERSION_HEX=0x40204 $(shell pkg-config --cflags freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 -std=c++11\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs freetype2 libcurl x11 xext xinerama) -ldl -lpthread -lrt \r
\r
TARGET := Projucer\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/jucer_AppearanceSettings_788d9889.o \\r
- $(OBJDIR)/jucer_AutoUpdater_ca658dc2.o \\r
- $(OBJDIR)/jucer_CommandLine_f35de107.o \\r
- $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \\r
- $(OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o \\r
- $(OBJDIR)/jucer_Main_f8488f5b.o \\r
- $(OBJDIR)/jucer_MainWindow_1e163aeb.o \\r
- $(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \\r
- $(OBJDIR)/projucer_CompileEngineClient_542e6b2d.o \\r
- $(OBJDIR)/projucer_CompileEngineServer_a5a32aa5.o \\r
- $(OBJDIR)/jucer_SourceCodeEditor_461f5487.o \\r
- $(OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o \\r
- $(OBJDIR)/jucer_ButtonDocument_56c341cc.o \\r
- $(OBJDIR)/jucer_ComponentDocument_92868083.o \\r
- $(OBJDIR)/jucer_ColouredElement_70cbc839.o \\r
- $(OBJDIR)/jucer_PaintElement_653460.o \\r
- $(OBJDIR)/jucer_PaintElementPath_908894a5.o \\r
- $(OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o \\r
- $(OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o \\r
- $(OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o \\r
- $(OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o \\r
- $(OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o \\r
- $(OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o \\r
- $(OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o \\r
- $(OBJDIR)/jucer_TestComponent_db757dc4.o \\r
- $(OBJDIR)/jucer_BinaryResources_e0f99b46.o \\r
- $(OBJDIR)/jucer_ComponentLayout_6ea00129.o \\r
- $(OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o \\r
- $(OBJDIR)/jucer_JucerDocument_ff8afcc2.o \\r
- $(OBJDIR)/jucer_ObjectTypes_4406f01c.o \\r
- $(OBJDIR)/jucer_PaintRoutine_e1e891ee.o \\r
- $(OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o \\r
- $(OBJDIR)/jucer_Module_3f7666a5.o \\r
- $(OBJDIR)/jucer_Project_c131864a.o \\r
- $(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o \\r
- $(OBJDIR)/jucer_ProjectSaver_38b16c25.o \\r
- $(OBJDIR)/jucer_ResourceFile_6af120d3.o \\r
- $(OBJDIR)/jucer_CodeHelpers_c317179c.o \\r
- $(OBJDIR)/jucer_FileHelpers_f98ed0ad.o \\r
- $(OBJDIR)/jucer_Icons_9db2f51e.o \\r
- $(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o \\r
- $(OBJDIR)/jucer_MiscUtilities_25b68c82.o \\r
- $(OBJDIR)/jucer_ProjucerLookAndFeel_d6c6b28a.o \\r
- $(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o \\r
- $(OBJDIR)/jucer_StoredSettings_26078d2c.o \\r
- $(OBJDIR)/jucer_NewFileWizard_fac97f47.o \\r
- $(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o \\r
- $(OBJDIR)/BinaryData_ce4232d4.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/jucer_AppearanceSettings_788d9889.o \\r
+ $(JUCE_OBJDIR)/jucer_AutoUpdater_ca658dc2.o \\r
+ $(JUCE_OBJDIR)/jucer_CommandLine_f35de107.o \\r
+ $(JUCE_OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \\r
+ $(JUCE_OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o \\r
+ $(JUCE_OBJDIR)/jucer_Main_f8488f5b.o \\r
+ $(JUCE_OBJDIR)/jucer_MainWindow_1e163aeb.o \\r
+ $(JUCE_OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \\r
+ $(JUCE_OBJDIR)/projucer_CompileEngineClient_542e6b2d.o \\r
+ $(JUCE_OBJDIR)/projucer_CompileEngineServer_a5a32aa5.o \\r
+ $(JUCE_OBJDIR)/jucer_SourceCodeEditor_461f5487.o \\r
+ $(JUCE_OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o \\r
+ $(JUCE_OBJDIR)/jucer_ButtonDocument_56c341cc.o \\r
+ $(JUCE_OBJDIR)/jucer_ComponentDocument_92868083.o \\r
+ $(JUCE_OBJDIR)/jucer_ColouredElement_70cbc839.o \\r
+ $(JUCE_OBJDIR)/jucer_PaintElement_653460.o \\r
+ $(JUCE_OBJDIR)/jucer_PaintElementPath_908894a5.o \\r
+ $(JUCE_OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o \\r
+ $(JUCE_OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o \\r
+ $(JUCE_OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o \\r
+ $(JUCE_OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o \\r
+ $(JUCE_OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o \\r
+ $(JUCE_OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o \\r
+ $(JUCE_OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o \\r
+ $(JUCE_OBJDIR)/jucer_TestComponent_db757dc4.o \\r
+ $(JUCE_OBJDIR)/jucer_BinaryResources_e0f99b46.o \\r
+ $(JUCE_OBJDIR)/jucer_ComponentLayout_6ea00129.o \\r
+ $(JUCE_OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o \\r
+ $(JUCE_OBJDIR)/jucer_JucerDocument_ff8afcc2.o \\r
+ $(JUCE_OBJDIR)/jucer_ObjectTypes_4406f01c.o \\r
+ $(JUCE_OBJDIR)/jucer_PaintRoutine_e1e891ee.o \\r
+ $(JUCE_OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o \\r
+ $(JUCE_OBJDIR)/jucer_Module_3f7666a5.o \\r
+ $(JUCE_OBJDIR)/jucer_Project_c131864a.o \\r
+ $(JUCE_OBJDIR)/jucer_ProjectExporter_eefe2e5b.o \\r
+ $(JUCE_OBJDIR)/jucer_ProjectSaver_38b16c25.o \\r
+ $(JUCE_OBJDIR)/jucer_ResourceFile_6af120d3.o \\r
+ $(JUCE_OBJDIR)/jucer_CodeHelpers_c317179c.o \\r
+ $(JUCE_OBJDIR)/jucer_FileHelpers_f98ed0ad.o \\r
+ $(JUCE_OBJDIR)/jucer_Icons_9db2f51e.o \\r
+ $(JUCE_OBJDIR)/jucer_JucerTreeViewBase_d043309d.o \\r
+ $(JUCE_OBJDIR)/jucer_MiscUtilities_25b68c82.o \\r
+ $(JUCE_OBJDIR)/jucer_ProjucerLookAndFeel_d6c6b28a.o \\r
+ $(JUCE_OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o \\r
+ $(JUCE_OBJDIR)/jucer_StoredSettings_26078d2c.o \\r
+ $(JUCE_OBJDIR)/jucer_NewFileWizard_fac97f47.o \\r
+ $(JUCE_OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o \\r
+ $(JUCE_OBJDIR)/BinaryData_ce4232d4.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking Projucer\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning Projucer\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping Projucer\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/jucer_AppearanceSettings_788d9889.o: ../../Source/Application/jucer_AppearanceSettings.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_AppearanceSettings_788d9889.o: ../../Source/Application/jucer_AppearanceSettings.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_AppearanceSettings.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_AutoUpdater_ca658dc2.o: ../../Source/Application/jucer_AutoUpdater.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_AutoUpdater_ca658dc2.o: ../../Source/Application/jucer_AutoUpdater.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_AutoUpdater.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_CommandLine_f35de107.o: ../../Source/Application/jucer_CommandLine.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_CommandLine_f35de107.o: ../../Source/Application/jucer_CommandLine.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_CommandLine.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o: ../../Source/Application/jucer_DocumentEditorComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o: ../../Source/Application/jucer_DocumentEditorComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_DocumentEditorComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o: ../../Source/Application/jucer_GlobalPreferences.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_GlobalPreferences_b0f1bd3d.o: ../../Source/Application/jucer_GlobalPreferences.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_GlobalPreferences.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_Main_f8488f5b.o: ../../Source/Application/jucer_Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_Main_f8488f5b.o: ../../Source/Application/jucer_Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_MainWindow_1e163aeb.o: ../../Source/Application/jucer_MainWindow.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_MainWindow_1e163aeb.o: ../../Source/Application/jucer_MainWindow.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_MainWindow.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o: ../../Source/Application/jucer_OpenDocumentManager.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_OpenDocumentManager_4c72d210.o: ../../Source/Application/jucer_OpenDocumentManager.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_OpenDocumentManager.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/projucer_CompileEngineClient_542e6b2d.o: ../../Source/LiveBuildEngine/projucer_CompileEngineClient.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/projucer_CompileEngineClient_542e6b2d.o: ../../Source/LiveBuildEngine/projucer_CompileEngineClient.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling projucer_CompileEngineClient.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/projucer_CompileEngineServer_a5a32aa5.o: ../../Source/LiveBuildEngine/projucer_CompileEngineServer.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/projucer_CompileEngineServer_a5a32aa5.o: ../../Source/LiveBuildEngine/projucer_CompileEngineServer.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling projucer_CompileEngineServer.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o: ../../Source/Code\ Editor/jucer_SourceCodeEditor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_SourceCodeEditor_461f5487.o: ../../Source/Code\ Editor/jucer_SourceCodeEditor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_SourceCodeEditor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o: ../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o: ../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ComponentTypeHandler.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ButtonDocument_56c341cc.o: ../../Source/ComponentEditor/documents/jucer_ButtonDocument.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ButtonDocument_56c341cc.o: ../../Source/ComponentEditor/documents/jucer_ButtonDocument.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ButtonDocument.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ComponentDocument_92868083.o: ../../Source/ComponentEditor/documents/jucer_ComponentDocument.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ComponentDocument_92868083.o: ../../Source/ComponentEditor/documents/jucer_ComponentDocument.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ComponentDocument.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ColouredElement_70cbc839.o: ../../Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ColouredElement_70cbc839.o: ../../Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ColouredElement.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_PaintElement_653460.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_PaintElement_653460.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_PaintElement.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_PaintElementPath_908894a5.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_PaintElementPath_908894a5.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_PaintElementPath.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o: ../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o: ../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ComponentLayoutEditor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o: ../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o: ../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ComponentOverlayComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o: ../../Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o: ../../Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_EditingPanelBase.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o: ../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o: ../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_JucerDocumentEditor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_PaintRoutineEditor.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_PaintRoutinePanel.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o: ../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o: ../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ResourceEditorPanel.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_TestComponent_db757dc4.o: ../../Source/ComponentEditor/ui/jucer_TestComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_TestComponent_db757dc4.o: ../../Source/ComponentEditor/ui/jucer_TestComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_TestComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_BinaryResources_e0f99b46.o: ../../Source/ComponentEditor/jucer_BinaryResources.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_BinaryResources_e0f99b46.o: ../../Source/ComponentEditor/jucer_BinaryResources.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_BinaryResources.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ComponentLayout_6ea00129.o: ../../Source/ComponentEditor/jucer_ComponentLayout.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ComponentLayout_6ea00129.o: ../../Source/ComponentEditor/jucer_ComponentLayout.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ComponentLayout.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o: ../../Source/ComponentEditor/jucer_GeneratedCode.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o: ../../Source/ComponentEditor/jucer_GeneratedCode.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_GeneratedCode.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_JucerDocument_ff8afcc2.o: ../../Source/ComponentEditor/jucer_JucerDocument.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_JucerDocument_ff8afcc2.o: ../../Source/ComponentEditor/jucer_JucerDocument.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_JucerDocument.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ObjectTypes_4406f01c.o: ../../Source/ComponentEditor/jucer_ObjectTypes.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ObjectTypes_4406f01c.o: ../../Source/ComponentEditor/jucer_ObjectTypes.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ObjectTypes.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_PaintRoutine_e1e891ee.o: ../../Source/ComponentEditor/jucer_PaintRoutine.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_PaintRoutine_e1e891ee.o: ../../Source/ComponentEditor/jucer_PaintRoutine.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_PaintRoutine.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o: ../../Source/Project/jucer_DependencyPathPropertyComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_DependencyPathPropertyComponent_4d137229.o: ../../Source/Project/jucer_DependencyPathPropertyComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_DependencyPathPropertyComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_Module.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_Project_c131864a.o: ../../Source/Project/jucer_Project.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_Project_c131864a.o: ../../Source/Project/jucer_Project.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_Project.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o: ../../Source/Project\ Saving/jucer_ProjectExporter.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ProjectExporter_eefe2e5b.o: ../../Source/Project\ Saving/jucer_ProjectExporter.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ProjectExporter.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ProjectSaver_38b16c25.o: ../../Source/Project\ Saving/jucer_ProjectSaver.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ProjectSaver_38b16c25.o: ../../Source/Project\ Saving/jucer_ProjectSaver.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ProjectSaver.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ResourceFile_6af120d3.o: ../../Source/Project\ Saving/jucer_ResourceFile.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ResourceFile_6af120d3.o: ../../Source/Project\ Saving/jucer_ResourceFile.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ResourceFile.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_CodeHelpers_c317179c.o: ../../Source/Utility/jucer_CodeHelpers.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_CodeHelpers_c317179c.o: ../../Source/Utility/jucer_CodeHelpers.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_CodeHelpers.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_FileHelpers_f98ed0ad.o: ../../Source/Utility/jucer_FileHelpers.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_FileHelpers_f98ed0ad.o: ../../Source/Utility/jucer_FileHelpers.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_FileHelpers.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_Icons_9db2f51e.o: ../../Source/Utility/jucer_Icons.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_Icons_9db2f51e.o: ../../Source/Utility/jucer_Icons.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_Icons.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o: ../../Source/Utility/jucer_JucerTreeViewBase.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_JucerTreeViewBase_d043309d.o: ../../Source/Utility/jucer_JucerTreeViewBase.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_JucerTreeViewBase.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_MiscUtilities_25b68c82.o: ../../Source/Utility/jucer_MiscUtilities.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_MiscUtilities_25b68c82.o: ../../Source/Utility/jucer_MiscUtilities.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_MiscUtilities.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_ProjucerLookAndFeel_d6c6b28a.o: ../../Source/Utility/jucer_ProjucerLookAndFeel.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_ProjucerLookAndFeel_d6c6b28a.o: ../../Source/Utility/jucer_ProjucerLookAndFeel.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_ProjucerLookAndFeel.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o: ../../Source/Utility/jucer_SlidingPanelComponent.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o: ../../Source/Utility/jucer_SlidingPanelComponent.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_SlidingPanelComponent.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_StoredSettings_26078d2c.o: ../../Source/Utility/jucer_StoredSettings.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_StoredSettings_26078d2c.o: ../../Source/Utility/jucer_StoredSettings.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_StoredSettings.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_NewFileWizard_fac97f47.o: ../../Source/Wizards/jucer_NewFileWizard.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_NewFileWizard_fac97f47.o: ../../Source/Wizards/jucer_NewFileWizard.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_NewFileWizard.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o: ../../Source/Wizards/jucer_NewProjectWizardClasses.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o: ../../Source/Wizards/jucer_NewProjectWizardClasses.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling jucer_NewProjectWizardClasses.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling BinaryData.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
<key>CFBundleSignature</key>\r
<string>????</string>\r
<key>CFBundleShortVersionString</key>\r
- <string>4.2.3</string>\r
+ <string>4.2.4</string>\r
<key>CFBundleVersion</key>\r
- <string>4.2.3</string>\r
+ <string>4.2.4</string>\r
<key>NSHumanReadableCopyright</key>\r
<string></string>\r
<key>NSHighResolutionCapable</key>\r
202591AAB1ABCFE458F33F7C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_DrawableButton.cpp"; sourceTree = "SOURCE_ROOT"; };
203CF0F8F72A516BB1CC5422 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LookAndFeel_V2.h"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h"; sourceTree = "SOURCE_ROOT"; };
206D399250A42034706E5434 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToolbarButton.h"; sourceTree = "SOURCE_ROOT"; };
+ 2096FFC554268580C39D036D = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
20FAAE9F3A7B96C2D8C75BB2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_SlidingPanelComponent.cpp"; path = "../../Source/Utility/jucer_SlidingPanelComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
20FC504E8FB8D30E890A9837 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChoicePropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h"; sourceTree = "SOURCE_ROOT"; };
2107C02B684C7F5B75662333 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Registry.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Registry.cpp"; sourceTree = "SOURCE_ROOT"; };
7519822C13AE752FE0E71999 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jdphuff.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jdphuff.c"; sourceTree = "SOURCE_ROOT"; };
75EB08697D38632CCBE734D8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; };
76439EAACE53C774CE07BD9E = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Toolbar.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Toolbar.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 76AC916858C8F84550167257 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
7723BAE1917C8A0418F2D23B = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextEditor.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.h"; sourceTree = "SOURCE_ROOT"; };
77B05CF7C9BB9778EC06C396 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyPress.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyPress.h"; sourceTree = "SOURCE_ROOT"; };
77CA70448B5AB9C0EF12D2BD = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = png.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/png.c"; sourceTree = "SOURCE_ROOT"; };
BDEBB0AC32DDA8C16FFE6011 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TooltipClient.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_TooltipClient.h"; sourceTree = "SOURCE_ROOT"; };
BE97579323E97AF084D41476 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; };
BF171B0762D5550B797869F2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Expression.h"; path = "../../../../modules/juce_core/maths/juce_Expression.h"; sourceTree = "SOURCE_ROOT"; };
+ BF1FA6FFE4F540CF723B31B4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
BF3CEF080FA013E2778DCE90 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_Project.h"; path = "../../Source/Project/jucer_Project.h"; sourceTree = "SOURCE_ROOT"; };
BF92CA3FD8F9A61AE358D151 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; };
BFD1891DABC7B4BD3C681A2E = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pngrio.c; path = "../../../../modules/juce_graphics/image_formats/pnglib/pngrio.c"; sourceTree = "SOURCE_ROOT"; };
AE3E427DBCC8D50E3F356402,
3DBB6D91397AE61D59C90510,
A9FA71357C5B2A46A75D9230,
+ 2096FFC554268580C39D036D,
+ 76AC916858C8F84550167257,
+ BF1FA6FFE4F540CF723B31B4,
6EE91491434D058606460AFB,
A8DB614600D348C730AC3930,
EA0D43AB5F47506D5CDA81BB,
"_DEBUG=1",
"DEBUG=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=4.2.3",
- "JUCE_APP_VERSION_HEX=0x40203", );
+ "JUCE_APP_VERSION=4.2.4",
+ "JUCE_APP_VERSION_HEX=0x40204", );
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INFOPLIST_FILE = Info-App.plist;
"_NDEBUG=1",
"NDEBUG=1",
"JUCER_XCODE_MAC_F6D2F4CF=1",
- "JUCE_APP_VERSION=4.2.3",
- "JUCE_APP_VERSION_HEX=0x40203", );
+ "JUCE_APP_VERSION=4.2.4",
+ "JUCE_APP_VERSION_HEX=0x40204", );
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
<Optimization>Disabled</Optimization>\r
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.4;JUCE_APP_VERSION_HEX=0x40204;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile>\r
<Optimization>Full</Optimization>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2013_78A5020=1;JUCE_APP_VERSION=4.2.4;JUCE_APP_VERSION_HEX=0x40204;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
#include <windows.h>\r
\r
VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION 4,2,3,0\r
+FILEVERSION 4,2,4,0\r
BEGIN\r
BLOCK "StringFileInfo"\r
BEGIN\r
BLOCK "040904E4"\r
BEGIN\r
VALUE "FileDescription", "Projucer\0"\r
- VALUE "FileVersion", "4.2.3\0"\r
+ VALUE "FileVersion", "4.2.4\0"\r
VALUE "ProductName", "Projucer\0"\r
- VALUE "ProductVersion", "4.2.3\0"\r
+ VALUE "ProductVersion", "4.2.4\0"\r
END\r
END\r
\r
<Optimization>Disabled</Optimization>\r
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.4;JUCE_APP_VERSION_HEX=0x40204;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile>\r
<Optimization>Full</Optimization>\r
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
- <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.3;JUCE_APP_VERSION_HEX=0x40203;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=4.2.4;JUCE_APP_VERSION_HEX=0x40204;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
<RuntimeTypeInfo>true</RuntimeTypeInfo>\r
<PrecompiledHeader/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
#include <windows.h>\r
\r
VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION 4,2,3,0\r
+FILEVERSION 4,2,4,0\r
BEGIN\r
BLOCK "StringFileInfo"\r
BEGIN\r
BLOCK "040904E4"\r
BEGIN\r
VALUE "FileDescription", "Projucer\0"\r
- VALUE "FileVersion", "4.2.3\0"\r
+ VALUE "FileVersion", "4.2.4\0"\r
VALUE "ProductName", "Projucer\0"\r
- VALUE "ProductVersion", "4.2.3\0"\r
+ VALUE "ProductVersion", "4.2.4\0"\r
END\r
END\r
\r
#define JUCE_USE_CURL 1\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
namespace ProjectInfo\r
{\r
const char* const projectName = "Projucer";\r
- const char* const versionString = "4.2.3";\r
- const int versionNumber = 0x40203;\r
+ const char* const versionString = "4.2.4";\r
+ const int versionNumber = 0x40204;\r
}\r
#endif\r
\r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="M70qfTRRk" name="Projucer" projectType="guiapp" juceFolder="../../juce"\r
- jucerVersion="4.2.3" version="4.2.3" bundleIdentifier="com.juce.theprojucer"\r
+ jucerVersion="4.2.4" version="4.2.4" bundleIdentifier="com.juce.theprojucer"\r
defines="" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" extraCompilerFlags="-std=c++11"\r
extraLinkerFlags="" bigIcon="OCyr5F" smallIcon="" vstFolder="">\r
<CONFIGURATIONS>\r
- <CONFIGURATION name="Debug" libraryPath="/usr/X11R6/lib/ " isDebug="1" optimisation="1"\r
- targetName="Projucer" headerPath=""/>\r
- <CONFIGURATION name="Release" libraryPath="/usr/X11R6/lib/ " isDebug="0"\r
- optimisation="3" targetName="Projucer" headerPath=""/>\r
+ <CONFIGURATION name="Debug" libraryPath="" isDebug="1" optimisation="1" targetName="Projucer"\r
+ headerPath=""/>\r
+ <CONFIGURATION name="Release" libraryPath="" isDebug="0" optimisation="3" targetName="Projucer"\r
+ headerPath=""/>\r
</CONFIGURATIONS>\r
<MODULEPATHS>\r
<MODULEPATH id="juce_gui_extra" path="../../modules"/>\r
<OSX headerPath="~/SDKs/llvm/include ~/SDKs/llvm/tools/clang/include"\r
enableCxx11="1" systemHeaderPath="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/4.2/include"/>\r
<WINDOWS enableCxx11="1"/>\r
+ <LINUX/>\r
</LIVE_SETTINGS>\r
</JUCERPROJECT>\r
bool AppearanceSettings::writeToFile (const File& file) const\r
{\r
const ScopedPointer<XmlElement> xml (settings.createXml());\r
- return xml != nullptr && xml->writeToFile (file, String::empty);\r
+ return xml != nullptr && xml->writeToFile (file, String());\r
}\r
\r
Font AppearanceSettings::getDefaultCodeFont()\r
startTimer (100);\r
}\r
\r
- void LatestVersionChecker::processResult (var reply, const String& downloadPath)\r
+ bool LatestVersionChecker::processResult (var reply, const String& downloadPath)\r
{\r
if (statusCode == 303)\r
{\r
String extraHeaders;\r
\r
URL newVersionToDownload = getLatestVersionURL (extraHeaders, downloadPath);\r
- askUserAboutNewVersion (version, releaseNotes, newVersionToDownload, extraHeaders);\r
+ return askUserAboutNewVersion (version, releaseNotes, newVersionToDownload, extraHeaders);\r
}\r
}\r
}\r
AlertWindow::showMessageBox (AlertWindow::WarningIcon,\r
TRANS("JUCE Updater"),\r
message);\r
+\r
+ return false;\r
}\r
}\r
}\r
+\r
+ // try again\r
+ return true;\r
}\r
\r
-void LatestVersionChecker::askUserAboutNewVersion (const LatestVersionChecker::JuceVersionTriple& version,\r
+bool LatestVersionChecker::askUserAboutNewVersion (const LatestVersionChecker::JuceVersionTriple& version,\r
const String& releaseNotes,\r
URL& newVersionToDownload,\r
const String& extraHeaders)\r
if (ModalComponentManager* mm = ModalComponentManager::getInstance())\r
mm->attachCallback (modalDialog, callback);\r
}\r
+\r
+ return false;\r
}\r
+\r
+ return true;\r
}\r
\r
void LatestVersionChecker::modalStateFinished (int result,\r
const String& extraHeaders,\r
File appParentFolder)\r
{\r
+\r
if (result == 1 || result == 2)\r
{\r
if (result == 1 || ! allowCustomLocation())\r
\r
if (hasAttemptedToReadWebsite)\r
{\r
+ bool restartTimer = true;\r
if (jsonReply.isObject())\r
- processResult (jsonReply, newRelativeDownloadPath);\r
+ restartTimer = processResult (jsonReply, newRelativeDownloadPath);\r
\r
hasAttemptedToReadWebsite = false;\r
- startTimer (7200000);\r
+\r
+ if (restartTimer)\r
+ startTimer (7200000);\r
}\r
else\r
{\r
URL getLatestVersionURL (String& headers) const;\r
\r
void checkForNewVersion();\r
- void processResult (var reply, const String& downloadPath);\r
+ bool processResult (var reply, const String& downloadPath);\r
\r
- void askUserAboutNewVersion (const JuceVersionTriple& version,\r
+ bool askUserAboutNewVersion (const JuceVersionTriple& version,\r
const String& releaseNotes,\r
URL& newVersionToDownload,\r
const String& extraHeaders);\r
\r
StoredSettings& settings = getAppSettings();\r
\r
- vst2PathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::vst2Path, os), "VST SDK", maxChars, false));\r
vst3PathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::vst3Path, os), "VST3 SDK", maxChars, false));\r
\r
#if ! JUCE_LINUX\r
\r
Identifier PathSettingsTab::getKeyForPropertyComponent (TextPropertyComponent* component) const\r
{\r
- if (component == vst2PathComponent) return Ids::vst2Path;\r
if (component == vst3PathComponent) return Ids::vst3Path;\r
if (component == rtasPathComponent) return Ids::rtasPath;\r
if (component == aaxPathComponent) return Ids::aaxPath;\r
\r
// this property component does not have a key associated to it!\r
jassertfalse;\r
- return String::empty;\r
+ return String();\r
}\r
\r
Component* PathSettingsTab::getContent()\r
\r
StringArray names;\r
names.add ("<Default Monospaced>");\r
- names.add (String::empty);\r
+ names.add (String());\r
names.addArray (getAppSettings().monospacedFontNames);\r
\r
return new ChoicePropertyComponent (Value (new FontNameValueSource (value)),\r
\r
OwnedArray<TextPropertyComponent> pathComponents;\r
\r
- TextPropertyComponent* vst2PathComponent;\r
TextPropertyComponent* vst3PathComponent;\r
TextPropertyComponent* rtasPathComponent;\r
TextPropertyComponent* aaxPathComponent;\r
pcc->updateMissingFileStatuses();\r
\r
ProjucerApplication::getApp().openDocumentManager.reloadModifiedFiles();\r
+\r
+ if (Project* p = getProject())\r
+ {\r
+ if (p->hasProjectBeenModified())\r
+ {\r
+ const int r = AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon,\r
+ TRANS ("The .jucer file has been modified since the last save."),\r
+ TRANS ("Do you want to keep the current project or re-load from disk?"),\r
+ TRANS ("Keep"),\r
+ TRANS ("Re-load from disk"));\r
+\r
+ if (r == 0)\r
+ {\r
+ File projectFile = p->getFile();\r
+ setProject (nullptr);\r
+ openFile (projectFile);\r
+ }\r
+ else if (r == 1)\r
+ {\r
+ ProjucerApplication::getApp().getCommandManager().invokeDirectly (CommandIDs::saveProject, true);\r
+ }\r
+ }\r
+ }\r
}\r
\r
void MainWindow::updateTitle (const String& documentName)\r
Component* createEditor() override { return new ItemPreviewComponent (file); }\r
Component* createViewer() override { return createEditor(); }\r
void fileHasBeenRenamed (const File& newFile) override { file = newFile; }\r
- String getState() const override { return String::empty; }\r
+ String getState() const override { return String(); }\r
void restoreState (const String&) override {}\r
\r
String getType() const override\r
if (! canGoToPrevious())\r
return nullptr;\r
\r
- nextDocs.insert (0, previousDocs.remove (previousDocs.size() - 1));\r
+ nextDocs.insert (0, previousDocs.removeAndReturn (previousDocs.size() - 1));\r
return previousDocs.getLast();\r
}\r
\r
if (! canGoToNext())\r
return nullptr;\r
\r
- OpenDocumentManager::Document* d = nextDocs.remove (0);\r
+ OpenDocumentManager::Document* d = nextDocs.removeAndReturn (0);\r
previousDocs.add (d);\r
return d;\r
}\r
virtual void fileHasBeenRenamed (const File& newFile) = 0;\r
virtual String getState() const = 0;\r
virtual void restoreState (const String& state) = 0;\r
- virtual File getCounterpartFile() const { return File::nonexistent; }\r
+ virtual File getCounterpartFile() const { return File(); }\r
};\r
\r
//==============================================================================\r
\r
const char* classNameField = "Class Name";\r
\r
- aw.addTextEditor (classNameField, String::empty, String::empty, false);\r
+ aw.addTextEditor (classNameField, String(), String(), false);\r
aw.addButton (TRANS ("Insert Code"), 1, KeyPress (KeyPress::returnKey));\r
aw.addButton (TRANS ("Cancel"), 0, KeyPress (KeyPress::escapeKey));\r
\r
bool needsSaving() const override { return codeDoc != nullptr && codeDoc->hasChangedSinceSavePoint(); }\r
bool hasFileBeenModifiedExternally() override { return modDetector.hasBeenModified(); }\r
void fileHasBeenRenamed (const File& newFile) override { modDetector.fileHasBeenRenamed (newFile); }\r
- String getState() const override { return lastState != nullptr ? lastState->toString() : String::empty; }\r
+ String getState() const override { return lastState != nullptr ? lastState->toString() : String(); }\r
void restoreState (const String& state) override { lastState = new CodeEditorComponent::State (state); }\r
\r
File getCounterpartFile() const override\r
if (! ComponentTypeHandler::restoreFromXml (xml, comp, layout))\r
return false;\r
\r
- ComboBox defaultBox (String::empty);\r
+ ComboBox defaultBox;\r
\r
ComboBox* const c = dynamic_cast<ComboBox*> (comp);\r
jassert (c != nullptr);\r
\r
c->setEditableText (xml.getBoolAttribute ("editable", defaultBox.isTextEditable()));\r
c->setJustificationType (Justification (xml.getIntAttribute ("layout", defaultBox.getJustificationType().getFlags())));\r
- c->getProperties().set ("items", xml.getStringAttribute ("items", String::empty));\r
+ c->getProperties().set ("items", xml.getStringAttribute ("items", String()));\r
c->setTextWhenNothingSelected (xml.getStringAttribute ("textWhenNonSelected", defaultBox.getTextWhenNothingSelected()));\r
c->setTextWhenNoChoicesAvailable (xml.getStringAttribute ("textWhenNoItems", defaultBox.getTextWhenNoChoicesAvailable()));\r
\r
\r
for (int i = 0; i < colours.size(); ++i)\r
{\r
- const String col (xml.getStringAttribute (colours[i]->xmlTagName, String::empty));\r
+ const String col (xml.getStringAttribute (colours[i]->xmlTagName, String()));\r
\r
if (col.isNotEmpty())\r
comp->setColour (colours[i]->colourId, Colour::fromString (col));\r
if (pos.rect.isPositionAbsolute())\r
code.constructorCode += r + "\n";\r
else\r
- code.getCallbackCode (String::empty, "void", "resized()", false) += r;\r
+ code.getCallbackCode (String(), "void", "resized()", false) += r;\r
}\r
\r
String ComponentTypeHandler::getCreationParameters (GeneratedCode&, Component*)\r
{\r
- return String::empty;\r
+ return String();\r
}\r
\r
void ComponentTypeHandler::fillInCreationCode (GeneratedCode& code, Component* component, const String& memberVariableName)\r
return false;\r
\r
((GenericComponent*) comp)->actualClassName = xml.getStringAttribute ("class", "Component");\r
- ((GenericComponent*) comp)->constructorParams = xml.getStringAttribute ("params", String::empty);\r
+ ((GenericComponent*) comp)->constructorParams = xml.getStringAttribute ("params", String());\r
return true;\r
}\r
\r
XmlElement* e = ComponentTypeHandler::createXmlFor (comp, layout);\r
e->setAttribute ("title", g->getText());\r
\r
- GroupComponent defaultComp (String::empty, String::empty);\r
+ GroupComponent defaultComp;\r
\r
if (g->getTextLabelPosition().getFlags() != defaultComp.getTextLabelPosition().getFlags())\r
e->setAttribute ("textpos", g->getTextLabelPosition().getFlags());\r
\r
String s;\r
\r
- GroupComponent defaultComp (String::empty, String::empty);\r
+ GroupComponent defaultComp;\r
\r
if (g->getTextLabelPosition().getFlags() != defaultComp.getTextLabelPosition().getFlags())\r
{\r
\r
setImageKeepProportions (l, ib, xml.getBoolAttribute ("keepProportions", true), false);\r
\r
- setImageResource (l, ib, normalImage, xml.getStringAttribute ("resourceNormal", String::empty), false);\r
+ setImageResource (l, ib, normalImage, xml.getStringAttribute ("resourceNormal", String()), false);\r
setImageOpacity (l, ib, normalImage, (float) xml.getDoubleAttribute ("opacityNormal", 1.0f), false);\r
setImageColour (l, ib, normalImage, Colour::fromString (xml.getStringAttribute ("colourNormal", "0")), false);\r
\r
- setImageResource (l, ib, overImage, xml.getStringAttribute ("resourceOver", String::empty), false);\r
+ setImageResource (l, ib, overImage, xml.getStringAttribute ("resourceOver", String()), false);\r
setImageOpacity (l, ib, overImage, (float) xml.getDoubleAttribute ("opacityOver", 1.0f), false);\r
setImageColour (l, ib, overImage, Colour::fromString (xml.getStringAttribute ("colourOver", "0")), false);\r
\r
- setImageResource (l, ib, downImage, xml.getStringAttribute ("resourceDown", String::empty), false);\r
+ setImageResource (l, ib, downImage, xml.getStringAttribute ("resourceDown", String()), false);\r
setImageOpacity (l, ib, downImage, (float) xml.getDoubleAttribute ("opacityDown", 1.0f), false);\r
setImageColour (l, ib, downImage, Colour::fromString (xml.getStringAttribute ("colourDown", "0")), false);\r
\r
if (! ComponentTypeHandler::restoreFromXml (xml, comp, layout))\r
return false;\r
\r
- Label defaultLabel (String::empty, String::empty);\r
+ Label defaultLabel;\r
\r
Font font;\r
font.setHeight ((float) xml.getDoubleAttribute ("fontsize", 15.0));\r
default: jassertfalse; break;\r
}\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
void fillInCreationCode (GeneratedCode& code, Component* component, const String& memberVariableName)\r
TabDemoContentComp* const tdc = dynamic_cast<TabDemoContentComp*> (tc->getTabContentComponent (tabIndex));\r
jassert (tdc != nullptr);\r
\r
- return tdc != 0 ? tdc->contentClassName : String::empty;\r
+ return tdc != 0 ? tdc->contentClassName : String();\r
}\r
\r
static void setTabClassName (TabbedComponent* tc, int tabIndex, const String& newName)\r
TabDemoContentComp* const tdc = dynamic_cast<TabDemoContentComp*> (tc->getTabContentComponent (tabIndex));\r
jassert (tdc != nullptr);\r
\r
- return tdc != 0 ? tdc->constructorParams : String::empty;\r
+ return tdc != 0 ? tdc->constructorParams : String();\r
}\r
\r
static void setTabConstructorParams (TabbedComponent* tc, int tabIndex, const String& newParams)\r
TabDemoContentComp* const tdc = dynamic_cast<TabDemoContentComp*> (tc->getTabContentComponent (tabIndex));\r
jassert (tdc != nullptr);\r
\r
- return tdc != 0 ? tdc->jucerComponentFile : String::empty;\r
+ return tdc != 0 ? tdc->jucerComponentFile : String();\r
}\r
\r
static void setTabJucerFile (TabbedComponent* tc, int tabIndex, const String& newFile)\r
\r
v->setScrollBarThickness (xml.getIntAttribute ("scrollbarThickness", defaultViewport.getScrollBarThickness()));\r
\r
- setViewportJucerComponentFile (v, xml.getStringAttribute ("jucerFile", String::empty));\r
+ setViewportJucerComponentFile (v, xml.getStringAttribute ("jucerFile", String()));\r
setViewportGenericComponentClass (v, xml.getStringAttribute ("contentClass"));\r
setViewportContentType (v, xml.getIntAttribute ("contentType", 0));\r
setViewportConstructorParams (v, xml.getStringAttribute ("constructorParams"));\r
}\r
else\r
{\r
- classNm = String::empty;\r
+ classNm = String();\r
}\r
}\r
\r
const String filename (getViewportJucerComponentFile (component));\r
\r
if (filename.isEmpty())\r
- return File::nonexistent;\r
+ return File();\r
\r
return document.getCppFile().getSiblingFile (filename);\r
}\r
{\r
public:\r
ButtonTestComponent (ButtonDocument* const doc, const bool fillBackground)\r
- : Button (String::empty),\r
+ : Button (String()),\r
document (doc),\r
alwaysFillBackground (fillBackground)\r
{\r
return name;\r
}\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
String BinaryResources::findUniqueName (const String& rootName) const\r
String ComponentLayout::getComponentMemberVariableName (Component* comp) const\r
{\r
if (comp == nullptr)\r
- return String::empty;\r
+ return String();\r
\r
String name (comp->getProperties() ["memberName"].toString());\r
\r
jassert (comp != nullptr);\r
const String oldName (getComponentMemberVariableName (comp));\r
\r
- comp->getProperties().set ("memberName", String::empty);\r
+ comp->getProperties().set ("memberName", String());\r
\r
const String n (getUnusedMemberName (CodeHelpers::makeValidIdentifier (newName, false, true, false), comp));\r
comp->getProperties().set ("memberName", n);\r
String ComponentLayout::getComponentVirtualClassName (Component* comp) const\r
{\r
if (comp == nullptr)\r
- return String::empty;\r
+ return String();\r
\r
return comp->getProperties() ["virtualName"];\r
}\r
s = s.fromFirstOccurrenceOf (" ", false, false);\r
\r
if (s.trim().isEmpty())\r
- type = s = String::empty;\r
+ type = s = String();\r
}\r
\r
s = type + CodeHelpers::makeValidIdentifier (s.trim(), false, false, true);\r
&& getTypeName().equalsIgnoreCase (xml.getStringAttribute ("documentType")))\r
{\r
className = xml.getStringAttribute ("className", defaultClassName);\r
- templateFile = xml.getStringAttribute ("template", String::empty);\r
- componentName = xml.getStringAttribute ("componentName", String::empty);\r
+ templateFile = xml.getStringAttribute ("template", String());\r
+ componentName = xml.getStringAttribute ("componentName", String());\r
parentClasses = xml.getStringAttribute ("parentClasses", defaultParentClasses);\r
- constructorParams = xml.getStringAttribute ("constructorParams", String::empty);\r
- variableInitialisers = xml.getStringAttribute ("variableInitialisers", String::empty);\r
+ constructorParams = xml.getStringAttribute ("constructorParams", String());\r
+ variableInitialisers = xml.getStringAttribute ("variableInitialisers", String());\r
\r
fixedSize = xml.getBoolAttribute ("fixedSize", false);\r
initialWidth = xml.getIntAttribute ("initialWidth", 300);\r
code.constructorCode << "setName (" + quotedString (componentName, false) + ");\n";\r
\r
// call these now, just to make sure they're the first two methods in the list.\r
- code.getCallbackCode (String::empty, "void", "paint (Graphics& g)", false)\r
+ code.getCallbackCode (String(), "void", "paint (Graphics& g)", false)\r
<< "//[UserPrePaint] Add your own custom painting code here..\n//[/UserPrePaint]\n\n";\r
\r
- code.getCallbackCode (String::empty, "void", "resized()", false)\r
+ code.getCallbackCode (String(), "void", "resized()", false)\r
<< "//[UserPreResize] Add your own custom resize code here..\n//[/UserPreResize]\n\n";\r
\r
if (ComponentLayout* l = getComponentLayout())\r
if (initialWidth > 0 || initialHeight > 0)\r
code.constructorCode << "\nsetSize (" << initialWidth << ", " << initialHeight << ");\n";\r
\r
- code.getCallbackCode (String::empty, "void", "paint (Graphics& g)", false)\r
+ code.getCallbackCode (String(), "void", "paint (Graphics& g)", false)\r
<< "//[UserPaint] Add your own custom painting code here..\n//[/UserPaint]";\r
\r
- code.getCallbackCode (String::empty, "void", "resized()", false)\r
+ code.getCallbackCode (String(), "void", "resized()", false)\r
<< "//[UserResized] Add your own custom resize handling here..\n//[/UserResized]";\r
\r
// add optional methods\r
{\r
for (int i = 0; i < getNumPaintRoutines(); ++i)\r
getPaintRoutine (i)\r
- ->fillInGeneratedCode (code, code.getCallbackCode (String::empty, "void", "paint (Graphics& g)", false));\r
+ ->fillInGeneratedCode (code, code.getCallbackCode (String(), "void", "paint (Graphics& g)", false));\r
}\r
\r
void JucerDocument::setTemplateFile (const String& newFile)\r
String getResource() const\r
{\r
if (element == nullptr)\r
- return String::empty;\r
+ return String();\r
\r
if (isForStroke)\r
return element->getStrokeType().fill.imageResourceName;\r
\r
bool ColouredElement::loadColourAttributes (const XmlElement& xml)\r
{\r
- fillType.restoreFromString (xml.getStringAttribute ("fill", String::empty));\r
+ fillType.restoreFromString (xml.getStringAttribute ("fill", String()));\r
\r
isStrokePresent = showOutline && xml.getBoolAttribute ("hasStroke", false);\r
\r
- strokeType.restoreFromString (xml.getStringAttribute ("stroke", String::empty));\r
- strokeType.fill.restoreFromString (xml.getStringAttribute ("strokeColour", String::empty));\r
+ strokeType.restoreFromString (xml.getStringAttribute ("stroke", String()));\r
+ strokeType.fill.restoreFromString (xml.getStringAttribute ("strokeColour", String()));\r
\r
return true;\r
}\r
break;\r
}\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
void restoreFromString (const String& s)\r
String resource (document.getResources()\r
.browseForResource ("Select an image file to add as a resource",\r
"*.jpg;*.jpeg;*.png;*.gif;*.svg",\r
- File::nonexistent,\r
- String::empty));\r
+ File(),\r
+ String()));\r
\r
if (resource.isNotEmpty())\r
setResource (resource);\r
else\r
{\r
if (choices[newIndex] == getNoneText() && allowChoiceOfNoResource)\r
- setResource (String::empty);\r
+ setResource (String());\r
else\r
setResource (choices [newIndex]);\r
}\r
choices.clear();\r
\r
choices.add ("-- create a new image resource -- ");\r
- choices.add (String::empty);\r
+ choices.add (String());\r
\r
if (allowChoiceOfNoResource)\r
choices.add (getNoneText());\r
if (xml.hasTagName (getTagName()))\r
{\r
position.restoreFromXml (xml, position);\r
- resourceName = xml.getStringAttribute ("resource", String::empty);\r
+ resourceName = xml.getStringAttribute ("resource", String());\r
opacity = xml.getDoubleAttribute ("opacity", 1.0);\r
mode = (StretchMode) xml.getIntAttribute ("mode", (int) stretched);\r
\r
if (element != nullptr)\r
return element->getResource();\r
\r
- return String::empty;\r
+ return String();\r
}\r
};\r
\r
r << '\n';\r
\r
if (somePointsAreRelative)\r
- code.getCallbackCode (String::empty, "void", "resized()", false)\r
+ code.getCallbackCode (String(), "void", "resized()", false)\r
<< pathVariable << ".clear();\n" << r;\r
else\r
code.constructorCode << r;\r
const bool allowEditingOfFilename,\r
const String& fileBrowserWildcard = "*")\r
: PropertyComponent (name),\r
- filenameComp (name, File::nonexistent, allowEditingOfFilename,\r
+ filenameComp (name, File(), allowEditingOfFilename,\r
isDirectory, false, fileBrowserWildcard,\r
- String::empty, String::empty)\r
+ String(), String())\r
{\r
addAndMakeVisible (filenameComp);\r
filenameComp.addListener (this);\r
choices.add (getDefaultSans());\r
choices.add (getDefaultSerif());\r
choices.add (getDefaultMono());\r
- choices.add (String::empty);\r
+ choices.add (String());\r
\r
static StringArray fontNames;\r
\r
\r
static String getTypefaceNameCode (const String& typefaceName)\r
{\r
- if (typefaceName == getDefaultFont()) return String::empty;\r
+ if (typefaceName == getDefaultFont()) return String();\r
if (typefaceName == getDefaultSans()) return "Font::getDefaultSansSerifFontName(), ";\r
if (typefaceName == getDefaultSerif()) return "Font::getDefaultSerifFontName(), ";\r
if (typefaceName == getDefaultMono()) return "Font::getDefaultMonospacedFontName(), ";\r
\r
public:\r
PositionPropLabel (PositionPropertyBase& owner_)\r
- : Label (String::empty, String::empty),\r
+ : Label (String(), String()),\r
owner (owner_)\r
{\r
setEditable (true, true, false);\r
: PropertyComponent ("extra callbacks", 250),\r
document (doc)\r
{\r
- addAndMakeVisible (listBox = new ListBox (String::empty, this));\r
+ addAndMakeVisible (listBox = new ListBox (String(), this));\r
listBox->setRowHeight (22);\r
\r
document.addChangeListener (this);\r
break;\r
\r
case StandardApplicationCommandIDs::cut:\r
- result.setInfo (TRANS ("Cut"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Cut"), String(), "Editing", 0);\r
result.setActive (isSomethingSelected());\r
result.defaultKeypresses.add (KeyPress ('x', cmd, 0));\r
break;\r
\r
case StandardApplicationCommandIDs::copy:\r
- result.setInfo (TRANS ("Copy"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Copy"), String(), "Editing", 0);\r
result.setActive (isSomethingSelected());\r
result.defaultKeypresses.add (KeyPress ('c', cmd, 0));\r
break;\r
\r
case StandardApplicationCommandIDs::paste:\r
{\r
- result.setInfo (TRANS ("Paste"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Paste"), String(), "Editing", 0);\r
result.defaultKeypresses.add (KeyPress ('v', cmd, 0));\r
\r
bool canPaste = false;\r
break;\r
\r
case StandardApplicationCommandIDs::del:\r
- result.setInfo (TRANS ("Delete"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Delete"), String(), "Editing", 0);\r
result.setActive (isSomethingSelected());\r
break;\r
\r
case StandardApplicationCommandIDs::selectAll:\r
- result.setInfo (TRANS ("Select All"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Select All"), String(), "Editing", 0);\r
result.setActive (currentPaintRoutine != nullptr || currentLayout != nullptr);\r
result.defaultKeypresses.add (KeyPress ('a', cmd, 0));\r
break;\r
\r
case StandardApplicationCommandIDs::deselectAll:\r
- result.setInfo (TRANS ("Deselect All"), String::empty, "Editing", 0);\r
+ result.setInfo (TRANS ("Deselect All"), String(), "Editing", 0);\r
result.setActive (currentPaintRoutine != nullptr || currentLayout != nullptr);\r
result.defaultKeypresses.add (KeyPress ('d', cmd, 0));\r
break;\r
delButton.addListener (this);\r
delButton.setEnabled (false);\r
\r
- addAndMakeVisible (listBox = new TableListBox (String::empty, this));\r
+ addAndMakeVisible (listBox = new TableListBox (String(), this));\r
listBox->getHeader().addColumn ("name", 1, 150, 80, 400);\r
listBox->getHeader().addColumn ("original file", 2, 350, 80, 800);\r
listBox->getHeader().addColumn ("size", 3, 100, 40, 150);\r
document.getResources()\r
.browseForResource ("Select a file to add as a resource",\r
"*",\r
- File::nonexistent,\r
- String::empty);\r
+ File(),\r
+ String());\r
}\r
else if (b == &delButton)\r
{\r
if (isAbstract) return "This class is abstract";\r
if (noDefaultConstructor) return "This class has no default constructor";\r
if (inAnonymousNamespace) return "This class is declared inside an anonymous namespace";\r
- return String::empty;\r
+ return String();\r
}\r
\r
bool isDisallowed (const InstantiationFlags& disallowedFlags) const\r
\r
static File getCacheLocation (Project& project)\r
{\r
+ String cacheFolderName = project.getProjectFilenameRoot() + "_" + project.getProjectUID();\r
+\r
+ #if JUCE_DEBUG\r
+ cacheFolderName += "_debug";\r
+ #endif\r
+\r
return getProjucerTempFolder()\r
.getChildFile ("Intermediate Files")\r
- .getChildFile (project.getProjectFilenameRoot() + "_" + project.getProjectUID());\r
+ .getChildFile (cacheFolderName);\r
}\r
}\r
\r
\r
if (project.getProjectType().isAudioPlugin())\r
{\r
- paths.add (getAppSettings().getGlobalPath (Ids::vst2Path, TargetOS::getThisOS()).toString());\r
paths.add (getAppSettings().getGlobalPath (Ids::vst3Path, TargetOS::getThisOS()).toString());\r
}\r
\r
\r
const File exe (File::getSpecialLocation (File::currentExecutableFile).getFullPathName());\r
\r
- return exe.getFullPathName() + " " + commandPrefix + info.joinIntoString (commandTokenSeparator);\r
+ return "\"" + exe.getFullPathName() + "\" " + commandPrefix + info.joinIntoString (commandTokenSeparator);\r
}\r
\r
static ServerIPC* currentServer = nullptr;\r
}\r
\r
String getRenamingName() const override { return getDisplayName(); }\r
- String getDisplayName() const override { return (namespaceToShow != nullptr ? namespaceToShow->name : String::empty) + "::"; }\r
+ String getDisplayName() const override { return (namespaceToShow != nullptr ? namespaceToShow->name : String()) + "::"; }\r
void setName (const String&) override {}\r
bool isMissing() override { return false; }\r
Icon getIcon() const override { return Icon (getIcons().graph, getContrastingColour (Colours::darkred, 0.5f)); }\r
if (CPlusPlusCodeTokeniser::isReservedKeyword (ed.getText().replaceSection (ed.getHighlightedRegion().getStart(),\r
ed.getHighlightedRegion().getLength(),\r
s)))\r
- return String::empty;\r
+ return String();\r
\r
return s;\r
}\r
{\r
public:\r
ErrorListComp (ErrorList& el)\r
- : TreePanelBase (nullptr, String::empty),\r
+ : TreePanelBase (nullptr, String()),\r
errorList (el)\r
{\r
setName ("Errors and Warnings");\r
String toString() const\r
{\r
if (file.isEmpty() && range.isEmpty())\r
- return String::empty;\r
+ return String();\r
\r
return file + ":" + String (range.getStart()) + ":" + String (range.getEnd());\r
}\r
return defaultInstallation;\r
#endif\r
\r
- return File::nonexistent;\r
+ return File();\r
}\r
\r
protected:\r
if (isCodeBlocks() && isWindows())\r
{\r
defines.set ("__MINGW__", "1");\r
- defines.set ("__MINGW_EXTENSION", String::empty);\r
+ defines.set ("__MINGW_EXTENSION", String());\r
}\r
else\r
{\r
DependencyPathOS pathOS = isLinux() ? TargetOS::linux\r
: TargetOS::windows;\r
\r
- vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), Ids::vst2Path, pathOS)));\r
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), Ids::vst3Path, pathOS)));\r
\r
if (! isLinux())\r
config->getValue (Ids::useRuntimeLibDLL) = true;\r
\r
if (isVST3)\r
+ {\r
if (config->getValue (Ids::postbuildCommand).toString().isEmpty())\r
- config->getValue (Ids::postbuildCommand) = "copy /Y \"$(OutDir)\\$(TargetFileName)\" \"$(OutDir)\\$(TargetName).vst3\"";\r
+ {\r
+ const String previousBuildCommands = config->getValue (Ids::internalPostBuildComamnd).toString();\r
+\r
+ String script;\r
+ if (previousBuildCommands.isNotEmpty())\r
+ script += "\r\n";\r
+\r
+ script += "copy /Y \"$(OutDir)\\$(TargetFileName)\" \"$(OutDir)\\$(TargetName).vst3\"";\r
+\r
+ config->getValue (Ids::internalPostBuildComamnd) = previousBuildCommands + script;\r
+ }\r
+ }\r
}\r
}\r
\r
const RelativePath aaxLibsFolder = RelativePath (getAAXPathValue().toString(), RelativePath::projectFolder).getChildFile ("Libs");\r
\r
for (ProjectExporter::ConfigIterator config (*this); config.next();)\r
+ {\r
if (config->getValue (Ids::useRuntimeLibDLL).getValue().isVoid())\r
config->getValue (Ids::useRuntimeLibDLL) = true;\r
\r
+ if (config->getValue(Ids::postbuildCommand).toString().isEmpty())\r
+ {\r
+ const String previousBuildCommands = config->getValue (Ids::internalPostBuildComamnd).toString();\r
+\r
+ const bool is64Bit = (config->getValue (Ids::winArchitecture) == "x64");\r
+ const String bundleDir = "$(OutDir)\\$(TargetName).aaxplugin";\r
+ const String bundleContents = bundleDir + "\\Contents";\r
+ const String macOSDir = bundleContents + String ("\\") + (is64Bit ? "x64" : "Win32");\r
+ const String executable = macOSDir + String ("\\$(TargetName).aaxplugin");\r
+ const String bundleScript = aaxPath.toString() + String ("\\Utilities\\CreatePackage.bat");\r
+ String iconFilePath = getTargetFolder().getChildFile ("icon.ico").getFullPathName();\r
+\r
+ if (! File (iconFilePath).existsAsFile())\r
+ iconFilePath = aaxPath.toString() + String ("\\Utilities\\PlugIn.ico");\r
+\r
+ String script;\r
+\r
+ if (previousBuildCommands.isNotEmpty())\r
+ script += "\r\n";\r
+\r
+ script += String ("mkdir \"") + bundleDir + String ("\"\r\n");\r
+ script += String ("mkdir \"") + bundleContents + String ("\"\r\n");\r
+ script += String ("mkdir \"") + macOSDir + String ("\"\r\n");\r
+ script += String ("copy /Y \"$(OutDir)\\$(TargetFileName)\" \"") + executable + String ("\"\r\n");\r
+ script += bundleScript + String (" \"") + macOSDir + String ("\" \"") + iconFilePath + String ("\"");\r
+\r
+ config->getValue (Ids::internalPostBuildComamnd) = previousBuildCommands + script;\r
+ }\r
+ }\r
+\r
msvcExtraPreprocessorDefs.set ("JucePlugin_AAXLibs_path",\r
createRebasedPath (aaxLibsFolder));\r
}\r
config->getValue (Ids::useRuntimeLibDLL) = true;\r
\r
if (config->getValue (Ids::postbuildCommand).toString().isEmpty())\r
- config->getValue (Ids::postbuildCommand)\r
- = "copy /Y "\r
- + modulePath.getChildFile ("juce_RTAS_WinResources.rsr").toWindowsStyle().quoted()\r
- + " \"$(TargetPath)\".rsr";\r
+ {\r
+ const String previousBuildCommands = config->getValue (Ids::internalPostBuildComamnd).toString();\r
+\r
+ String script;\r
+ if (previousBuildCommands.isNotEmpty())\r
+ script += "\r\n";\r
+\r
+ script += "copy /Y "\r
+ + modulePath.getChildFile("juce_RTAS_WinResources.rsr").toWindowsStyle().quoted()\r
+ + " \"$(TargetPath)\".rsr";\r
+\r
+ config->getValue (Ids::internalPostBuildComamnd) = previousBuildCommands + script;\r
+ }\r
}\r
\r
RelativePath juceWrapperFolder (project.getGeneratedCodeFolder(),\r
Value getPostbuildCommand() { return getValue (Ids::postbuildCommand); }\r
String getPostbuildCommandString() const { return config [Ids::postbuildCommand]; }\r
\r
+ Value getInternalPostbuildCommands() { return getValue (Ids::internalPostBuildComamnd); }\r
+\r
Value shouldGenerateDebugSymbolsValue() { return getValue (Ids::alwaysGenerateDebugSymbols); }\r
bool shouldGenerateDebugSymbols() const { return config [Ids::alwaysGenerateDebugSymbols]; }\r
\r
<< newLine\r
<< "#endif" << newLine;\r
\r
- if (iconFile != File::nonexistent)\r
+ if (iconFile != File())\r
mo << newLine\r
<< "IDI_ICON1 ICON DISCARDABLE " << iconFile.getFileName().quoted()\r
<< newLine\r
\r
void initialiseDependencyPathValues()\r
{\r
- vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder),\r
- Ids::vst2Path,\r
- TargetOS::windows)));\r
-\r
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder),\r
Ids::vst3Path,\r
TargetOS::windows)));\r
\r
if (group.getID() == ProjectSaver::getGeneratedGroupID())\r
{\r
- if (iconFile != File::nonexistent)\r
+ if (iconFile != File())\r
{\r
group.addFileAtIndex (iconFile, -1, true);\r
group.findItemForFile (iconFile).getShouldAddToBinaryResourcesValue() = false;\r
\r
{\r
MemoryOutputStream mo;\r
- writeSolutionFile (mo, getSolutionVersionString(), String::empty, getVCProjFile());\r
+ writeSolutionFile (mo, getSolutionVersionString(), String(), getVCProjFile());\r
\r
overwriteFileIfDifferentOrThrow (getSLNFile(), mo);\r
}\r
{\r
XmlElement* intdir = props->createNewChildElement ("IntDir");\r
setConditionAttribute (*intdir, config);\r
- intdir->addTextElement (FileHelpers::windowsStylePath (config.getIntermediatesPath()) + "\\");\r
+\r
+ String intermediatesPath = config.getIntermediatesPath();\r
+ if (! intermediatesPath.endsWith ("\\"))\r
+ intermediatesPath << "\\";\r
+\r
+ intdir->addTextElement (FileHelpers::windowsStylePath (intermediatesPath));\r
}\r
\r
{\r
XmlElement* targetName = props->createNewChildElement ("TargetName");\r
setConditionAttribute (*targetName, config);\r
- targetName->addTextElement (config.getOutputFilename (String::empty, true));\r
+ targetName->addTextElement (config.getOutputFilename (String(), true));\r
}\r
\r
{\r
->createNewChildElement ("Command")\r
->addTextElement (config.getPrebuildCommandString());\r
\r
- if (config.getPostbuildCommandString().isNotEmpty())\r
+ const String internalPostBuildScripts = config.config[Ids::internalPostBuildComamnd].toString();\r
+ if (config.getPostbuildCommandString().isNotEmpty() || internalPostBuildScripts.isNotEmpty())\r
group->createNewChildElement ("PostBuildEvent")\r
->createNewChildElement ("Command")\r
- ->addTextElement (config.getPostbuildCommandString());\r
+ ->addTextElement (config.getPostbuildCommandString() + internalPostBuildScripts);\r
}\r
\r
ScopedPointer<XmlElement> otherFilesGroup (new XmlElement ("ItemGroup"));\r
}\r
}\r
\r
- if (iconFile != File::nonexistent)\r
+ if (iconFile != File())\r
{\r
XmlElement* e = otherFilesGroup->createNewChildElement ("None");\r
e->setAttribute ("Include", prependDot (iconFile.getFileName()));\r
if (projectType.isStaticLibrary()) return "StaticLibrary";\r
\r
jassertfalse;\r
- return String::empty;\r
+ return String();\r
}\r
\r
static const char* getOptimisationLevelString (int level)\r
\r
jassert (path.getRoot() == RelativePath::buildTargetFolder);\r
\r
- if (path.hasFileExtension (cOrCppFileExtensions))\r
+ if (path.hasFileExtension (cOrCppFileExtensions) || path.hasFileExtension (asmFileExtensions))\r
{\r
XmlElement* e = cpps.createNewChildElement ("ClCompile");\r
e->setAttribute ("Include", path.toWindowsStyle());\r
\r
for (int i = 0; i < projectItem.getNumChildren(); ++i)\r
addFilesToFilter (projectItem.getChild(i),\r
- (path.isEmpty() ? String::empty : (path + "\\")) + projectItem.getChild(i).getName(),\r
+ (path.isEmpty() ? String() : (path + "\\")) + projectItem.getChild(i).getName(),\r
cpps, headers, otherFiles, groups);\r
}\r
else if (projectItem.shouldBeAddedToTargetProject())\r
static const char* getNameLinux() { return "Linux Makefile"; }\r
static const char* getValueTreeTypeName() { return "LINUX_MAKE"; }\r
\r
+ Value getExtraPkgConfig() { return getSetting (Ids::linuxExtraPkgConfig); }\r
+ String getExtraPkgConfigString() const { return getSettingString (Ids::linuxExtraPkgConfig); }\r
+\r
static MakefileProjectExporter* createForSettings (Project& project, const ValueTree& settings)\r
{\r
if (settings.hasType (getValueTreeTypeName()))\r
StringArray (cppStandardNames),\r
Array<var> (cppStandardValues)),\r
"The C++ standard to specify in the makefile");\r
+\r
+ properties.add (new TextPropertyComponent (getExtraPkgConfig(), "pkg-config libraries", 8192, false),\r
+ "Extra pkg-config libraries for you application. Each package should be space separated.");\r
}\r
\r
//==============================================================================\r
MakeBuildConfiguration (Project& p, const ValueTree& settings, const ProjectExporter& e)\r
: BuildConfiguration (p, settings, e)\r
{\r
- setValueIfVoid (getLibrarySearchPathValue(), "/usr/X11R6/lib/");\r
}\r
\r
Value getArchitectureType() { return getValue (Ids::linuxArchitecture); }\r
StringArray searchPaths (extraSearchPaths);\r
searchPaths.addArray (config.getHeaderSearchPaths());\r
\r
- searchPaths.insert (0, "/usr/include/freetype2");\r
- searchPaths.insert (0, "/usr/include");\r
+ StringArray packages;\r
+ packages.addTokens (getExtraPkgConfigString(), " ", "\"'");\r
+ packages.removeEmptyStrings();\r
+\r
+ if (linuxPackages.size() > 0 || packages.size() > 0)\r
+ {\r
+ out << " $(shell pkg-config --cflags";\r
+\r
+ for (int i = 0; i < linuxPackages.size(); ++i)\r
+ out << " " << linuxPackages[i];\r
+\r
+ for (int i = 0; i < packages.size(); ++i)\r
+ out << " " << packages[i];\r
+\r
+ out << ")";\r
+ }\r
+\r
+ if (linuxLibs.contains("pthread"))\r
+ out << " -pthread";\r
\r
searchPaths = getCleanedStringArray (searchPaths);\r
\r
+ // Replace ~ character with $(HOME) environment variable\r
for (int i = 0; i < searchPaths.size(); ++i)\r
- out << " -I " << escapeSpaces (FileHelpers::unixStylePath (replacePreprocessorTokens (config, searchPaths[i])));\r
+ out << " -I" << escapeSpaces (FileHelpers::unixStylePath (replacePreprocessorTokens (config, searchPaths[i]))).replace ("~", "$(HOME)");\r
}\r
\r
void writeCppFlags (OutputStream& out, const BuildConfiguration& config) const\r
{\r
- out << " CPPFLAGS := $(DEPFLAGS)";\r
+ out << " JUCE_CPPFLAGS := $(DEPFLAGS)";\r
writeDefineFlags (out, config);\r
writeHeaderPathFlags (out, config);\r
out << newLine;\r
\r
void writeLinkerFlags (OutputStream& out, const BuildConfiguration& config) const\r
{\r
- out << " LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR)";\r
+ out << " JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR)";\r
\r
{\r
StringArray flags (makefileExtraLinkerFlags);\r
\r
out << config.getGCCLibraryPathFlags();\r
\r
+ StringArray packages;\r
+ packages.addTokens (getExtraPkgConfigString(), " ", "\"'");\r
+ packages.removeEmptyStrings();\r
+\r
+ if (linuxPackages.size() > 0 || packages.size() > 0)\r
+ {\r
+ out << " $(shell pkg-config --libs";\r
+\r
+ for (int i = 0; i < linuxPackages.size(); ++i)\r
+ out << " " << linuxPackages[i];\r
+\r
+ for (int i = 0; i < packages.size(); ++i)\r
+ out << " " << packages[i];\r
+\r
+ out << ")";\r
+ }\r
+\r
for (int i = 0; i < linuxLibs.size(); ++i)\r
out << " -l" << linuxLibs[i];\r
\r
- if (getProject().isConfigFlagEnabled ("JUCE_USE_CURL"))\r
- out << " -lcurl";\r
-\r
StringArray libraries;\r
libraries.addTokens (getExternalLibrariesString(), ";", "\"'");\r
libraries.removeEmptyStrings();\r
}\r
\r
out << "ifeq ($(CONFIG)," << escapeSpaces (config.getName()) << ")" << newLine;\r
- out << " BINDIR := " << escapeSpaces (buildDirName) << newLine\r
- << " LIBDIR := " << escapeSpaces (buildDirName) << newLine\r
- << " OBJDIR := " << escapeSpaces (intermediatesDirName) << newLine\r
- << " OUTDIR := " << escapeSpaces (outputDir) << newLine\r
+ out << " JUCE_BINDIR := " << escapeSpaces (buildDirName) << newLine\r
+ << " JUCE_LIBDIR := " << escapeSpaces (buildDirName) << newLine\r
+ << " JUCE_OBJDIR := " << escapeSpaces (intermediatesDirName) << newLine\r
+ << " JUCE_OUTDIR := " << escapeSpaces (outputDir) << newLine\r
<< newLine\r
<< " ifeq ($(TARGET_ARCH),)" << newLine\r
<< " TARGET_ARCH := " << getArchFlags (config) << newLine\r
\r
writeCppFlags (out, config);\r
\r
- out << " CFLAGS += $(CPPFLAGS) $(TARGET_ARCH)";\r
+ out << " JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH)";\r
\r
if (config.isDebug())\r
out << " -g -ggdb";\r
if (cppStandardToUse.isEmpty())\r
cppStandardToUse = "-std=c++11";\r
\r
- out << " CXXFLAGS += $(CFLAGS) "\r
+ out << " JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) "\r
<< cppStandardToUse\r
<< newLine;\r
\r
out << " TARGET := " << escapeSpaces (targetName) << newLine;\r
\r
if (projectType.isStaticLibrary())\r
- out << " BLDCMD = ar -rcs $(OUTDIR)/$(TARGET) $(OBJECTS)" << newLine;\r
+ out << " BLDCMD = $(AR) -rcs $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS)" << newLine;\r
else\r
- out << " BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)" << newLine;\r
+ out << " BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)" << newLine;\r
\r
- out << " CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)" << newLine\r
+ out << " CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)" << newLine\r
<< "endif" << newLine\r
<< newLine;\r
}\r
\r
for (int i = 0; i < files.size(); ++i)\r
if (shouldFileBeCompiledByDefault (files.getReference(i)))\r
- out << " $(OBJDIR)/" << escapeSpaces (getObjectFileFor (files.getReference(i))) << " \\" << newLine;\r
+ out << " $(JUCE_OBJDIR)/" << escapeSpaces (getObjectFileFor (files.getReference(i))) << " \\" << newLine;\r
\r
out << newLine;\r
}\r
<< "DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)" << newLine\r
<< newLine;\r
\r
+ out << "ifndef STRIP" << newLine\r
+ << " STRIP=strip" << newLine\r
+ << "endif" << newLine\r
+ << newLine;\r
+\r
+ out << "ifndef AR" << newLine\r
+ << " AR=ar" << newLine\r
+ << "endif" << newLine\r
+ << newLine;\r
+\r
out << "ifndef CONFIG" << newLine\r
<< " CONFIG=" << escapeSpaces (getConfiguration(0)->getName()) << newLine\r
<< "endif" << newLine\r
out << ".PHONY: clean" << newLine\r
<< newLine;\r
\r
- out << "$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)" << newLine\r
+ StringArray packages;\r
+ packages.addTokens (getExtraPkgConfigString(), " ", "\"'");\r
+ packages.removeEmptyStrings();\r
+\r
+ bool useLinuxPackages = (linuxPackages.size() > 0 || packages.size() > 0);\r
+\r
+ out << "$(JUCE_OUTDIR)/$(TARGET): "\r
+ << ((useLinuxPackages) ? "check-pkg-config " : "")\r
+ << "$(OBJECTS) $(RESOURCES)" << newLine\r
<< "\t@echo Linking " << projectName << newLine\r
- << "\t-@mkdir -p $(BINDIR)" << newLine\r
- << "\t-@mkdir -p $(LIBDIR)" << newLine\r
- << "\t-@mkdir -p $(OUTDIR)" << newLine\r
+ << "\t-@mkdir -p $(JUCE_BINDIR)" << newLine\r
+ << "\t-@mkdir -p $(JUCE_LIBDIR)" << newLine\r
+ << "\t-@mkdir -p $(JUCE_OUTDIR)" << newLine\r
<< "\t@$(BLDCMD)" << newLine\r
<< newLine;\r
\r
+ if (useLinuxPackages)\r
+ {\r
+ out << "check-pkg-config:" << newLine\r
+ << "\t@command -v pkg-config >/dev/null 2>&1 || "\r
+ "{ echo >&2 \"pkg-config not installed. Please, install it.\"; "\r
+ "exit 1; }" << newLine\r
+ << "\t@pkg-config --print-errors";\r
+\r
+ for (int i = 0; i < linuxPackages.size(); ++i)\r
+ out << " " << linuxPackages[i];\r
+\r
+ for (int i = 0; i < packages.size(); ++i)\r
+ out << " " << packages[i];\r
+\r
+ out << newLine << newLine;\r
+ }\r
+\r
out << "clean:" << newLine\r
<< "\t@echo Cleaning " << projectName << newLine\r
<< "\t@$(CLEANCMD)" << newLine\r
\r
out << "strip:" << newLine\r
<< "\t@echo Stripping " << projectName << newLine\r
- << "\t-@strip --strip-unneeded $(OUTDIR)/$(TARGET)" << newLine\r
+ << "\t-@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)" << newLine\r
<< newLine;\r
\r
for (int i = 0; i < files.size(); ++i)\r
{\r
jassert (files.getReference(i).getRoot() == RelativePath::buildTargetFolder);\r
\r
- out << "$(OBJDIR)/" << escapeSpaces (getObjectFileFor (files.getReference(i)))\r
+ out << "$(JUCE_OBJDIR)/" << escapeSpaces (getObjectFileFor (files.getReference(i)))\r
<< ": " << escapeSpaces (files.getReference(i).toUnixStyle()) << newLine\r
- << "\t-@mkdir -p $(OBJDIR)" << newLine\r
+ << "\t-@mkdir -p $(JUCE_OBJDIR)" << newLine\r
<< "\t@echo \"Compiling " << files.getReference(i).getFileName() << "\"" << newLine\r
- << (files.getReference(i).hasFileExtension ("c;s;S") ? "\t@$(CC) $(CFLAGS) -o \"$@\" -c \"$<\""\r
- : "\t@$(CXX) $(CXXFLAGS) -o \"$@\" -c \"$<\"")\r
+ << (files.getReference(i).hasFileExtension ("c;s;S") ? "\t@$(CC) $(JUCE_CFLAGS) -o \"$@\" -c \"$<\""\r
+ : "\t@$(CXX) $(JUCE_CXXFLAGS) -o \"$@\" -c \"$<\"")\r
<< newLine << newLine;\r
}\r
}\r
\r
void initialiseDependencyPathValues()\r
{\r
- vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder),\r
- Ids::vst2Path,\r
- TargetOS::linux)));\r
-\r
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder),\r
Ids::vst3Path,\r
TargetOS::linux)));\r
{\r
const char* const osxVersionDefault = "default";\r
const int oldestSDKVersion = 5;\r
- const int currentSDKVersion = 11;\r
+ const int currentSDKVersion = 12;\r
\r
const char* const osxArch_Default = "default";\r
const char* const osxArch_Native = "Native";\r
bool isOSX() const override { return ! iOS; }\r
bool isiOS() const override { return iOS; }\r
\r
- bool supportsVST() const override { return true; }\r
+ bool supportsVST() const override { return ! iOS; }\r
bool supportsVST3() const override { return ! iOS; }\r
bool supportsAAX() const override { return ! iOS; }\r
bool supportsRTAS() const override { return ! iOS; }\r
\r
if (iOS)\r
{\r
- const char* iosVersions[] = { "Use Default", "7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "8.4", "9.0", "9.1", "9.2", "9.3", 0 };\r
- const char* iosVersionValues[] = { osxVersionDefault, "7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "8.4", "9.0", "9.1", "9.2", "9.3", 0 };\r
+ const char* iosVersions[] = { "Use Default", "7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "8.4", "9.0", "9.1", "9.2", "9.3", "10.0", 0 };\r
+ const char* iosVersionValues[] = { osxVersionDefault, "7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "8.4", "9.0", "9.1", "9.2", "9.3", "10.0", 0 };\r
\r
props.add (new ChoicePropertyComponent (iosDeploymentTarget.getPropertyAsValue(), "iOS Deployment Target",\r
StringArray (iosVersions), Array<var> (iosVersionValues)),\r
xcodeIsExecutable = true;\r
xcodeCreatePList = false;\r
xcodeFileType = "compiled.mach-o.executable";\r
- xcodeBundleExtension = String::empty;\r
+ xcodeBundleExtension = String();\r
xcodeProductType = "com.apple.product-type.tool";\r
xcodeCopyToProductInstallPathAfterBuild = false;\r
break;\r
const String sdk (config.osxSDKVersion.get());\r
const String sdkCompat (config.osxDeploymentTarget.get());\r
\r
+ // if the user doesn't set it, then use the last known version that works well with JUCE\r
+ String deploymentTarget = "10.11";\r
+\r
for (int ver = oldestSDKVersion; ver <= currentSDKVersion; ++ver)\r
{\r
if (sdk == getSDKName (ver)) s.add ("SDKROOT = macosx10." + String (ver));\r
- if (sdkCompat == getSDKName (ver)) s.add ("MACOSX_DEPLOYMENT_TARGET = 10." + String (ver));\r
+ if (sdkCompat == getSDKName (ver)) deploymentTarget = "10." + String (ver);\r
}\r
\r
+ s.add ("MACOSX_DEPLOYMENT_TARGET = " + deploymentTarget);\r
+\r
s.add ("MACOSX_DEPLOYMENT_TARGET_ppc = 10.4");\r
s.add ("SDKROOT_ppc = macosx10.5");\r
\r
void getLinkerSettings (const BuildConfiguration& config, StringArray& flags, StringArray& librarySearchPaths) const\r
{\r
if (xcodeIsBundle)\r
- flags.add ("-bundle");\r
+ flags.add (owner.isiOS() ? "-bitcode_bundle" : "-bundle");\r
\r
const Array<RelativePath>& extraLibs = config.isDebug() ? xcodeExtraLibrariesDebug\r
: xcodeExtraLibrariesRelease;\r
const String iosVersion (config.iosDeploymentTarget.get());\r
if (iosVersion.isNotEmpty() && iosVersion != osxVersionDefault)\r
s.add ("IPHONEOS_DEPLOYMENT_TARGET = " + iosVersion);\r
+ else\r
+ s.add ("IPHONEOS_DEPLOYMENT_TARGET = 9.3");\r
}\r
else\r
{\r
\r
void initialiseDependencyPathValues()\r
{\r
- vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), Ids::vst2Path, TargetOS::osx)));\r
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), Ids::vst3Path, TargetOS::osx)));\r
aaxPath. referTo (Value (new DependencyPathValueSource (getSetting (Ids::aaxFolder), Ids::aaxPath, TargetOS::osx)));\r
rtasPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::rtasFolder), Ids::rtasPath, TargetOS::osx)));\r
\r
void ProjectExporter::createDependencyPathProperties (PropertyListBuilder& props)\r
{\r
- if (supportsVST() && (project.shouldBuildVST().getValue() || project.isVSTPluginHost()))\r
- {\r
- props.add (new DependencyPathPropertyComponent (getVSTPathValue (false), "VST SDK Folder"),\r
- "If you're building a VST plugin or host, this must be the folder containing the VST SDK. This can be an absolute path, or a path relative to the Projucer project file.");\r
- }\r
-\r
if (supportsVST3() && (project.shouldBuildVST3().getValue() || project.isVST3PluginHost()))\r
{\r
- props.add (new DependencyPathPropertyComponent (getVSTPathValue (true), "VST3 SDK Folder"),\r
+ props.add (new DependencyPathPropertyComponent (getVST3PathValue(), "VST3 SDK Folder"),\r
"If you're building a VST3 plugin or host, this must be the folder containing the VST3 SDK. This can be an absolute path, or a path relative to the Projucer project file.");\r
}\r
\r
\r
void ProjectExporter::addVSTPathsIfPluginOrHost()\r
{\r
- if (supportsVST())\r
- {\r
- if (project.shouldBuildVST().getValue())\r
- makefileTargetSuffix = ".so";\r
-\r
- if (project.shouldBuildVST().getValue() || project.isVSTPluginHost())\r
- addVSTFolderToPath (false);\r
- }\r
+ if (supportsVST() && project.shouldBuildVST().getValue())\r
+ makefileTargetSuffix = ".so";\r
\r
if (supportsVST3())\r
{\r
makefileTargetSuffix = ".so";\r
\r
if (project.shouldBuildVST3().getValue() || project.isVST3PluginHost())\r
- addVSTFolderToPath (true);\r
+ addVST3FolderToPath();\r
}\r
}\r
\r
// Note: RTAS paths are platform-dependent, impl -> addPlatformSpecificSettingsForProjectType\r
}\r
\r
-void ProjectExporter::addVSTFolderToPath (bool isVST3)\r
+void ProjectExporter::addVST3FolderToPath()\r
{\r
- const String vstFolder (getVSTPathValue (isVST3).toString());\r
+ const String vst3Folder (getVST3PathValue().toString());\r
\r
- if (vstFolder.isNotEmpty())\r
- addToExtraSearchPaths (RelativePath (vstFolder, RelativePath::projectFolder), 0);\r
+ if (vst3Folder.isNotEmpty())\r
+ addToExtraSearchPaths (RelativePath (vst3Folder, RelativePath::projectFolder), 0);\r
}\r
\r
void ProjectExporter::addAAXFoldersToPath()\r
const StringArray libraryPaths (getLibrarySearchPaths());\r
\r
for (int i = 0; i < libraryPaths.size(); ++i)\r
- s << " -L" << escapeSpaces (libraryPaths[i]);\r
+ s << " -L" << escapeSpaces (libraryPaths[i]).replace ("~", "$(HOME)");\r
\r
return s;\r
}\r
if (libraries.size() != 0)\r
return replacePreprocessorTokens (config, "-l" + libraries.joinIntoString (" -l")).trim();\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
Value getUserNotes() { return getSetting (Ids::userNotes); }\r
\r
- Value getVSTPathValue (bool isVST3) const { return isVST3 ? vst3Path : vst2Path; }\r
+ Value getVST3PathValue() const { return vst3Path; }\r
Value getRTASPathValue() const { return rtasPath; }\r
Value getAAXPathValue() const { return aaxPath; }\r
\r
//==============================================================================\r
String makefileTargetSuffix;\r
bool makefileIsDLL;\r
- StringArray linuxLibs, makefileExtraLinkerFlags;\r
+ StringArray linuxLibs, linuxPackages, makefileExtraLinkerFlags;\r
\r
//==============================================================================\r
String msvcTargetSuffix;\r
const ProjectType& projectType;\r
const String projectName;\r
const File projectFolder;\r
- Value vst2Path, vst3Path, rtasPath, aaxPath; // these must be initialised in the specific exporter c'tors!\r
+ Value vst3Path, rtasPath, aaxPath; // these must be initialised in the specific exporter c'tors!\r
\r
mutable Array<Project::Item> itemGroups;\r
void initItemGroups() const;\r
static void writeXmlOrThrow (const XmlElement& xml, const File& file, const String& encoding, int maxCharsPerLine, bool useUnixNewLines = false)\r
{\r
MemoryOutputStream mo;\r
- xml.writeToStream (mo, String::empty, false, true, encoding, maxCharsPerLine);\r
+ xml.writeToStream (mo, String(), false, true, encoding, maxCharsPerLine);\r
\r
if (useUnixNewLines)\r
{\r
void createIconProperties (PropertyListBuilder&);\r
void addVSTPathsIfPluginOrHost();\r
void addCommonAudioPluginSettings();\r
- void addVSTFolderToPath (bool isVST3);\r
+ void addVST3FolderToPath();\r
void addAAXFoldersToPath();\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ProjectExporter)\r
return Result::fail (errors[0]);\r
}\r
\r
+ project.updateModificationTime();\r
+\r
return Result::ok();\r
}\r
\r
if (xml != nullptr)\r
{\r
MemoryOutputStream mo;\r
- xml->writeToStream (mo, String::empty);\r
+ xml->writeToStream (mo, String());\r
replaceFileIfDifferent (projectFile, mo);\r
}\r
}\r
\r
if (! foundCodeSection)\r
{\r
- userContent.add (String::empty);\r
+ userContent.add (String());\r
userContent.add ("// (You can add your own code in this section, and the Projucer will not overwrite it)");\r
- userContent.add (String::empty);\r
+ userContent.add (String());\r
}\r
\r
return userContent.joinIntoString (newLine) + newLine;\r
out << " #define " << f->symbol << " 1";\r
else if (value == Project::configFlagDisabled)\r
out << " #define " << f->symbol << " 0";\r
- else\r
+ else if (f->defaultValue.isEmpty())\r
out << " //#define " << f->symbol;\r
+ else\r
+ out << " #define " << f->symbol << " " << f->defaultValue;\r
+\r
\r
out << newLine\r
<< "#endif" << newLine\r
{\r
public:\r
LabelComp (TextWithDefaultPropertyComponent& tpc, const int charLimit)\r
- : Label (String::empty, String::empty),\r
+ : Label (String(), String()),\r
owner (tpc),\r
maxChars (charLimit)\r
{\r
void editorShown (Label*, TextEditor& editor) override\r
{\r
if (cachedValue.isUsingDefault())\r
- editor.setText (String::empty, dontSendNotification);\r
+ editor.setText (String(), dontSendNotification);\r
}\r
\r
void editorHidden (Label*, TextEditor&) override {}\r
// which has set the project value to whatever is displayed in the label (this may be the\r
// global/fallback value). In this case we have to reset the project value to blank:\r
if (initialValueIsEmpty)\r
- getValue().setValue (String::empty);\r
+ getValue().setValue (String());\r
\r
getValue().addListener (this);\r
setColour (textColourId, getTextColourToDisplay());\r
void DependencyPathPropertyComponent::editorShown (Label* /*label*/, TextEditor& editor)\r
{\r
if (! pathValueSource.isUsingProjectSettings())\r
- editor.setText (String::empty, dontSendNotification);\r
+ editor.setText (String(), dontSendNotification);\r
}\r
\r
void DependencyPathPropertyComponent::editorHidden (Label*, TextEditor&)\r
if ((value.refersToSameSourceAs (globalSettingsValue) && isUsingGlobalSettings()))\r
{\r
sendChangeMessage (true);\r
- setValue (String::empty); // make sure that the project-specific value is still blank\r
+ setValue (String()); // make sure that the project-specific value is still blank\r
}\r
}\r
\r
else if (exporter.isLinux())\r
{\r
parseAndAddLibs (exporter.linuxLibs, moduleInfo.moduleInfo ["linuxLibs"].toString());\r
+ parseAndAddLibs (exporter.linuxPackages, moduleInfo.moduleInfo ["linuxPackages"].toString());\r
}\r
else if (exporter.isCodeBlocks() && exporter.isWindows())\r
{\r
{\r
static File lastLocation (findDefaultModulesFolder (project));\r
\r
- FileChooser fc ("Select a module to add...", lastLocation, String::empty, false);\r
+ FileChooser fc ("Select a module to add...", lastLocation, String(), false);\r
\r
if (fc.browseForDirectory())\r
{\r
\r
private:\r
mutable Array<File> sourceFiles;\r
+ OwnedArray<Project::ConfigFlag> configFlags;\r
\r
void addBrowseableCode (ProjectExporter&, const Array<File>& compiled, const File& localModuleFolder) const;\r
};\r
setChangedFlag (false);\r
\r
projectRoot.addListener (this);\r
+\r
+ modificationTime = getFile().getLastModificationTime();\r
}\r
\r
Project::~Project()\r
void Project::valueTreeChildOrderChanged (ValueTree&, int, int) { changed(); }\r
void Project::valueTreeParentChanged (ValueTree&) {}\r
\r
+//==============================================================================\r
+bool Project::hasProjectBeenModified()\r
+{\r
+ Time newModificationTime = getFile().getLastModificationTime();\r
+\r
+ if (newModificationTime != modificationTime)\r
+ {\r
+ modificationTime = newModificationTime;\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+}\r
+\r
//==============================================================================\r
File Project::resolveFilename (String filename) const\r
{\r
String Project::getFileTemplate (const String& templateName)\r
{\r
int dataSize;\r
- const char* data = BinaryData::getNamedResource (templateName.toUTF8(), dataSize);\r
\r
- if (data == nullptr)\r
- {\r
- jassertfalse;\r
- return String::empty;\r
- }\r
+ if (const char* data = BinaryData::getNamedResource (templateName.toUTF8(), dataSize))\r
+ return String::fromUTF8 (data, dataSize);\r
+\r
+ jassertfalse;\r
+ return String();\r
\r
- return String::fromUTF8 (data, dataSize);\r
}\r
\r
//==============================================================================\r
//==============================================================================\r
struct ConfigFlag\r
{\r
- String symbol, description, sourceModuleID;\r
+ String symbol, description, sourceModuleID, defaultValue;\r
Value value; // 1 = true, 2 = false, anything else = use default\r
};\r
\r
static const char* const configFlagDefault;\r
static const char* const configFlagEnabled;\r
static const char* const configFlagDisabled;\r
+\r
Value getConfigFlag (const String& name);\r
bool isConfigFlagEnabled (const String& name) const;\r
\r
//==============================================================================\r
static const char* projectFileExtension;\r
\r
+ //==============================================================================\r
+ bool hasProjectBeenModified();\r
+ void updateModificationTime() { modificationTime = getFile().getLastModificationTime(); }\r
+\r
private:\r
//==============================================================================\r
void setMissingAudioPluginDefaultValues();\r
void updateOldModulePaths();\r
void warnAboutOldProjucerVersion();\r
\r
+ Time modificationTime;\r
+\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Project)\r
};\r
\r
struct ProjucerDisabledComp : public Component,\r
private Button::Listener\r
{\r
- ProjucerDisabledComp (String message, bool loggedIn, bool canLogin, bool requirePurchase = false,\r
- const String& loginName = String())\r
- : isLoggedIn (loggedIn), isPurchaseButton (requirePurchase)\r
+ ProjucerDisabledComp (String message, bool loggedIn, bool showSubscribeButton,\r
+ bool showSignInButton, bool showSwitchAccountButton)\r
+ : isLoggedIn (loggedIn)\r
{\r
infoLabel.setColour (Label::textColourId, findColour (mainBackgroundColourId).contrasting (0.7f));\r
infoLabel.setJustificationType (Justification::centred);\r
infoLabel.setText (message, dontSendNotification);\r
addAndMakeVisible (infoLabel);\r
\r
- if (canLogin)\r
+ if (showSubscribeButton)\r
{\r
- addAndMakeVisible (loginButton);\r
- loginButton.addListener (this);\r
+ subscribeButton = new TextButton (String ( "Subscribe..."));\r
+ addAndMakeVisible (*subscribeButton);\r
+ subscribeButton->addListener (this);\r
+ }\r
\r
- if (isPurchaseButton)\r
- {\r
- loginButton.setButtonText ("Purchase JUCE Pro...");\r
- signOutButton = new TextButton (String ("Sign Out ") + loginName);\r
- addAndMakeVisible (*signOutButton);\r
- signOutButton->addListener (this);\r
- }\r
+ if (showSignInButton)\r
+ {\r
+ signInButton = new TextButton (String ( "Sign in..."));\r
+ addAndMakeVisible (*signInButton);\r
+ signInButton->addListener (this);\r
+ }\r
+\r
+ if (showSwitchAccountButton)\r
+ {\r
+ switchAccountButton = new TextButton (String ("Switch account..."));\r
+ addAndMakeVisible (*switchAccountButton);\r
+ switchAccountButton->addListener (this);\r
}\r
}\r
\r
void resized() override\r
{\r
- infoLabel.centreWithSize (proportionOfWidth (0.9f), 200);\r
- loginButton.setSize (jmin (getWidth() - 10, 150), 22);\r
- loginButton.setCentrePosition (infoLabel.getBounds().getCentreX(),\r
- infoLabel.getBottom() + loginButton.getHeight() * 2);\r
+ int infoWidth = proportionOfWidth (0.9f);\r
+ int infoHeight = 100;\r
+\r
+ infoLabel.centreWithSize (infoWidth, infoHeight);\r
\r
- if (signOutButton != nullptr)\r
+ int buttonWidth = jmin (getWidth() - 10, 150);\r
+ int buttonHeight = 22;\r
+ int itemDistance = 10;\r
+\r
+ int buttonCenterX = infoLabel.getBounds().getCentreX();\r
+ int buttonCenterY = infoLabel.getBottom() + itemDistance + buttonHeight / 2;\r
+\r
+ if (subscribeButton.get() != nullptr)\r
{\r
- signOutButton->setSize (jmin (getWidth() - 10, 150), 22);\r
- signOutButton->setCentrePosition (infoLabel.getBounds().getCentreX(),\r
- loginButton.getBottom() + 20);\r
+ subscribeButton->setSize (buttonWidth, buttonHeight);\r
+ subscribeButton->setCentrePosition (buttonCenterX, buttonCenterY);\r
+ buttonCenterY += itemDistance + buttonHeight;\r
+ }\r
+\r
+ if (signInButton.get() != nullptr)\r
+ {\r
+ signInButton->setSize (buttonWidth, buttonHeight);\r
+ signInButton->setCentrePosition (buttonCenterX, buttonCenterY);\r
+ buttonCenterY += itemDistance + buttonHeight;\r
+ }\r
+\r
+ if (switchAccountButton.get() != nullptr)\r
+ {\r
+ switchAccountButton->setSize (buttonWidth, buttonHeight);\r
+ switchAccountButton->setCentrePosition (buttonCenterX, buttonCenterY);\r
}\r
}\r
\r
void buttonClicked (Button* btn) override\r
{\r
- if (btn == &loginButton)\r
+ if (btn == subscribeButton.get())\r
+ {\r
+ URL ("http://www.juce.com/get-juce").launchInDefaultBrowser();\r
+ }\r
+ else if (btn == signInButton.get())\r
{\r
- if (isPurchaseButton)\r
- URL ("http://www.juce.com").launchInDefaultBrowser();\r
- else\r
- ProjucerApplication::getApp().showLoginForm();\r
+ ProjucerApplication::getApp().showLoginForm();\r
}\r
- else if (btn == signOutButton.get())\r
+ else if (btn == switchAccountButton.get())\r
{\r
- ProjucerLicenses::getInstance()->logout();\r
- ProjucerApplication::getApp().updateAllBuildTabs();\r
+ ProjucerApplication::getApp().showLoginForm();\r
}\r
}\r
\r
+ bool isLoggedIn;\r
+\r
+private:\r
Label infoLabel { "info", String() };\r
- TextButton loginButton { "Log-in..." };\r
- ScopedPointer<TextButton> signOutButton;\r
- bool isLoggedIn, isPurchaseButton;\r
+ ScopedPointer<TextButton> subscribeButton;\r
+ ScopedPointer<TextButton> signInButton;\r
+ ScopedPointer<TextButton> switchAccountButton;\r
};\r
\r
struct EnableBuildComp : public Component\r
#if JUCE_LINUX\r
ignoreUnused (child);\r
return new ProjucerDisabledComp ("Linux support is still under development - "\r
- "please check for updates at www.juce.com!", false, false);\r
+ "please check for updates at www.juce.com!", false, false, false, false);\r
#else\r
if (child != nullptr)\r
{\r
return new BuildTabComponent (child, new ProjucerAppClasses::ErrorListComp (child->errorList));\r
}\r
\r
- auto& unlockStatus = *ProjucerLicenses::getInstance();\r
-\r
- if (unlockStatus.hasLiveCodingLicence()\r
- && project != nullptr\r
- && LiveBuildProjectSettings::isBuildDisabled (*project))\r
- return new EnableBuildComp();\r
-\r
- if (unlockStatus.isLoggedIn())\r
- return new ProjucerDisabledComp (String ("The Projucer's live-build features are currently disabled!") + newLine\r
- + newLine\r
- + "Your account " + unlockStatus.getLoginName().quoted()\r
- + " does not have an asscociated JUCE Pro license:",\r
- true, true, true, unlockStatus.getLoginName());\r
-\r
- if (! unlockStatus.isDLLPresent())\r
- return new ProjucerDisabledComp (String ("The live-building DLL is missing!") + newLine\r
- + newLine\r
- + "To enable the compiler, you'll need to install the missing DLL "\r
- + CompileEngineDLL::getDLLName().quoted() + newLine\r
- + newLine\r
- + "Visit the JUCE website/forum for more help on getting and installing the DLL!",\r
- false, false);\r
-\r
- return new ProjucerDisabledComp ("The Projucer's live-build features are currently disabled!\n\n"\r
- "To enable them, you'll need to log-in with your JUCE account details:",\r
- false, true, false);\r
+ jassert (project != nullptr);\r
+ const auto& unlockStatus = *ProjucerLicenses::getInstance();\r
+\r
+ if (unlockStatus.hasLiveCodingLicence())\r
+ {\r
+ jassert (unlockStatus.isLoggedIn());\r
+ jassert (unlockStatus.isDLLPresent());\r
+ return new EnableBuildComp();\r
+ }\r
+\r
+ return createDisabledBuildTab(unlockStatus.isLoggedIn(),\r
+ unlockStatus.isDLLPresent());\r
#endif\r
+};\r
+\r
+//==============================================================================\r
+Component* ProjectContentComponent::createDisabledBuildTab(bool loggedIn, bool dllPresent) {\r
+ bool showSubscribeButton = true;\r
+ bool showSignInButton = dllPresent && ! loggedIn;\r
+ bool showSwitchAccountButton = dllPresent && loggedIn;\r
+\r
+ return new ProjucerDisabledComp (\r
+ "Subscribe to JUCE Pro or Indie to use the Projucer's live-build features:",\r
+ loggedIn, showSubscribeButton, showSignInButton, showSwitchAccountButton);\r
}\r
\r
BuildTabComponent* findBuildTab (const TabbedComponent& tabs)\r
File ProjectContentComponent::getCurrentFile() const\r
{\r
return currentDocument != nullptr ? currentDocument->getFile()\r
- : File::nonexistent;\r
+ : File();\r
}\r
\r
bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc, bool grabFocus)\r
break;\r
\r
case CommandIDs::deleteSelectedItem:\r
- result.setInfo ("Delete Selected File", String::empty, CommandCategories::general, 0);\r
+ result.setInfo ("Delete Selected File", String(), CommandCategories::general, 0);\r
result.defaultKeypresses.add (KeyPress (KeyPress::deleteKey, 0, 0));\r
result.defaultKeypresses.add (KeyPress (KeyPress::backspaceKey, 0, 0));\r
result.setActive (dynamic_cast<TreePanelBase*> (treeViewTabs.getCurrentContentComponent()) != nullptr);\r
deleteProjectTabs();\r
createProjectTabs();\r
\r
- ProjucerDisabledComp* buildTab = new ProjucerDisabledComp (tabMessage, false, false);\r
+ bool isLoggedIn = ProjucerLicenses::getInstance()->isLoggedIn();\r
+ ProjucerDisabledComp* buildTab = new ProjucerDisabledComp (tabMessage, isLoggedIn, false, false, false);\r
\r
treeViewTabs.addTab ("Build", Colours::transparentBlack, buildTab, true);\r
showBuildTab();\r
void timerCallback() override;\r
\r
Component* createBuildTab (CompileEngineChildProcess*);\r
+ Component* createDisabledBuildTab (bool loggedIn, bool dllPresent);\r
+\r
bool isContinuousRebuildEnabled() { return getAppSettings().getGlobalProperties().getBoolValue ("continuousRebuild", true); }\r
void setContinuousRebuildEnabled (bool b) { getAppSettings().getGlobalProperties().setValue ("continuousRebuild", b); }\r
void rebuildNow();\r
virtual void browseToAddExistingFiles()\r
{\r
const File location (item.isGroup() ? item.determineGroupFolder() : getFile());\r
- FileChooser fc ("Add Files to Jucer Project", location, String::empty, false);\r
+ FileChooser fc ("Add Files to Jucer Project", location, String(), false);\r
\r
if (fc.browseForMultipleFilesOrDirectories())\r
{\r
virtual void checkFileStatus() // (recursive)\r
{\r
const File file (getFile());\r
- const bool nowMissing = file != File::nonexistent && ! file.exists();\r
+ const bool nowMissing = file != File() && ! file.exists();\r
\r
if (nowMissing != isFileMissing)\r
{\r
bool mightContainSubItems() override { return item.getNumChildren() > 0; }\r
String getUniqueName() const override { jassert (item.getID().isNotEmpty()); return item.getID(); }\r
bool canBeSelected() const override { return true; }\r
- String getTooltip() override { return String::empty; }\r
+ String getTooltip() override { return String(); }\r
File getDraggableFile() const override { return getFile(); }\r
\r
var getDragSourceDescription() override\r
void drawToggleButton (Graphics& g, ToggleButton& button, bool /*isMouseOverButton*/, bool /*isButtonDown*/) override\r
{\r
g.setColour (Colours::white);\r
- g.fillEllipse (4.0f, 4.0f, 13.0f, 13.0f);\r
+ Rectangle<float> box (4.0f, 4.0f, 13.0f, 13.0f);\r
+ g.fillRoundedRectangle (box, 3.0f);\r
\r
if (button.getToggleState())\r
{\r
g.setColour (Colours::black);\r
- g.fillEllipse (6.0f, 6.0f, 9.0f, 9.0f);\r
+\r
+ Path tick;\r
+ tick.startNewSubPath (box.getX(), box.getCentreY() + 1.0f);\r
+ tick.lineTo (box.getCentreX() - 1.0f, box.getBottom());\r
+ tick.lineTo (box.getRight(), box.getY());\r
+\r
+ const AffineTransform trans (AffineTransform::scale (0.75, 0.75, box.getCentreX(), box.getCentreY()));\r
+\r
+ g.strokePath (tick, PathStrokeType (3.0f), trans);\r
}\r
\r
g.setColour (button.findColour (ToggleButton::textColourId));\r
const String& propertyDescription,\r
bool isDirectory,\r
const String& wildcards = "*",\r
- const File& rootToUseForRelativePaths = File::nonexistent)\r
+ const File& rootToUseForRelativePaths = File())\r
: PropertyComponent (propertyDescription),\r
innerComp (valueToControl, isDirectory, wildcards, rootToUseForRelativePaths)\r
{\r
\r
void setTo (const File& f)\r
{\r
- value = (root == File::nonexistent) ? f.getFullPathName()\r
- : f.getRelativePathFrom (root);\r
+ value = (root == File()) ? f.getFullPathName()\r
+ : f.getRelativePathFrom (root);\r
}\r
\r
Value value;\r
DECLARE_ID (intermediatesPath);\r
DECLARE_ID (modulePaths);\r
DECLARE_ID (searchpaths);\r
- DECLARE_ID (vstFolder);\r
DECLARE_ID (vst3Folder);\r
DECLARE_ID (rtasFolder);\r
DECLARE_ID (auFolder);\r
- DECLARE_ID (vst2Path);\r
DECLARE_ID (vst3Path);\r
DECLARE_ID (rtasPath);\r
DECLARE_ID (aaxPath);\r
DECLARE_ID (jucerVersion);\r
DECLARE_ID (prebuildCommand);\r
DECLARE_ID (postbuildCommand);\r
+ DECLARE_ID (internalPostBuildComamnd);\r
DECLARE_ID (generateManifest);\r
DECLARE_ID (useRuntimeLibDLL);\r
DECLARE_ID (wholeProgramOptimisation);\r
DECLARE_ID (gradleWrapperVersion);\r
DECLARE_ID (gradleToolchain);\r
DECLARE_ID (gradleToolchainVersion);\r
+ DECLARE_ID (linuxExtraPkgConfig);\r
DECLARE_ID (font);\r
DECLARE_ID (colour);\r
DECLARE_ID (userNotes);\r
{\r
public:\r
SVGPathDataComponent()\r
- : desc (String::empty,\r
+ : desc (String(),\r
"Paste an SVG path string into the top box, and it'll be converted to some C++ "\r
"code that will load it as a Path object..")\r
{\r
\r
String StoredSettings::getFallbackPath (const Identifier& key, DependencyPathOS os)\r
{\r
- if (key == Ids::vst2Path || key == Ids::vst3Path)\r
+ if (key == Ids::vst3Path)\r
return os == TargetOS::windows ? "c:\\SDKs\\VST3 SDK"\r
: "~/SDKs/VST3 SDK";\r
\r
{\r
String fileToCheckFor;\r
\r
- if (key == Ids::vst2Path)\r
- {\r
- fileToCheckFor = "public.sdk/source/vst2.x/audioeffectx.h";\r
- }\r
- else if (key == Ids::vst3Path)\r
+ if (key == Ids::vst3Path)\r
{\r
fileToCheckFor = "base/source/baseiids.cpp";\r
}\r
if (currentItem.isNotEmpty())\r
result.add (currentItem);\r
\r
- currentItem = String::empty;\r
+ currentItem = String();\r
}\r
else\r
{\r
{\r
lines.add ("language: " + original.getLanguageName());\r
lines.add ("countries: " + original.getCountryCodes().joinIntoString (" "));\r
- lines.add (String::empty);\r
+ lines.add (String());\r
\r
const StringArray& originalKeys (originalStrings.getAllKeys());\r
const StringArray& originalValues (originalStrings.getAllValues());\r
{\r
lines.add ("language: [enter full name of the language here!]");\r
lines.add ("countries: [enter list of 2-character country codes here!]");\r
- lines.add (String::empty);\r
+ lines.add (String());\r
}\r
\r
for (int i = 0; i < preStrings.size(); ++i)\r
void loadFile()\r
{\r
FileChooser fc ("Choose a translation file to load",\r
- File::nonexistent,\r
- "*");\r
+ File(), "*");\r
\r
if (fc.browseForFileToOpen())\r
{\r
{\r
public:\r
UTF8Component()\r
- : desc (String::empty,\r
+ : desc (String(),\r
"Type any string into the box, and it'll be shown below as a portable UTF-8 literal, "\r
"ready to cut-and-paste into your source-code...")\r
{\r
TRANS ("Please enter the name for the new class"),\r
AlertWindow::NoIcon, nullptr);\r
\r
- aw.addTextEditor (getClassNameFieldName(), String::empty, String::empty, false);\r
+ aw.addTextEditor (getClassNameFieldName(), String(), String(), false);\r
aw.addButton (TRANS ("Create Files"), 1, KeyPress (KeyPress::returnKey));\r
aw.addButton (TRANS ("Cancel"), 0, KeyPress (KeyPress::escapeKey));\r
\r
c->addItemList (fileOptions, 1);\r
c->setSelectedId (1, dontSendNotification);\r
\r
- Label* l = new Label (String::empty, TRANS("Files to Auto-Generate") + ":");\r
+ Label* l = new Label (String(), TRANS("Files to Auto-Generate") + ":");\r
l->attachToComponent (c, true);\r
itemsCreated.add (l);\r
\r
ModulesFolderPathBox (File initialFileOrDirectory)\r
: currentPathBox ("currentPathBox"),\r
openFolderButton (TRANS("...")),\r
- modulesLabel (String::empty, TRANS("Modules Folder") + ":")\r
+ modulesLabel (String(), TRANS("Modules Folder") + ":")\r
{\r
- if (initialFileOrDirectory == File::nonexistent)\r
+ if (initialFileOrDirectory == File())\r
initialFileOrDirectory = findDefaultModulesFolder();\r
\r
setModulesFolder (initialFileOrDirectory);\r
WizardComp()\r
: platformTargets(),\r
projectName (TRANS("Project name")),\r
- nameLabel (String::empty, TRANS("Project Name") + ":"),\r
- typeLabel (String::empty, TRANS("Project Type") + ":"),\r
+ nameLabel (String(), TRANS("Project Name") + ":"),\r
+ typeLabel (String(), TRANS("Project Type") + ":"),\r
fileBrowser (FileBrowserComponent::saveMode\r
| FileBrowserComponent::canSelectDirectories\r
| FileBrowserComponent::doNotClearFileNameOnRootChange,\r
NewProjectWizardClasses::getLastWizardFolder(), nullptr, nullptr),\r
- fileOutline (String::empty, TRANS("Project Folder") + ":"),\r
- targetsOutline (String::empty, TRANS("Target Platforms") + ":"),\r
+ fileOutline (String(), TRANS("Project Folder") + ":"),\r
+ targetsOutline (String(), TRANS("Target Platforms") + ":"),\r
createButton (TRANS("Create") + "..."),\r
cancelButton (TRANS("Cancel")),\r
modulesPathBox (findDefaultModulesFolder())\r
appFolder = appFolder.getParentDirectory();\r
}\r
\r
- return File::nonexistent;\r
+ return File();\r
}\r
\r
private:\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := UnitTestRunner\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lGL -lX11 -lXext -lXinerama -lasound -ldl -lfreetype -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt \r
\r
TARGET := UnitTestRunner\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_audio_basics_6b797ca1.o \\r
- $(OBJDIR)/juce_audio_devices_a742c38b.o \\r
- $(OBJDIR)/juce_audio_formats_5a29c68a.o \\r
- $(OBJDIR)/juce_audio_processors_dea3173d.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
- $(OBJDIR)/juce_cryptography_6de2ebff.o \\r
- $(OBJDIR)/juce_data_structures_72d3da2c.o \\r
- $(OBJDIR)/juce_events_d2be882c.o \\r
- $(OBJDIR)/juce_graphics_9c18891e.o \\r
- $(OBJDIR)/juce_gui_basics_8a6da59c.o \\r
- $(OBJDIR)/juce_gui_extra_4a026f23.o \\r
- $(OBJDIR)/juce_opengl_cd70b4c2.o \\r
- $(OBJDIR)/juce_osc_be4cee16.o \\r
- $(OBJDIR)/juce_video_f128c512.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \\r
+ $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \\r
+ $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \\r
+ $(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o \\r
+ $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \\r
+ $(JUCE_OBJDIR)/juce_events_d2be882c.o \\r
+ $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \\r
+ $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \\r
+ $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \\r
+ $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \\r
+ $(JUCE_OBJDIR)/juce_osc_be4cee16.o \\r
+ $(JUCE_OBJDIR)/juce_video_f128c512.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking UnitTestRunner\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama\r
+\r
clean:\r
@echo Cleaning UnitTestRunner\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping UnitTestRunner\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_devices.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_formats.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_audio_processors_dea3173d.o: ../../JuceLibraryCode/juce_audio_processors.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_audio_processors.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_cryptography_6de2ebff.o: ../../JuceLibraryCode/juce_cryptography.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_cryptography.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_data_structures.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_events.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_graphics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_basics.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_gui_extra.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_opengl.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_osc_be4cee16.o: ../../JuceLibraryCode/juce_osc.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_osc.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_video_f128c512.o: ../../JuceLibraryCode/juce_video.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_video.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
160B1F8323819A36A4CC4C3F = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ImageButton.cpp"; sourceTree = "SOURCE_ROOT"; };
16397F1BBEA97057B0654612 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; };
16593ED55AEBE25460A4EBA6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseInactivityDetector.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h"; sourceTree = "SOURCE_ROOT"; };
+ 16CA9656E3C51EFD0962ABC4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTInterface.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTInterface.h"; sourceTree = "SOURCE_ROOT"; };
17062116C1616CD502D341A4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpc.c; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/lpc.c"; sourceTree = "SOURCE_ROOT"; };
171628256C4807C720EDF3B8 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jinclude.h; path = "../../../../modules/juce_graphics/image_formats/jpglib/jinclude.h"; sourceTree = "SOURCE_ROOT"; };
1763FA2F0163DB596EF3700A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; };
260BCCEEC92A36331EEFF027 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OSCArgument.cpp"; path = "../../../../modules/juce_osc/osc/juce_OSCArgument.cpp"; sourceTree = "SOURCE_ROOT"; };
262E707413C300E64622593C = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SystemTrayIconComponent.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
26C762280E4F60A092DFFB34 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ColourSelector.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_ColourSelector.cpp"; sourceTree = "SOURCE_ROOT"; };
+ 26E5B298938701E1D018220A = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexBox.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.h"; sourceTree = "SOURCE_ROOT"; };
27166FCCEBF8B19FC2ED5B17 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bitreader.c; path = "../../../../modules/juce_audio_formats/codecs/flac/libFLAC/bitreader.c"; sourceTree = "SOURCE_ROOT"; };
2741E1112861631B9834FBC6 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileListComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp"; sourceTree = "SOURCE_ROOT"; };
2755EC73A85568278839728D = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TextLayout.h"; path = "../../../../modules/juce_graphics/fonts/juce_TextLayout.h"; sourceTree = "SOURCE_ROOT"; };
B1626CB532C9DF380E7B7CD4 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; };
B16C1AED530B3A79338D5259 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_posix_NamedPipe.cpp"; path = "../../../../modules/juce_core/native/juce_posix_NamedPipe.cpp"; sourceTree = "SOURCE_ROOT"; };
B18BD25724FF16CA47FF7E50 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; };
+ B25FBFC3C69276864F38B667 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FlexItem.h"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexItem.h"; sourceTree = "SOURCE_ROOT"; };
B2AA22B23779CE171655790B = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioIODevice.cpp"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp"; sourceTree = "SOURCE_ROOT"; };
B2B2B0D649F7F56CA1204146 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_audio_basics.h"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.h"; sourceTree = "SOURCE_ROOT"; };
B2B8E7BE0607DA166DAAEFEF = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_devices.mm"; path = "../../../../modules/juce_audio_devices/juce_audio_devices.mm"; sourceTree = "SOURCE_ROOT"; };
E51C2746AF287DBC983CAF65 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; };
E55B6C4F535EDA51815F5DE7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_44u.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_44u.h"; sourceTree = "SOURCE_ROOT"; };
E5EFB122EEF47FB2E7A3FB77 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "setup_11.h"; path = "../../../../modules/juce_audio_formats/codecs/oggvorbis/libvorbis-1.3.2/lib/modes/setup_11.h"; sourceTree = "SOURCE_ROOT"; };
+ E5F7384BF7C987FE5EACA732 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FlexBox.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_FlexBox.cpp"; sourceTree = "SOURCE_ROOT"; };
E61E0DA3871788BA6154F2E3 = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Midi.cpp"; sourceTree = "SOURCE_ROOT"; };
E674FC044530BA5A4171B4D7 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jidctfst.c; path = "../../../../modules/juce_graphics/image_formats/jpglib/jidctfst.c"; sourceTree = "SOURCE_ROOT"; };
E7153B9DA221B856B57005B2 = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VST3Headers.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VST3Headers.h"; sourceTree = "SOURCE_ROOT"; };
E7153B9DA221B856B57005B2,
458AFB04FC657C0B8E140C57,
D42D77C52B0B860D000123A7,
+ 16CA9656E3C51EFD0962ABC4,
E51C2746AF287DBC983CAF65,
E3D8F97C26B8E03820AFC971,
763A365B46F5D3EDD8F8B1EF, ); name = "format_types"; sourceTree = "<group>"; };
4426EC205176AA7852F91116,
E4DCAABE4085DF010D24210A,
6D2B5D8FEC6A4D43F0F6256A,
+ E5F7384BF7C987FE5EACA732,
+ 26E5B298938701E1D018220A,
+ B25FBFC3C69276864F38B667,
7C1569CE706496770E9FF916,
564B46F9A1C2CEE40DC7E381,
E1A16FFA5C8586083CB95802,
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="Z2Xzcp" name="UnitTestRunner" projectType="consoleapp" version="1.0.0"\r
bundleIdentifier="com.yourcompany.UnitTestRunner" includeBinaryInAppConfig="1"\r
- jucerVersion="4.2.3" defines="JUCE_UNIT_TESTS=1">\r
+ jucerVersion="4.2.4" defines="JUCE_UNIT_TESTS=1">\r
<MAINGROUP id="GZdWCU" name="UnitTestRunner">\r
<GROUP id="{22894462-E1A9-036F-ED94-B51A50C87552}" name="Source">\r
<FILE id="ynaYaM" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/>\r
<?xml version="1.0" encoding="UTF-8"?>\r
\r
<JUCERPROJECT id="3t6YqETY1" name="BinaryBuilder" projectType="consoleapp"\r
- juceFolder="../../../juce" jucerVersion="4.2.3" bundleIdentifier="com.rawmaterialsoftware.binarybuilder"\r
+ juceFolder="../../../juce" jucerVersion="4.2.4" bundleIdentifier="com.rawmaterialsoftware.binarybuilder"\r
includeBinaryInAppConfig="1" version="1.0.0">\r
<EXPORTFORMATS>\r
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
# (this disables dependency generation if multiple architectures are set)\r
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)\r
\r
+ifndef STRIP\r
+ STRIP=strip\r
+endif\r
+\r
+ifndef AR\r
+ AR=ar\r
+endif\r
+\r
ifndef CONFIG\r
CONFIG=Debug\r
endif\r
\r
ifeq ($(CONFIG),Debug)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Debug\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Debug\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -ldl -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -L/usr/X11R6/lib/ $(shell pkg-config --libs libcurl) -ldl -lpthread -lrt \r
\r
TARGET := BinaryBuilder\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
ifeq ($(CONFIG),Release)\r
- BINDIR := build\r
- LIBDIR := build\r
- OBJDIR := build/intermediate/Release\r
- OUTDIR := build\r
+ JUCE_BINDIR := build\r
+ JUCE_LIBDIR := build\r
+ JUCE_OBJDIR := build/intermediate/Release\r
+ JUCE_OUTDIR := build\r
\r
ifeq ($(TARGET_ARCH),)\r
TARGET_ARCH := -march=native\r
endif\r
\r
- CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules\r
- CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -Os\r
- CXXFLAGS += $(CFLAGS) -std=c++11\r
- LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -ldl -lpthread -lrt \r
+ JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_7346DA2A=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules\r
+ JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -Os\r
+ JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11\r
+ JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ $(shell pkg-config --libs libcurl) -ldl -lpthread -lrt \r
\r
TARGET := BinaryBuilder\r
- BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
- CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)\r
+ BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH)\r
+ CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR)\r
endif\r
\r
OBJECTS := \\r
- $(OBJDIR)/Main_90ebc5c2.o \\r
- $(OBJDIR)/juce_core_75b14332.o \\r
+ $(JUCE_OBJDIR)/Main_90ebc5c2.o \\r
+ $(JUCE_OBJDIR)/juce_core_75b14332.o \\r
\r
.PHONY: clean\r
\r
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)\r
+$(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES)\r
@echo Linking BinaryBuilder\r
- -@mkdir -p $(BINDIR)\r
- -@mkdir -p $(LIBDIR)\r
- -@mkdir -p $(OUTDIR)\r
+ -@mkdir -p $(JUCE_BINDIR)\r
+ -@mkdir -p $(JUCE_LIBDIR)\r
+ -@mkdir -p $(JUCE_OUTDIR)\r
@$(BLDCMD)\r
\r
+check-pkg-config:\r
+ @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; }\r
+ @pkg-config --print-errors libcurl\r
+\r
clean:\r
@echo Cleaning BinaryBuilder\r
@$(CLEANCMD)\r
\r
strip:\r
@echo Stripping BinaryBuilder\r
- -@strip --strip-unneeded $(OUTDIR)/$(TARGET)\r
+ -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET)\r
\r
-$(OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling Main.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-$(OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
- -@mkdir -p $(OBJDIR)\r
+$(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp\r
+ -@mkdir -p $(JUCE_OBJDIR)\r
@echo "Compiling juce_core.cpp"\r
- @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"\r
+ @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<"\r
\r
-include $(OBJECTS:%.o=%.d)\r
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "/usr/bin";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.rawmaterialsoftware.binarybuilder;
SDKROOT_ppc = macosx10.5; }; name = Debug; };
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
HEADER_SEARCH_PATHS = ("../../JuceLibraryCode", "../../../../modules", "$(inherited)");
INSTALL_PATH = "/usr/bin";
+ MACOSX_DEPLOYMENT_TARGET = 10.11;
MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
PRODUCT_BUNDLE_IDENTIFIER = com.rawmaterialsoftware.binarybuilder;
SDKROOT_ppc = macosx10.5; }; name = Release; };
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
\r
#endif // __JUCE_APPCONFIG_3T6YQETY1__\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <ExcludedFromBuild>true</ExcludedFromBuild>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<ExcludedFromBuild>true</ExcludedFromBuild>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Common.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3Headers.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTPluginFormat.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\processors\juce_AudioChannelSet.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentBuilder.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ComponentMovementWatcher.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h"/>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_MultiDocumentPanel.h"/>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ResizableBorderComponent.h"/>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.cpp">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClCompile>\r
<ClCompile Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.cpp">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClCompile>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VST3PluginFormat.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTInterface.h">\r
+ <Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_audio_processors\format_types\juce_VSTMidiEventList.h">\r
<Filter>Juce Modules\juce_audio_processors\format_types</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_ConcertinaPanel.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexBox.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_FlexItem.h">\r
+ <Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
+ </ClInclude>\r
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\layout\juce_GroupComponent.h">\r
<Filter>Juce Modules\juce_gui_basics\layout</Filter>\r
</ClInclude>\r
//#define JUCE_USE_CURL\r
#endif\r
\r
+#ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+ //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+#endif\r
+\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ //#define JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+#endif\r
+\r
//==============================================================================\r
// juce_graphics flags:\r
\r
\r
<JUCERPROJECT id="IvabE4" name="juce_dll" projectType="library" version="1.0.0"\r
juceLinkage="none" bundleIdentifier="com.rawmaterialsoftware.juce"\r
- jucerVersion="4.2.3" defines="JUCE_DLL_BUILD=1" includeBinaryInAppConfig="1">\r
+ jucerVersion="4.2.4" defines="JUCE_DLL_BUILD=1" includeBinaryInAppConfig="1">\r
<EXPORTFORMATS>\r
<VS2010 targetFolder="Builds/VisualStudio2010">\r
<CONFIGURATIONS>\r
OSXFrameworks: (Optional) A list (space or comma-separated) of OSX frameworks that are needed\r
by this module\r
iOSFrameworks: (Optional) Like OSXFrameworks, but for iOS targets\r
- linuxLibs: (Optional) A list (space or comma-separated) of static libs that should be linked in a\r
+ linuxLibs: (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a\r
linux build (these are passed to the linker via the -l flag)\r
+ linuxPackages: (Optional) A list (space or comma-separated) pkg-config packages that should be used to pass\r
+ compiler (CFLAGS) and linker (LDFLAGS) flags\r
mingwLibs: (Optional) A list (space or comma-separated) of static libs that should be linked in a\r
win32 mingw build (these are passed to the linker via the -l flag)\r
\r
convert between 32 and 64 bit float buffer types.\r
*/\r
template <typename OtherType>\r
- void makeCopyOf (const AudioBuffer<OtherType>& other)\r
+ void makeCopyOf (const AudioBuffer<OtherType>& other, bool avoidReallocating = false)\r
{\r
- setSize (other.getNumChannels(), other.getNumSamples());\r
+ setSize (other.getNumChannels(), other.getNumSamples(), false, false, avoidReallocating);\r
\r
if (other.hasBeenCleared())\r
{\r
\r
ID: juce_audio_basics\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE audio and MIDI data classes\r
description: Classes for audio buffer manipulation, midi message handling, synthesis, etc.\r
website: http://www.juce.com/juce\r
clear();\r
MemoryBlock data;\r
\r
- const int maxSensibleMidiFileSize = 2 * 1024 * 1024;\r
+ const int maxSensibleMidiFileSize = 200 * 1024 * 1024;\r
\r
// (put a sanity-check on the file size, as midi files are generally small)\r
if (sourceStream.readIntoMemoryBlock (data, maxSensibleMidiFileSize))\r
MPESynthesiserBase::MPESynthesiserBase()\r
: instrument (new MPEInstrument),\r
sampleRate (0),\r
- minimumSubBlockSize (32)\r
+ minimumSubBlockSize (32),\r
+ subBlockSubdivisionIsStrict (false)\r
{\r
instrument->addListener (this);\r
}\r
break;\r
}\r
\r
- if (samplesToNextMidiMessage < (firstEvent ? 1 : minimumSubBlockSize))\r
+ if (samplesToNextMidiMessage < ((firstEvent && ! subBlockSubdivisionIsStrict) ? 1 : minimumSubBlockSize))\r
{\r
handleMidiEvent (m);\r
continue;\r
}\r
\r
//==============================================================================\r
-void MPESynthesiserBase::setMinimumRenderingSubdivisionSize (int numSamples) noexcept\r
+void MPESynthesiserBase::setMinimumRenderingSubdivisionSize (int numSamples, bool shouldBeStrict) noexcept\r
{\r
jassert (numSamples > 0); // it wouldn't make much sense for this to be less than 1\r
minimumSubBlockSize = numSamples;\r
+ subBlockSubdivisionIsStrict = shouldBeStrict;\r
}\r
The default setting is 32, which means that midi messages are accurate to about < 1ms\r
accuracy, which is probably fine for most purposes, but you may want to increase or\r
decrease this value for your synth.\r
+\r
+ If shouldBeStrict is true, the audio sub-blocks will strictly never be smaller than numSamples.\r
+\r
+ If shouldBeStrict is false (default), the first audio sub-block in the buffer is allowed\r
+ to be smaller, to make sure that the first MIDI event in a buffer will always be sample-accurate\r
+ (this can sometimes help to avoid quantisation or phasing issues).\r
*/\r
- void setMinimumRenderingSubdivisionSize (int numSamples) noexcept;\r
+ void setMinimumRenderingSubdivisionSize (int numSamples, bool shouldBeStrict = false) noexcept;\r
\r
//==============================================================================\r
/** Puts the synthesiser into legacy mode.\r
CriticalSection noteStateLock;\r
double sampleRate;\r
int minimumSubBlockSize;\r
+ bool subBlockSubdivisionIsStrict;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MPESynthesiserBase)\r
};\r
: sampleRate (0),\r
lastNoteOnCounter (0),\r
minimumSubBlockSize (32),\r
+ subBlockSubdivisionIsStrict (false),\r
shouldStealNotes (true)\r
{\r
for (int i = 0; i < numElementsInArray (lastPitchWheelValues); ++i)\r
shouldStealNotes = shouldSteal;\r
}\r
\r
-void Synthesiser::setMinimumRenderingSubdivisionSize (int numSamples) noexcept\r
+void Synthesiser::setMinimumRenderingSubdivisionSize (int numSamples, bool shouldBeStrict) noexcept\r
{\r
jassert (numSamples > 0); // it wouldn't make much sense for this to be less than 1\r
minimumSubBlockSize = numSamples;\r
+ subBlockSubdivisionIsStrict = shouldBeStrict;\r
}\r
\r
//==============================================================================\r
break;\r
}\r
\r
- if (samplesToNextMidiMessage < (firstEvent ? 1 : minimumSubBlockSize))\r
+ if (samplesToNextMidiMessage < ((firstEvent && ! subBlockSubdivisionIsStrict) ? 1 : minimumSubBlockSize))\r
{\r
handleMidiEvent (m);\r
continue;\r
The default setting is 32, which means that midi messages are accurate to about < 1ms\r
accuracy, which is probably fine for most purposes, but you may want to increase or\r
decrease this value for your synth.\r
+\r
+ If shouldBeStrict is true, the audio sub-blocks will strictly never be smaller than numSamples.\r
+\r
+ If shouldBeStrict is false (default), the first audio sub-block in the buffer is allowed\r
+ to be smaller, to make sure that the first MIDI event in a buffer will always be sample-accurate\r
+ (this can sometimes help to avoid quantisation or phasing issues).\r
*/\r
- void setMinimumRenderingSubdivisionSize (int numSamples) noexcept;\r
+ void setMinimumRenderingSubdivisionSize (int numSamples, bool shouldBeStrict = false) noexcept;\r
\r
protected:\r
//==============================================================================\r
double sampleRate;\r
uint32 lastNoteOnCounter;\r
int minimumSubBlockSize;\r
+ bool subBlockSubdivisionIsStrict;\r
bool shouldStealNotes;\r
BigInteger sustainPedalsDown;\r
\r
: numInputChansNeeded (0),\r
numOutputChansNeeded (2),\r
listNeedsScanning (true),\r
- inputLevel (0),\r
cpuUsageMs (0),\r
timeToCpuScale (0)\r
{\r
{\r
const ScopedLock sl (audioCallbackLock);\r
\r
- if (inputLevelMeasurementEnabledCount.get() > 0 && numInputChannels > 0)\r
- {\r
- for (int j = 0; j < numSamples; ++j)\r
- {\r
- float s = 0;\r
-\r
- for (int i = 0; i < numInputChannels; ++i)\r
- s += std::abs (inputChannelData[i][j]);\r
-\r
- s /= numInputChannels;\r
-\r
- const double decayFactor = 0.99992;\r
-\r
- if (s > inputLevel)\r
- inputLevel = s;\r
- else if (inputLevel > 0.001f)\r
- inputLevel *= decayFactor;\r
- else\r
- inputLevel = 0;\r
- }\r
- }\r
- else\r
- {\r
- inputLevel = 0;\r
- }\r
+ inputLevelMeter.updateLevel (inputChannelData, numInputChannels, numSamples);\r
+ outputLevelMeter.updateLevel (const_cast<const float**> (outputChannelData), numOutputChannels, numSamples);\r
\r
if (callbacks.size() > 0)\r
{\r
}\r
\r
//==============================================================================\r
-void AudioDeviceManager::enableInputLevelMeasurement (const bool enableMeasurement)\r
+AudioDeviceManager::LevelMeter::LevelMeter() noexcept : level() {}\r
+\r
+void AudioDeviceManager::LevelMeter::updateLevel (const float* const* channelData, int numChannels, int numSamples) noexcept\r
{\r
- if (enableMeasurement)\r
- ++inputLevelMeasurementEnabledCount;\r
+ if (enabled.get() != 0 && numChannels > 0)\r
+ {\r
+ for (int j = 0; j < numSamples; ++j)\r
+ {\r
+ float s = 0;\r
+\r
+ for (int i = 0; i < numChannels; ++i)\r
+ s += std::abs (channelData[i][j]);\r
+\r
+ s /= numChannels;\r
+\r
+ const double decayFactor = 0.99992;\r
+\r
+ if (s > level)\r
+ level = s;\r
+ else if (level > 0.001f)\r
+ level *= decayFactor;\r
+ else\r
+ level = 0;\r
+ }\r
+ }\r
else\r
- --inputLevelMeasurementEnabledCount;\r
+ {\r
+ level = 0;\r
+ }\r
+}\r
\r
- inputLevel = 0;\r
+void AudioDeviceManager::LevelMeter::setEnabled (bool shouldBeEnabled) noexcept\r
+{\r
+ enabled.set (shouldBeEnabled ? 1 : 0);\r
+ level = 0;\r
}\r
\r
-double AudioDeviceManager::getCurrentInputLevel() const\r
+double AudioDeviceManager::LevelMeter::getCurrentLevel() const noexcept\r
{\r
- jassert (inputLevelMeasurementEnabledCount.get() > 0); // you need to call enableInputLevelMeasurement() before using this!\r
- return inputLevel;\r
+ jassert (enabled.get() != 0); // you need to call setEnabled (true) before using this!\r
+ return level;\r
}\r
+\r
+double AudioDeviceManager::getCurrentInputLevel() const noexcept { return inputLevelMeter.getCurrentLevel(); }\r
+double AudioDeviceManager::getCurrentOutputLevel() const noexcept { return outputLevelMeter.getCurrentLevel(); }\r
+\r
+void AudioDeviceManager::enableInputLevelMeasurement (bool enable) noexcept { inputLevelMeter.setEnabled (enable); }\r
+void AudioDeviceManager::enableOutputLevelMeasurement (bool enable) noexcept { outputLevelMeter.setEnabled (enable); }\r
bool playOnAllOutputChannels = false);\r
\r
//==============================================================================\r
- /** Turns on level-measuring.\r
-\r
- When enabled, the device manager will measure the peak input level\r
- across all channels, and you can get this level by calling getCurrentInputLevel().\r
-\r
- This is mainly intended for audio setup UI panels to use to create a mic\r
- level display, so that the user can check that they've selected the right\r
- device.\r
+ /** Turns on level-measuring for input channels.\r
+ @see getCurrentInputLevel()\r
+ */\r
+ void enableInputLevelMeasurement (bool enableMeasurement) noexcept;\r
\r
- A simple filter is used to make the level decay smoothly, but this is\r
- only intended for giving rough feedback, and not for any kind of accurate\r
- measurement.\r
+ /** Turns on level-measuring for output channels.\r
+ @see getCurrentOutputLevel()\r
*/\r
- void enableInputLevelMeasurement (bool enableMeasurement);\r
+ void enableOutputLevelMeasurement (bool enableMeasurement) noexcept;\r
\r
/** Returns the current input level.\r
To use this, you must first enable it by calling enableInputLevelMeasurement().\r
- See enableInputLevelMeasurement() for more info.\r
+ @see enableInputLevelMeasurement()\r
+ */\r
+ double getCurrentInputLevel() const noexcept;\r
+\r
+ /** Returns the current output level.\r
+ To use this, you must first enable it by calling enableOutputLevelMeasurement().\r
+ @see enableOutputLevelMeasurement()\r
*/\r
- double getCurrentInputLevel() const;\r
+ double getCurrentOutputLevel() const noexcept;\r
\r
/** Returns the a lock that can be used to synchronise access to the audio callback.\r
Obviously while this is locked, you're blocking the audio thread from running, so\r
BigInteger inputChannels, outputChannels;\r
ScopedPointer<XmlElement> lastExplicitSettings;\r
mutable bool listNeedsScanning;\r
- Atomic<int> inputLevelMeasurementEnabledCount;\r
- double inputLevel;\r
AudioSampleBuffer tempBuffer;\r
\r
struct MidiCallbackInfo\r
\r
double cpuUsageMs, timeToCpuScale;\r
\r
+ struct LevelMeter\r
+ {\r
+ LevelMeter() noexcept;\r
+ void updateLevel (const float* const*, int numChannels, int numSamples) noexcept;\r
+ void setEnabled (bool) noexcept;\r
+ double getCurrentLevel() const noexcept;\r
+\r
+ Atomic<int> enabled;\r
+ double level;\r
+ };\r
+\r
+ LevelMeter inputLevelMeter, outputLevelMeter;\r
+\r
//==============================================================================\r
class CallbackHandler;\r
friend class CallbackHandler;\r
#import <AVFoundation/AVFoundation.h>\r
#import <CoreMIDI/MIDIServices.h>\r
\r
+ #if TARGET_OS_SIMULATOR\r
+ #import <CoreMIDI/MIDINetworkSession.h>\r
+ #endif\r
+\r
//==============================================================================\r
#elif JUCE_WINDOWS\r
#if JUCE_WASAPI\r
- #include <MMReg.h>\r
+ #include <mmreg.h>\r
#endif\r
\r
#if JUCE_ASIO\r
\r
ID: juce_audio_devices\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE audio and MIDI I/O device classes\r
description: Classes to play and record from audio and MIDI I/O devices\r
website: http://www.juce.com/juce\r
dependencies: juce_audio_basics, juce_audio_formats, juce_events\r
OSXFrameworks: CoreAudio CoreMIDI DiscRecording\r
iOSFrameworks: CoreAudio CoreMIDI AudioToolbox AVFoundation\r
- linuxLibs: asound\r
+ linuxPackages: alsa\r
mingwLibs: winmm\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
void handleStatusChange (bool enabled, const char* reason)\r
{\r
+ const ScopedLock myScopedLock (callbackLock);\r
+\r
JUCE_IOS_AUDIO_LOG ("handleStatusChange: enabled: " << (int) enabled << ", reason: " << reason);\r
\r
isRunning = enabled;\r
\r
void handleRouteChange (const char* reason)\r
{\r
+ const ScopedLock myScopedLock (callbackLock);\r
+\r
JUCE_IOS_AUDIO_LOG ("handleRouteChange: reason: " << reason);\r
\r
fixAudioRouteIfSetToReceiver();\r
if (audioInputIsAvailable && numInputChannels > 0)\r
err = AudioUnitRender (audioUnit, flags, time, 1, numFrames, data);\r
\r
- const ScopedLock sl (callbackLock);\r
+ const ScopedTryLock stl (callbackLock);\r
\r
- if (callback != nullptr)\r
+ if (stl.isLocked() && callback != nullptr)\r
{\r
if ((int) numFrames > floatData.getNumSamples())\r
prepareFloatBuffers ((int) numFrames);\r
\r
void AudioSessionHolder::handleRouteChange (const char* reason) const\r
{\r
- for (auto device: activeDevices)\r
- device->handleRouteChange (reason);\r
+ struct RouteChangeMessage : public CallbackMessage\r
+ {\r
+ RouteChangeMessage (Array<iOSAudioIODevice*> devs, const char* r)\r
+ : devices (devs), changeReason (r)\r
+ {\r
+ }\r
+\r
+ void messageCallback() override\r
+ {\r
+ for (auto device: devices)\r
+ device->handleRouteChange (changeReason);\r
+ }\r
+\r
+ Array<iOSAudioIODevice*> devices;\r
+ const char* changeReason;\r
+ };\r
+\r
+ (new RouteChangeMessage (activeDevices, reason))->post();\r
}\r
\r
#undef JUCE_NSERROR_CHECK\r
public:\r
typedef ReferenceCountedObjectPtr<AlsaClient> Ptr;\r
\r
- AlsaClient (bool forInput)\r
- : input (forInput), handle (nullptr)\r
+ static Ptr getInstance (bool forInput)\r
{\r
- snd_seq_open (&handle, "default", forInput ? SND_SEQ_OPEN_INPUT\r
- : SND_SEQ_OPEN_OUTPUT, 0);\r
- }\r
+ AlsaClient*& instance = (forInput ? inInstance : outInstance);\r
+ if (instance == nullptr)\r
+ instance = new AlsaClient (forInput);\r
\r
- ~AlsaClient()\r
- {\r
- if (handle != nullptr)\r
- {\r
- snd_seq_close (handle);\r
- handle = nullptr;\r
- }\r
-\r
- jassert (activeCallbacks.size() == 0);\r
-\r
- if (inputThread)\r
- {\r
- inputThread->stopThread (3000);\r
- inputThread = nullptr;\r
- }\r
+ return instance;\r
}\r
\r
bool isInput() const noexcept { return input; }\r
\r
- void setName (const String& name)\r
- {\r
- snd_seq_set_client_name (handle, name.toUTF8());\r
- }\r
-\r
void registerCallback (AlsaPortAndCallback* cb)\r
{\r
if (cb != nullptr)\r
Array<AlsaPortAndCallback*> activeCallbacks;\r
CriticalSection callbackLock;\r
\r
+ static AlsaClient* inInstance;\r
+ static AlsaClient* outInstance;\r
+\r
+ //==============================================================================\r
+ friend class ReferenceCountedObjectPtr<AlsaClient>;\r
+ friend struct ContainerDeletePolicy<AlsaClient>;\r
+\r
+ AlsaClient (bool forInput)\r
+ : input (forInput), handle (nullptr)\r
+ {\r
+ AlsaClient*& instance = (input ? inInstance : outInstance);\r
+ jassert (instance == nullptr);\r
+\r
+ instance = this;\r
+\r
+ snd_seq_open (&handle, "default", forInput ? SND_SEQ_OPEN_INPUT\r
+ : SND_SEQ_OPEN_OUTPUT, 0);\r
+\r
+ snd_seq_set_client_name (handle, forInput ? JUCE_ALSA_MIDI_INPUT_NAME\r
+ : JUCE_ALSA_MIDI_OUTPUT_NAME);\r
+ }\r
+\r
+ ~AlsaClient()\r
+ {\r
+ AlsaClient*& instance = (input ? inInstance : outInstance);\r
+ jassert (instance != nullptr);\r
+\r
+ instance = nullptr;\r
+\r
+ if (handle != nullptr)\r
+ {\r
+ snd_seq_close (handle);\r
+ handle = nullptr;\r
+ }\r
+\r
+ jassert (activeCallbacks.size() == 0);\r
+\r
+ if (inputThread)\r
+ {\r
+ inputThread->stopThread (3000);\r
+ inputThread = nullptr;\r
+ }\r
+ }\r
+\r
//==============================================================================\r
class MidiInputThread : public Thread\r
{\r
ScopedPointer<MidiInputThread> inputThread;\r
};\r
\r
-\r
-static AlsaClient::Ptr globalAlsaSequencerIn()\r
-{\r
- static AlsaClient::Ptr global (new AlsaClient (true));\r
- return global;\r
-}\r
-\r
-static AlsaClient::Ptr globalAlsaSequencerOut()\r
-{\r
- static AlsaClient::Ptr global (new AlsaClient (false));\r
- return global;\r
-}\r
-\r
-static AlsaClient::Ptr globalAlsaSequencer (bool input)\r
-{\r
- return input ? globalAlsaSequencerIn()\r
- : globalAlsaSequencerOut();\r
-}\r
+AlsaClient* AlsaClient::inInstance = nullptr;\r
+AlsaClient* AlsaClient::outInstance = nullptr;\r
\r
//==============================================================================\r
// represents an input or output port of the supplied AlsaClient\r
&& (snd_seq_port_info_get_capability (portInfo) & (forInput ? SND_SEQ_PORT_CAP_READ\r
: SND_SEQ_PORT_CAP_WRITE)) != 0)\r
{\r
- deviceNamesFound.add (snd_seq_client_info_get_name (clientInfo));\r
+ const String clientName = snd_seq_client_info_get_name (clientInfo);\r
+ const String portName = snd_seq_port_info_get_name(portInfo);\r
+\r
+ if (clientName == portName)\r
+ deviceNamesFound.add (clientName);\r
+ else\r
+ deviceNamesFound.add (clientName + ": " + portName);\r
\r
if (deviceNamesFound.size() == deviceIndexToOpen + 1)\r
{\r
const int sourcePort = snd_seq_port_info_get_port (portInfo);\r
- const int sourceClient = snd_seq_client_info_get_client (clientInfo);\r
\r
if (sourcePort != -1)\r
{\r
- const String name (forInput ? JUCE_ALSA_MIDI_INPUT_NAME\r
- : JUCE_ALSA_MIDI_OUTPUT_NAME);\r
- seq->setName (name);\r
- port.createPort (seq, name, forInput);\r
+ const int sourceClient = snd_seq_client_info_get_client (clientInfo);\r
+\r
+ port.createPort (seq, portName, forInput);\r
port.connectWith (sourceClient, sourcePort);\r
}\r
}\r
const int deviceIndexToOpen)\r
{\r
AlsaPort port;\r
- const AlsaClient::Ptr client (globalAlsaSequencer (forInput));\r
+ const AlsaClient::Ptr client (AlsaClient::getInstance (forInput));\r
\r
if (snd_seq_t* const seqHandle = client->get())\r
{\r
return port;\r
}\r
\r
-AlsaPort createMidiDevice (const bool forInput, const String& deviceNameToOpen)\r
-{\r
- AlsaPort port;\r
- AlsaClient::Ptr client (new AlsaClient (forInput));\r
-\r
- if (client->get())\r
- {\r
- client->setName (deviceNameToOpen + (forInput ? " Input" : " Output"));\r
- port.createPort (client, forInput ? "in" : "out", forInput);\r
- }\r
-\r
- return port;\r
-}\r
\r
//==============================================================================\r
class MidiOutputDevice\r
numBytes -= numSent;\r
data += numSent;\r
\r
- snd_seq_ev_set_source (&event, 0);\r
+ snd_seq_ev_set_source (&event, port.portId);\r
snd_seq_ev_set_subs (&event);\r
snd_seq_ev_set_direct (&event);\r
\r
MidiOutput* MidiOutput::createNewDevice (const String& deviceName)\r
{\r
MidiOutput* newDevice = nullptr;\r
+ AlsaPort port;\r
+\r
+ const AlsaClient::Ptr client (AlsaClient::getInstance (false));\r
\r
- AlsaPort port (createMidiDevice (false, deviceName));\r
+ port.createPort (client, deviceName, false);\r
\r
if (port.isValid())\r
{\r
MidiInput* MidiInput::createNewDevice (const String& deviceName, MidiInputCallback* callback)\r
{\r
MidiInput* newDevice = nullptr;\r
+ AlsaPort port;\r
+\r
+ const AlsaClient::Ptr client (AlsaClient::getInstance (true));\r
\r
- AlsaPort port (createMidiDevice (true, deviceName));\r
+ port.createPort (client, deviceName, true);\r
\r
if (port.isValid())\r
{\r
\r
[device releaseMediaReservation];\r
[device releaseExclusiveAccess];\r
- return String::empty;\r
+ return String();\r
}\r
\r
DRDevice* device;\r
struct CoreAudioClasses\r
{\r
\r
+class CoreAudioIODeviceType;\r
class CoreAudioIODevice;\r
\r
//==============================================================================\r
intern->deviceDetailsChanged();\r
break;\r
\r
+ case kAudioObjectPropertyOwnedObjects:\r
+ intern->stop (false);\r
+ intern->owner.deviceType.triggerAsyncAudioDeviceListChange();\r
+ break;\r
+\r
case kAudioDevicePropertyBufferSizeRange:\r
case kAudioDevicePropertyVolumeScalar:\r
case kAudioDevicePropertyMute:\r
class CoreAudioIODevice : public AudioIODevice\r
{\r
public:\r
- CoreAudioIODevice (const String& deviceName,\r
+ CoreAudioIODevice (CoreAudioIODeviceType& dt,\r
+ const String& deviceName,\r
AudioDeviceID inputDeviceId, const int inputIndex_,\r
AudioDeviceID outputDeviceId, const int outputIndex_)\r
: AudioIODevice (deviceName, "CoreAudio"),\r
+ deviceType (dt),\r
inputIndex (inputIndex_),\r
outputIndex (outputIndex_),\r
isOpen_ (false),\r
return lastError;\r
}\r
\r
+ void audioDeviceListChanged()\r
+ {\r
+ deviceType.audioDeviceListChanged();\r
+ }\r
+\r
+ CoreAudioIODeviceType& deviceType;\r
int inputIndex, outputIndex;\r
\r
private:\r
\r
\r
//==============================================================================\r
-class CoreAudioIODeviceType : public AudioIODeviceType\r
+class CoreAudioIODeviceType : public AudioIODeviceType,\r
+ private AsyncUpdater\r
{\r
public:\r
CoreAudioIODeviceType()\r
}\r
\r
//==============================================================================\r
- void scanForDevices()\r
+ void scanForDevices() override\r
{\r
hasScanned = true;\r
\r
outputDeviceNames.appendNumbersToDuplicates (false, true);\r
}\r
\r
- StringArray getDeviceNames (bool wantInputNames) const\r
+ StringArray getDeviceNames (bool wantInputNames) const override\r
{\r
jassert (hasScanned); // need to call scanForDevices() before doing this\r
\r
: outputDeviceNames;\r
}\r
\r
- int getDefaultDeviceIndex (bool forInput) const\r
+ int getDefaultDeviceIndex (bool forInput) const override\r
{\r
jassert (hasScanned); // need to call scanForDevices() before doing this\r
\r
return 0;\r
}\r
\r
- int getIndexOfDevice (AudioIODevice* device, bool asInput) const\r
+ int getIndexOfDevice (AudioIODevice* device, bool asInput) const override\r
{\r
jassert (hasScanned); // need to call scanForDevices() before doing this\r
\r
return -1;\r
}\r
\r
- bool hasSeparateInputsAndOutputs() const { return true; }\r
+ bool hasSeparateInputsAndOutputs() const override { return true; }\r
\r
AudioIODevice* createDevice (const String& outputDeviceName,\r
- const String& inputDeviceName)\r
+ const String& inputDeviceName) override\r
{\r
jassert (hasScanned); // need to call scanForDevices() before doing this\r
\r
String combinedName (outputDeviceName.isEmpty() ? inputDeviceName : outputDeviceName);\r
\r
if (inputDeviceID == outputDeviceID)\r
- return new CoreAudioIODevice (combinedName, inputDeviceID, inputIndex, outputDeviceID, outputIndex);\r
+ return new CoreAudioIODevice (*this, combinedName, inputDeviceID, inputIndex, outputDeviceID, outputIndex);\r
\r
ScopedPointer<CoreAudioIODevice> in, out;\r
\r
if (inputDeviceID != 0)\r
- in = new CoreAudioIODevice (inputDeviceName, inputDeviceID, inputIndex, 0, -1);\r
+ in = new CoreAudioIODevice (*this, inputDeviceName, inputDeviceID, inputIndex, 0, -1);\r
\r
if (outputDeviceID != 0)\r
- out = new CoreAudioIODevice (outputDeviceName, 0, -1, outputDeviceID, outputIndex);\r
+ out = new CoreAudioIODevice (*this, outputDeviceName, 0, -1, outputDeviceID, outputIndex);\r
\r
if (in == nullptr) return out.release();\r
if (out == nullptr) return in.release();\r
return combo.release();\r
}\r
\r
+ void audioDeviceListChanged()\r
+ {\r
+ scanForDevices();\r
+ callDeviceChangeListeners();\r
+ }\r
+\r
+ void triggerAsyncAudioDeviceListChange()\r
+ {\r
+ triggerAsyncUpdate();\r
+ }\r
+\r
//==============================================================================\r
private:\r
StringArray inputDeviceNames, outputDeviceNames;\r
return total;\r
}\r
\r
- void audioDeviceListChanged()\r
- {\r
- scanForDevices();\r
- callDeviceChangeListeners();\r
- }\r
-\r
static OSStatus hardwareListenerProc (AudioDeviceID, UInt32, const AudioObjectPropertyAddress*, void* clientData)\r
{\r
static_cast<CoreAudioIODeviceType*> (clientData)->audioDeviceListChanged();\r
return noErr;\r
}\r
\r
+ void handleAsyncUpdate() override\r
+ {\r
+ audioDeviceListChanged();\r
+ }\r
+\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CoreAudioIODeviceType)\r
};\r
\r
// correctly when called from the message thread!\r
jassert (MessageManager::getInstance()->isThisTheMessageThread());\r
\r
+ #if TARGET_OS_SIMULATOR\r
+ // Enable MIDI for iOS simulator\r
+ MIDINetworkSession* session = [MIDINetworkSession defaultSession];\r
+ session.enabled = YES;\r
+ session.connectionPolicy = MIDINetworkConnectionPolicy_Anyone;\r
+ #endif\r
+\r
+\r
CoreMidiHelpers::ScopedCFString name;\r
name.cfString = getGlobalMidiClientName().toCFString();\r
CHECK_ERROR (MIDIClientCreate (name.cfString, &globalSystemChangeCallback, nullptr, &globalMidiClient));\r
}\r
\r
#if JUCE_MINGW\r
+\r
#define JUCE_COMCLASS(name, guid) \\r
struct name; \\r
template<> struct UUIDGetter<name> { static CLSID get() { return uuidFromString (guid); } }; \\r
struct name\r
\r
+ #ifdef __uuidof\r
+ #undef __uuidof\r
+ #endif\r
+\r
+ #define __uuidof(cls) UUIDGetter<cls>::get()\r
+\r
struct PROPERTYKEY\r
{\r
GUID fmtid;\r
The source passed in will not be deleted by this object, so must be managed by\r
the caller.\r
\r
- @param newSource the new input source to use. This may be zero\r
+ @param newSource the new input source to use. This may be a nullptr\r
@param readAheadBufferSize a size of buffer to use for reading ahead. If this\r
is zero, no reading ahead will be done; if it's\r
greater than zero, a BufferingAudioSource will be used\r
\r
#if JUCE_MSVC\r
#pragma warning (disable: 4267 4127 4244 4996 4100 4701 4702 4013 4133 4206 4312 4505 4365 4005 4334 181 111)\r
+ #else\r
+ #define HAVE_LROUND 1\r
#endif\r
\r
#if JUCE_MAC\r
#define FLAC__HAS_X86INTRIN 1\r
#endif\r
\r
-#undef __STDC_LIMIT_MACROS\r
+ #undef __STDC_LIMIT_MACROS\r
#define __STDC_LIMIT_MACROS 1\r
#define flac_max jmax\r
#define flac_min jmin\r
\r
ID: juce_audio_formats\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE audio file format codecs\r
description: Classes for reading and writing various audio file formats.\r
website: http://www.juce.com/juce\r
virtual void removeModifierKeyProvider () = 0;\r
};\r
\r
-#endif
\ No newline at end of file
+#endif\r
computer's audio/MIDI devices using AudioDeviceManager and AudioProcessorPlayer.\r
*/\r
class StandalonePluginHolder\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ : private Timer\r
+ #endif\r
{\r
public:\r
/** Creates an instance of the default plugin.\r
setupAudioDevices (preferredDefaultDeviceName, preferredSetupOptions);\r
reloadPluginState();\r
startPlaying();\r
+\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ startTimer (500);\r
+ #endif\r
}\r
\r
virtual ~StandalonePluginHolder()\r
{\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ stopTimer();\r
+ #endif\r
+\r
deletePlugin();\r
shutDownAudioDevices();\r
}\r
if (settings != nullptr)\r
f = File (settings->getValue ("lastStateFile"));\r
\r
- if (f == File::nonexistent)\r
+ if (f == File())\r
f = File::getSpecialLocation (File::userDocumentsDirectory);\r
\r
return f;\r
/** Pops up a dialog letting the user save the processor's state to a file. */\r
void askUserToSaveState (const String& fileSuffix = String())\r
{\r
+ #if JUCE_MODAL_LOOPS_PERMITTED\r
FileChooser fc (TRANS("Save current state"), getLastFile(), getFilePatterns (fileSuffix));\r
\r
if (fc.browseForFileToSave (true))\r
TRANS("Error whilst saving"),\r
TRANS("Couldn't write to the specified file!"));\r
}\r
+ #else\r
+ ignoreUnused (fileSuffix);\r
+ #endif\r
}\r
\r
/** Pops up a dialog letting the user re-load the processor's state from a file. */\r
void askUserToLoadState (const String& fileSuffix = String())\r
{\r
+ #if JUCE_MODAL_LOOPS_PERMITTED\r
FileChooser fc (TRANS("Load a saved state"), getLastFile(), getFilePatterns (fileSuffix));\r
\r
if (fc.browseForFileToOpen())\r
TRANS("Error whilst loading"),\r
TRANS("Couldn't read from the specified file!"));\r
}\r
+ #else\r
+ ignoreUnused (fileSuffix);\r
+ #endif\r
}\r
\r
//==============================================================================\r
AudioDeviceManager deviceManager;\r
AudioProcessorPlayer player;\r
\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ StringArray lastMidiDevices;\r
+ #endif\r
+\r
private:\r
void setupAudioDevices (const String& preferredDefaultDeviceName,\r
const AudioDeviceManager::AudioDeviceSetup* preferredSetupOptions)\r
deviceManager.removeAudioCallback (&player);\r
}\r
\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ void timerCallback() override\r
+ {\r
+ StringArray midiInputDevices = MidiInput::getDevices();\r
+ if (midiInputDevices != lastMidiDevices)\r
+ {\r
+ {\r
+ const int n = lastMidiDevices.size();\r
+ for (int i = 0; i < n; ++i)\r
+ {\r
+ const String& oldDevice = lastMidiDevices[i];\r
+\r
+ if (! midiInputDevices.contains (oldDevice))\r
+ {\r
+ deviceManager.setMidiInputEnabled (oldDevice, false);\r
+ deviceManager.removeMidiInputCallback (oldDevice, &player);\r
+ }\r
+ }\r
+ }\r
+\r
+ {\r
+ const int n = midiInputDevices.size();\r
+ for (int i = 0; i < n; ++i)\r
+ {\r
+ const String& newDevice = midiInputDevices[i];\r
+\r
+ if (! lastMidiDevices.contains (newDevice))\r
+ {\r
+ deviceManager.addMidiInputCallback (newDevice, &player);\r
+ deviceManager.setMidiInputEnabled (newDevice, true);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ #endif\r
+\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StandalonePluginHolder)\r
};\r
\r
#pragma warning (disable : 4458)\r
#endif\r
\r
-/* These files come with the Steinberg VST SDK - to get them, you'll need to\r
- visit the Steinberg website and agree to whatever is currently required to\r
- get them. The best version to get is the VST3 SDK, which also contains\r
- the older VST2.4 files.\r
-\r
- Then, you'll need to make sure your include path contains your "VST SDK3"\r
- directory (or whatever you've named it on your machine). The Projucer has\r
- a special box for setting this path.\r
-*/\r
-#include <public.sdk/source/vst2.x/audioeffectx.h>\r
-#include <public.sdk/source/vst2.x/aeffeditor.h>\r
-#include <public.sdk/source/vst2.x/audioeffectx.cpp>\r
-#include <public.sdk/source/vst2.x/audioeffect.cpp>\r
-\r
-#if ! VST_2_4_EXTENSIONS\r
- #error "It looks like you're trying to include an out-of-date VSTSDK version - make sure you have at least version 2.4"\r
-#endif\r
+#include "../../juce_audio_processors/format_types/juce_VSTInterface.h"\r
\r
#ifndef JUCE_VST3_CAN_REPLACE_VST2\r
#define JUCE_VST3_CAN_REPLACE_VST2 1\r
/**\r
This is an AudioEffectX object that holds and wraps our AudioProcessor...\r
*/\r
-class JuceVSTWrapper : public AudioEffectX,\r
- public AudioProcessorListener,\r
+class JuceVSTWrapper : public AudioProcessorListener,\r
public AudioPlayHead,\r
private Timer,\r
private AsyncUpdater\r
juce::AudioBuffer<FloatType> processTempBuffer;\r
};\r
\r
+ /** Use the same names as the VST SDK. */\r
+ struct VstOpCodeArguments\r
+ {\r
+ int32 index;\r
+ pointer_sized_int value;\r
+ void* ptr;\r
+ float opt;\r
+ };\r
+\r
public:\r
//==============================================================================\r
- JuceVSTWrapper (audioMasterCallback audioMasterCB, AudioProcessor* const af)\r
- : AudioEffectX (audioMasterCB, af->getNumPrograms(), af->getNumParameters()),\r
+ JuceVSTWrapper (VstHostCallback cb, AudioProcessor* const af)\r
+ : hostCallback (cb),\r
+ sampleRate (44100.f),\r
+ blockSize (1024),\r
filter (af),\r
busUtils (*filter, true, 64),\r
chunkMemoryTime (0),\r
firstProcessCallback (true),\r
shouldDeleteEditor (false),\r
#if JUCE_64BIT\r
- useNSView (true)\r
+ useNSView (true),\r
#else\r
- useNSView (false)\r
- #endif\r
- #if ! JUCE_IOS\r
- , hostWindow (0)\r
+ useNSView (false),\r
#endif\r
+ hostWindow (0)\r
{\r
busUtils.init();\r
\r
bool success = setBusArrangementFromTotalChannelNum (maxNumInChannels, maxNumOutChannels);\r
ignoreUnused (success);\r
\r
- // please file a bug if you hit this assertsion!\r
+ // please file a bug if you hit this assertion!\r
jassert (maxNumInChannels == busUtils.findTotalNumChannels (true) && success\r
&& maxNumOutChannels == busUtils.findTotalNumChannels (false));\r
}\r
filter->setPlayHead (this);\r
filter->addListener (this);\r
\r
- cEffect.flags |= effFlagsHasEditor;\r
- cEffect.version = convertHexVersionToDecimal (JucePlugin_VersionCode);\r
-\r
- setUniqueID ((int) (JucePlugin_VSTUniqueID));\r
-\r
- setNumInputs (maxNumInChannels);\r
- setNumOutputs (maxNumOutChannels);\r
-\r
- canProcessReplacing (true);\r
- canDoubleReplacing (filter->supportsDoublePrecisionProcessing());\r
-\r
- isSynth ((JucePlugin_IsSynth) != 0);\r
- setInitialDelay (filter->getLatencySamples());\r
- programsAreChunks (true);\r
+ memset (&vstEffect, 0, sizeof (vstEffect));\r
+ vstEffect.interfaceIdentifier = juceVstInterfaceIdentifier;\r
+ vstEffect.dispatchFunction = dispatcherCB;\r
+ vstEffect.processAudioFunction = nullptr;\r
+ vstEffect.setParameterValueFunction = setParameterCB;\r
+ vstEffect.getParameterValueFunction = getParameterCB;\r
+ vstEffect.numPrograms = jmax (1, af->getNumPrograms());\r
+ vstEffect.numParameters = af->getNumParameters();\r
+ vstEffect.numInputChannels = maxNumInChannels;\r
+ vstEffect.numOutputChannels = maxNumOutChannels;\r
+ vstEffect.latency = filter->getLatencySamples();\r
+ vstEffect.effectPointer = this;\r
+ vstEffect.plugInIdentifier = JucePlugin_VSTUniqueID;\r
+ vstEffect.plugInVersion = convertHexVersionToDecimal (JucePlugin_VersionCode);\r
+ vstEffect.processAudioInplaceFunction = processReplacingCB;\r
+ vstEffect.processDoubleAudioInplaceFunction = processDoubleReplacingCB;\r
+\r
+ vstEffect.flags |= vstEffectFlagHasEditor;\r
+\r
+ vstEffect.flags |= vstEffectFlagInplaceAudio;\r
+ if (filter->supportsDoublePrecisionProcessing())\r
+ vstEffect.flags |= vstEffectFlagInplaceDoubleAudio;\r
+\r
+ #if JucePlugin_IsSynth\r
+ vstEffect.flags |= vstEffectFlagIsSynth;\r
+ #endif\r
\r
- // NB: For reasons best known to themselves, some hosts fail to load/save plugin\r
- // state correctly if the plugin doesn't report that it has at least 1 program.\r
- jassert (af->getNumPrograms() > 0);\r
+ vstEffect.flags |= vstEffectFlagDataInChunks;\r
\r
activePlugins.add (this);\r
}\r
delete filter;\r
filter = nullptr;\r
\r
- #if ! JUCE_IOS\r
jassert (editorComp == 0);\r
- #endif\r
\r
deleteTempChannels();\r
\r
#endif\r
}\r
}\r
- }\r
-\r
- void open() override\r
- {\r
- // Note: most hosts call this on the UI thread, but wavelab doesn't, so be careful in here.\r
- if (filter->hasEditor())\r
- cEffect.flags |= effFlagsHasEditor;\r
- else\r
- cEffect.flags &= ~effFlagsHasEditor;\r
- }\r
-\r
- void close() override\r
- {\r
- // Note: most hosts call this on the UI thread, but wavelab doesn't, so be careful in here.\r
- stopTimer();\r
-\r
- if (MessageManager::getInstance()->isThisTheMessageThread())\r
- deleteEditor (false);\r
- }\r
-\r
- //==============================================================================\r
- bool getEffectName (char* name) override\r
- {\r
- String (JucePlugin_Name).copyToUTF8 (name, 64 + 1);\r
- return true;\r
- }\r
-\r
- bool getVendorString (char* text) override\r
- {\r
- String (JucePlugin_Manufacturer).copyToUTF8 (text, 64 + 1);\r
- return true;\r
- }\r
-\r
- bool getProductString (char* text) override { return getEffectName (text); }\r
- VstInt32 getVendorVersion() override { return convertHexVersionToDecimal (JucePlugin_VersionCode); }\r
- VstPlugCategory getPlugCategory() override { return JucePlugin_VSTCategory; }\r
- bool keysRequired() { return (JucePlugin_EditorRequiresKeyboardFocus) != 0; }\r
-\r
- VstInt32 canDo (char* text) override\r
- {\r
- if (strcmp (text, "receiveVstEvents") == 0\r
- || strcmp (text, "receiveVstMidiEvent") == 0\r
- || strcmp (text, "receiveVstMidiEvents") == 0)\r
- {\r
- #if JucePlugin_WantsMidiInput\r
- return 1;\r
- #else\r
- return -1;\r
- #endif\r
- }\r
-\r
- if (strcmp (text, "sendVstEvents") == 0\r
- || strcmp (text, "sendVstMidiEvent") == 0\r
- || strcmp (text, "sendVstMidiEvents") == 0)\r
- {\r
- #if JucePlugin_ProducesMidiOutput\r
- return 1;\r
- #else\r
- return -1;\r
- #endif\r
- }\r
-\r
- if (strcmp (text, "receiveVstTimeInfo") == 0\r
- || strcmp (text, "conformsToWindowRules") == 0\r
- || strcmp (text, "bypass") == 0)\r
- {\r
- return 1;\r
- }\r
-\r
- // This tells Wavelab to use the UI thread to invoke open/close,\r
- // like all other hosts do.\r
- if (strcmp (text, "openCloseAnyThread") == 0)\r
- return -1;\r
-\r
- if (strcmp (text, "MPE") == 0)\r
- return filter->supportsMPE() ? 1 : 0;\r
-\r
- #if JUCE_MAC\r
- if (strcmp (text, "hasCockosViewAsConfig") == 0)\r
- {\r
- useNSView = true;\r
- return (VstInt32) 0xbeef0000;\r
- }\r
- #endif\r
-\r
- return 0;\r
- }\r
-\r
- VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, float floatArg) override\r
- {\r
- ignoreUnused (lArg, lArg2, ptrArg, floatArg);\r
-\r
- #if JucePlugin_Build_VST3 && JUCE_VST3_CAN_REPLACE_VST2\r
- if ((lArg == 'stCA' || lArg == 'stCa') && lArg2 == 'FUID' && ptrArg != nullptr)\r
- {\r
- memcpy (ptrArg, getJuceVST3ComponentIID(), 16);\r
- return 1;\r
- }\r
- #endif\r
-\r
- return 0;\r
- }\r
-\r
- bool setBypass (bool b) override\r
- {\r
- isBypassed = b;\r
- return true;\r
- }\r
-\r
- VstInt32 getGetTailSize() override\r
- {\r
- if (filter != nullptr)\r
- return (VstInt32) (filter->getTailLengthSeconds() * getSampleRate());\r
\r
- return 0;\r
}\r
\r
- //==============================================================================\r
- VstInt32 processEvents (VstEvents* events) override\r
- {\r
- #if JucePlugin_WantsMidiInput\r
- VSTMidiEventList::addEventsToMidiBuffer (events, midiEvents);\r
- return 1;\r
- #else\r
- ignoreUnused (events);\r
- return 0;\r
- #endif\r
- }\r
+ VstEffectInterface* getVstEffectInterface() noexcept { return &vstEffect; }\r
\r
template <typename FloatType>\r
void internalProcessReplacing (FloatType** inputs, FloatType** outputs,\r
- VstInt32 numSamples, VstTempBuffers<FloatType>& tmpBuffers)\r
+ int32 numSamples, VstTempBuffers<FloatType>& tmpBuffers)\r
{\r
if (firstProcessCallback)\r
{\r
if (! isProcessing)\r
resume();\r
\r
- filter->setNonRealtime (getCurrentProcessLevel() == 4 /* kVstProcessLevelOffline */);\r
+ filter->setNonRealtime (isProcessLevelOffline());\r
\r
#if JUCE_WINDOWS\r
if (getHostType().isWavelab())\r
outgoingEvents.ensureSize (numEvents);\r
outgoingEvents.clear();\r
\r
- const juce::uint8* midiEventData;\r
+ const uint8* midiEventData;\r
int midiEventSize, midiEventPosition;\r
MidiBuffer::Iterator i (midiEvents);\r
\r
outgoingEvents.addEvent (midiEventData, midiEventSize, midiEventPosition);\r
}\r
\r
- sendVstEventsToHost (outgoingEvents.events);\r
+ // Send VST events to the host.\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodePreAudioProcessingEvents, 0, 0, outgoingEvents.events, 0);\r
#elif JUCE_DEBUG\r
/* This assertion is caused when you've added some events to the\r
midiMessages array in your processBlock() method, which usually means\r
}\r
}\r
\r
- void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) override\r
+ void processReplacing (float** inputs, float** outputs, int32 sampleFrames)\r
{\r
jassert (! filter->isUsingDoublePrecision());\r
internalProcessReplacing (inputs, outputs, sampleFrames, floatTempBuffers);\r
}\r
\r
- void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) override\r
+ static void processReplacingCB (VstEffectInterface* vstInterface, float** inputs, float** outputs, int32 sampleFrames)\r
+ {\r
+ getWrapper (vstInterface)->processReplacing (inputs, outputs, sampleFrames);\r
+ }\r
+\r
+ void processDoubleReplacing (double** inputs, double** outputs, int32 sampleFrames)\r
{\r
jassert (filter->isUsingDoublePrecision());\r
internalProcessReplacing (inputs, outputs, sampleFrames, doubleTempBuffers);\r
}\r
\r
- //==============================================================================\r
- VstInt32 startProcess() override { return 0; }\r
- VstInt32 stopProcess() override { return 0; }\r
-\r
- //==============================================================================\r
- bool setProcessPrecision (VstInt32 vstPrecision) override\r
+ static void processDoubleReplacingCB (VstEffectInterface* vstInterface, double** inputs, double** outputs, int32 sampleFrames)\r
{\r
- if (! isProcessing)\r
- {\r
- if (filter != nullptr)\r
- {\r
- filter->setProcessingPrecision (vstPrecision == kVstProcessPrecision64 && filter->supportsDoublePrecisionProcessing()\r
- ? AudioProcessor::doublePrecision\r
- : AudioProcessor::singlePrecision);\r
-\r
- return true;\r
- }\r
- }\r
-\r
- return false;\r
+ getWrapper (vstInterface)->processDoubleReplacing (inputs, outputs, sampleFrames);\r
}\r
\r
- void resume() override\r
+ //==============================================================================\r
+ void resume()\r
{\r
if (filter != nullptr)\r
{\r
isProcessing = true;\r
\r
- floatTempBuffers .channels.calloc ((size_t) (cEffect.numInputs + cEffect.numOutputs));\r
- doubleTempBuffers.channels.calloc ((size_t) (cEffect.numInputs + cEffect.numOutputs));\r
+ const size_t nInAndOutChannels = static_cast<size_t> (vstEffect.numInputChannels + vstEffect.numOutputChannels);\r
+ floatTempBuffers .channels.calloc (nInAndOutChannels);\r
+ doubleTempBuffers.channels.calloc (nInAndOutChannels);\r
\r
- const double currentRate = getSampleRate();\r
- const int currentBlockSize = getBlockSize();\r
+ const double currentRate = sampleRate;\r
+ const int currentBlockSize = blockSize;\r
\r
firstProcessCallback = true;\r
\r
- filter->setNonRealtime (getCurrentProcessLevel() == 4 /* kVstProcessLevelOffline */);\r
+ filter->setNonRealtime (isProcessLevelOffline());\r
filter->setRateAndBufferSizeDetails (currentRate, currentBlockSize);\r
\r
deleteTempChannels();\r
midiEvents.ensureSize (2048);\r
midiEvents.clear();\r
\r
- setInitialDelay (filter->getLatencySamples());\r
+ vstEffect.latency = filter->getLatencySamples();\r
\r
- AudioEffectX::resume();\r
+ /** If this plug-in is a synth or it can receive midi events we need to tell the\r
+ host that we want midi. In the SDK this method is marked as deprecated, but\r
+ some hosts rely on this behaviour.\r
+ */\r
+ if (vstEffect.flags & vstEffectFlagIsSynth || JucePlugin_WantsMidiInput)\r
+ {\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodePlugInWantsMidi, 0, 1, 0, 0);\r
+ }\r
\r
#if JucePlugin_ProducesMidiOutput\r
outgoingEvents.ensureSize (512);\r
}\r
}\r
\r
- void suspend() override\r
+ void suspend()\r
{\r
if (filter != nullptr)\r
{\r
- AudioEffectX::suspend();\r
-\r
filter->releaseResources();\r
outgoingEvents.freeEvents();\r
\r
}\r
}\r
\r
+ //==============================================================================\r
bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) override\r
{\r
- const VstTimeInfo* const ti = getTimeInfo (kVstPpqPosValid | kVstTempoValid | kVstBarsValid | kVstCyclePosValid\r
- | kVstTimeSigValid | kVstSmpteValid | kVstClockValid);\r
+ const VstTimingInformation* ti = nullptr;\r
+\r
+ if (hostCallback != nullptr)\r
+ {\r
+ int32 flags = vstTimingInfoFlagMusicalPositionValid | vstTimingInfoFlagTempoValid\r
+ | vstTimingInfoFlagLastBarPositionValid | vstTimingInfoFlagLoopPositionValid\r
+ | vstTimingInfoFlagTimeSignatureValid | vstTimingInfoFlagSmpteValid\r
+ | vstTimingInfoFlagNearestClockValid;\r
+\r
+ pointer_sized_int result = hostCallback (&vstEffect, hostOpcodeGetTimingInfo, 0, flags, 0, 0);\r
+ ti = reinterpret_cast<VstTimingInformation*> (result);\r
+ }\r
\r
if (ti == nullptr || ti->sampleRate <= 0)\r
return false;\r
\r
- info.bpm = (ti->flags & kVstTempoValid) != 0 ? ti->tempo : 0.0;\r
+ info.bpm = (ti->flags & vstTimingInfoFlagTempoValid) != 0 ? ti->tempoBPM : 0.0;\r
\r
- if ((ti->flags & kVstTimeSigValid) != 0)\r
+ if ((ti->flags & vstTimingInfoFlagTimeSignatureValid) != 0)\r
{\r
- info.timeSigNumerator = ti->timeSigNumerator;\r
- info.timeSigDenominator = ti->timeSigDenominator;\r
+ info.timeSigNumerator = ti->timeSignatureNumerator;\r
+ info.timeSigDenominator = ti->timeSignatureDenominator;\r
}\r
else\r
{\r
info.timeSigDenominator = 4;\r
}\r
\r
- info.timeInSamples = (int64) (ti->samplePos + 0.5);\r
- info.timeInSeconds = ti->samplePos / ti->sampleRate;\r
- info.ppqPosition = (ti->flags & kVstPpqPosValid) != 0 ? ti->ppqPos : 0.0;\r
- info.ppqPositionOfLastBarStart = (ti->flags & kVstBarsValid) != 0 ? ti->barStartPos : 0.0;\r
+ info.timeInSamples = (int64) (ti->samplePosition + 0.5);\r
+ info.timeInSeconds = ti->samplePosition / ti->sampleRate;\r
+ info.ppqPosition = (ti->flags & vstTimingInfoFlagMusicalPositionValid) != 0 ? ti->musicalPosition : 0.0;\r
+ info.ppqPositionOfLastBarStart = (ti->flags & vstTimingInfoFlagLastBarPositionValid) != 0 ? ti->lastBarPosition : 0.0;\r
\r
- if ((ti->flags & kVstSmpteValid) != 0)\r
+ if ((ti->flags & vstTimingInfoFlagSmpteValid) != 0)\r
{\r
AudioPlayHead::FrameRateType rate = AudioPlayHead::fpsUnknown;\r
double fps = 1.0;\r
\r
- switch (ti->smpteFrameRate)\r
+ switch (ti->smpteRate)\r
{\r
- case kVstSmpte24fps: rate = AudioPlayHead::fps24; fps = 24.0; break;\r
- case kVstSmpte25fps: rate = AudioPlayHead::fps25; fps = 25.0; break;\r
- case kVstSmpte2997fps: rate = AudioPlayHead::fps2997; fps = 29.97; break;\r
- case kVstSmpte30fps: rate = AudioPlayHead::fps30; fps = 30.0; break;\r
- case kVstSmpte2997dfps: rate = AudioPlayHead::fps2997drop; fps = 29.97; break;\r
- case kVstSmpte30dfps: rate = AudioPlayHead::fps30drop; fps = 30.0; break;\r
-\r
- case kVstSmpteFilm16mm:\r
- case kVstSmpteFilm35mm: fps = 24.0; break;\r
-\r
- case kVstSmpte239fps: fps = 23.976; break;\r
- case kVstSmpte249fps: fps = 24.976; break;\r
- case kVstSmpte599fps: fps = 59.94; break;\r
- case kVstSmpte60fps: fps = 60; break;\r
-\r
- default: jassertfalse; // unknown frame-rate..\r
+ case vstSmpteRateFps24: rate = AudioPlayHead::fps24; fps = 24.0; break;\r
+ case vstSmpteRateFps25: rate = AudioPlayHead::fps25; fps = 25.0; break;\r
+ case vstSmpteRateFps2997: rate = AudioPlayHead::fps2997; fps = 29.97; break;\r
+ case vstSmpteRateFps30: rate = AudioPlayHead::fps30; fps = 30.0; break;\r
+ case vstSmpteRateFps2997drop: rate = AudioPlayHead::fps2997drop; fps = 29.97; break;\r
+ case vstSmpteRateFps30drop: rate = AudioPlayHead::fps30drop; fps = 30.0; break;\r
+\r
+ case vstSmpteRate16mmFilm:\r
+ case vstSmpteRate35mmFilm: fps = 24.0; break;\r
+\r
+ case vstSmpteRateFps239: fps = 23.976; break;\r
+ case vstSmpteRateFps249: fps = 24.976; break;\r
+ case vstSmpteRateFps599: fps = 59.94; break;\r
+ case vstSmpteRateFps60: fps = 60; break;\r
+\r
+ default: jassertfalse; // unknown frame-rate..\r
}\r
\r
info.frameRate = rate;\r
info.editOriginTime = 0;\r
}\r
\r
- info.isRecording = (ti->flags & kVstTransportRecording) != 0;\r
- info.isPlaying = (ti->flags & (kVstTransportRecording | kVstTransportPlaying)) != 0;\r
- info.isLooping = (ti->flags & kVstTransportCycleActive) != 0;\r
+ info.isRecording = (ti->flags & vstTimingInfoFlagCurrentlyRecording) != 0;\r
+ info.isPlaying = (ti->flags & (vstTimingInfoFlagCurrentlyRecording | vstTimingInfoFlagCurrentlyPlaying)) != 0;\r
+ info.isLooping = (ti->flags & vstTimingInfoFlagLoopActive) != 0;\r
\r
- if ((ti->flags & kVstCyclePosValid) != 0)\r
+ if ((ti->flags & vstTimingInfoFlagLoopPositionValid) != 0)\r
{\r
- info.ppqLoopStart = ti->cycleStartPos;\r
- info.ppqLoopEnd = ti->cycleEndPos;\r
+ info.ppqLoopStart = ti->loopStartPosition;\r
+ info.ppqLoopEnd = ti->loopEndPosition;\r
}\r
else\r
{\r
}\r
\r
//==============================================================================\r
- VstInt32 getProgram() override\r
- {\r
- return filter != nullptr ? filter->getCurrentProgram() : 0;\r
- }\r
-\r
- void setProgram (VstInt32 program) override\r
- {\r
- if (filter != nullptr)\r
- filter->setCurrentProgram (program);\r
- }\r
-\r
- void setProgramName (char* name) override\r
- {\r
- if (filter != nullptr)\r
- filter->changeProgramName (filter->getCurrentProgram(), name);\r
- }\r
-\r
- void getProgramName (char* name) override\r
- {\r
- if (filter != nullptr)\r
- filter->getProgramName (filter->getCurrentProgram()).copyToUTF8 (name, 24 + 1);\r
- }\r
-\r
- bool getProgramNameIndexed (VstInt32 /*category*/, VstInt32 index, char* text) override\r
- {\r
- if (filter != nullptr && isPositiveAndBelow (index, filter->getNumPrograms()))\r
- {\r
- filter->getProgramName (index).copyToUTF8 (text, 24 + 1);\r
- return true;\r
- }\r
-\r
- return false;\r
- }\r
-\r
- //==============================================================================\r
- float getParameter (VstInt32 index) override\r
+ float getParameter (int32 index) const\r
{\r
if (filter == nullptr)\r
return 0.0f;\r
return filter->getParameter (index);\r
}\r
\r
- void setParameter (VstInt32 index, float value) override\r
+ static float getParameterCB (VstEffectInterface* vstInterface, int32 index)\r
{\r
- if (filter != nullptr)\r
- {\r
- jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->setParameter (index, value);\r
- }\r
+ return getWrapper (vstInterface)->getParameter (index);\r
}\r
\r
- void getParameterDisplay (VstInt32 index, char* text) override\r
+ void setParameter (int32 index, float value)\r
{\r
if (filter != nullptr)\r
{\r
jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterText (index, 24).copyToUTF8 (text, 24 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->setParameter (index, value);\r
}\r
}\r
\r
- bool string2parameter (VstInt32 index, char* text) override\r
+ static void setParameterCB (VstEffectInterface* vstInterface, int32 index, float value)\r
{\r
- if (filter != nullptr)\r
- {\r
- jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
-\r
- if (AudioProcessorParameter* p = filter->getParameters()[index])\r
- {\r
- filter->setParameter (index, p->getValueForText (String::fromUTF8 (text)));\r
- return true;\r
- }\r
- }\r
-\r
- return false;\r
+ getWrapper (vstInterface)->setParameter (index, value);\r
}\r
\r
- void getParameterName (VstInt32 index, char* text) override\r
+ void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) override\r
{\r
- if (filter != nullptr)\r
- {\r
- jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterName (index, 16).copyToUTF8 (text, 16 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
- }\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodeParameterChanged, index, 0, 0, newValue);\r
}\r
\r
- void getParameterLabel (VstInt32 index, char* text) override\r
+ void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) override\r
{\r
- if (filter != nullptr)\r
- {\r
- jassert (isPositiveAndBelow (index, filter->getNumParameters()));\r
- filter->getParameterLabel (index).copyToUTF8 (text, 24 + 1); // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
- }\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodeParameterChangeGestureBegin, index, 0, 0, 0);\r
}\r
\r
- void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) override\r
+ void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) override\r
{\r
- if (audioMaster != nullptr)\r
- audioMaster (&cEffect, audioMasterAutomate, index, 0, 0, newValue);\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodeParameterChangeGestureEnd, index, 0, 0, 0);\r
}\r
\r
- void audioProcessorParameterChangeGestureBegin (AudioProcessor*, int index) override { beginEdit (index); }\r
- void audioProcessorParameterChangeGestureEnd (AudioProcessor*, int index) override { endEdit (index); }\r
-\r
void audioProcessorChanged (AudioProcessor*) override\r
{\r
- setInitialDelay (filter->getLatencySamples());\r
- updateDisplay();\r
+ vstEffect.latency = filter->getLatencySamples();\r
+\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodeUpdateView, 0, 0, 0, 0);\r
+\r
triggerAsyncUpdate();\r
}\r
\r
void handleAsyncUpdate() override\r
{\r
- ioChanged();\r
- }\r
-\r
- bool canParameterBeAutomated (VstInt32 index) override\r
- {\r
- return filter != nullptr && filter->isParameterAutomatable ((int) index);\r
+ if (hostCallback != nullptr)\r
+ hostCallback (&vstEffect, hostOpcodeIOModified, 0, 0, 0, 0);\r
}\r
\r
- bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput,\r
- VstSpeakerArrangement* pluginOutput) override\r
+ bool getPinProperties (VstPinInfo& properties, bool direction, int index) const\r
{\r
- const int numIns = busUtils.getBusCount (true);\r
- const int numOuts = busUtils.getBusCount (false);;\r
-\r
- if (pluginInput != nullptr && numIns == 0)\r
- return false;\r
+ // fill with default\r
+ properties.flags = vstPinInfoFlagValid;\r
+ properties.text[0] = 0;\r
+ properties.shortText[0] = 0;\r
+ properties.configurationType = vstSpeakerConfigTypeEmpty;\r
\r
- if (pluginOutput != nullptr && numOuts == 0)\r
+ // index refers to the absolute index when combining all channels of every bus\r
+ if (index >= (direction ? vstEffect.numInputChannels : vstEffect.numOutputChannels))\r
return false;\r
\r
- if (numIns > 1 || numOuts > 1)\r
+ const int n = busUtils.getBusCount(direction);\r
+ int busIdx;\r
+ for (busIdx = 0; busIdx < n; ++busIdx)\r
{\r
- int newNumInChannels = (pluginInput != nullptr && pluginInput-> numChannels >= 0) ? pluginInput-> numChannels\r
- : busUtils.findTotalNumChannels (true);\r
- int newNumOutChannels = (pluginOutput != nullptr && pluginOutput->numChannels >= 0) ? pluginOutput->numChannels\r
- : busUtils.findTotalNumChannels (false);\r
-\r
- newNumInChannels = jmin (newNumInChannels, maxNumInChannels);\r
- newNumOutChannels = jmin (newNumOutChannels, maxNumOutChannels);\r
+ const int numChans = busUtils.getNumChannels (direction, busIdx);\r
+ if (index < numChans)\r
+ break;\r
\r
- if (! setBusArrangementFromTotalChannelNum (newNumInChannels, newNumOutChannels))\r
- return false;\r
+ index -= numChans;\r
}\r
- else\r
- {\r
- PluginBusUtilities::ScopedBusRestorer busRestorer (busUtils);\r
- AudioChannelSet inLayoutType;\r
\r
- if (pluginInput != nullptr && pluginInput-> numChannels >= 0)\r
- {\r
- inLayoutType = SpeakerMappings::vstArrangementTypeToChannelSet (*pluginInput);\r
- if (busUtils.getChannelSet (true, 0) != inLayoutType)\r
- if (! filter->setPreferredBusArrangement (true, 0, inLayoutType))\r
- return false;\r
- }\r
+ if (busIdx >= n)\r
+ return true;\r
\r
- if (pluginOutput != nullptr && pluginOutput->numChannels >= 0)\r
- {\r
- AudioChannelSet newType = SpeakerMappings::vstArrangementTypeToChannelSet (*pluginOutput);\r
- if (busUtils.getChannelSet (false, 0) != newType)\r
- if (! filter->setPreferredBusArrangement (false, 0, newType))\r
- return false;\r
+ const AudioProcessor::AudioProcessorBus& busInfo = busUtils.getFilterBus (direction).getReference (busIdx);\r
\r
- // re-check the input\r
- if ((! inLayoutType.isDisabled()) && busUtils.getChannelSet (true, 0) != inLayoutType)\r
- return false;\r
+ String channelName = busInfo.name;\r
+ #ifdef JucePlugin_PreferredChannelConfigurations\r
+ channelName += String (" ") + String (index);\r
+ #else\r
+ if (busUtils.getNumChannels (direction, busIdx) > 1)\r
+ channelName += String (" ") + AudioChannelSet::getAbbreviatedChannelTypeName (busInfo.channels.getTypeOfChannel (index));\r
+ #endif\r
\r
- busRestorer.release();\r
- }\r
- }\r
+ channelName.copyToUTF8 (properties.text, (size_t) (vstMaxParameterOrPinLabelLength + 1));\r
+ channelName.copyToUTF8 (properties.shortText, (size_t) (vstMaxParameterOrPinShortLabelLength + 1));\r
+\r
+ properties.flags = vstPinInfoFlagValid | vstPinInfoFlagIsActive;\r
+ properties.configurationType = SpeakerMappings::channelSetToVstArrangementType (busInfo.channels);\r
+\r
+ if (properties.configurationType == vstSpeakerConfigTypeEmpty)\r
+ properties.flags &= vstPinInfoFlagIsActive;\r
+\r
+ if (busInfo.channels.size() == 2)\r
+ properties.flags |= vstPinInfoFlagIsStereo;\r
\r
- filter->setRateAndBufferSizeDetails(0, 0);\r
return true;\r
}\r
\r
- bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) override\r
+ //==============================================================================\r
+ struct SpeakerMappings : private AudioChannelSet // (inheritance only to give easier access to items in the namespace)\r
{\r
- *pluginInput = 0;\r
- *pluginOutput = 0;\r
-\r
- if (! AudioEffectX::allocateArrangement (pluginInput, busUtils.findTotalNumChannels (true)))\r
- return false;\r
-\r
- if (! AudioEffectX::allocateArrangement (pluginOutput, busUtils.findTotalNumChannels (false)))\r
+ struct Mapping\r
{\r
- AudioEffectX::deallocateArrangement (pluginInput);\r
- *pluginInput = 0;\r
- return false;\r
- }\r
-\r
- if (pluginHasSidechainsOrAuxs())\r
- {\r
- int numIns = busUtils.findTotalNumChannels (true);\r
- int numOuts = busUtils.findTotalNumChannels (false);\r
-\r
- AudioChannelSet layout = AudioChannelSet::canonicalChannelSet (numIns);\r
- SpeakerMappings::channelSetToVstArrangement (layout, **pluginInput);\r
-\r
- layout = AudioChannelSet::canonicalChannelSet (numOuts);\r
- SpeakerMappings::channelSetToVstArrangement (layout, **pluginOutput);\r
- }\r
- else\r
- {\r
- SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (true, 0), **pluginInput);\r
- SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (false, 0), **pluginOutput);\r
- }\r
-\r
- return true;\r
- }\r
-\r
- bool getInputProperties (VstInt32 index, VstPinProperties* properties) override\r
- {\r
- return filter != nullptr\r
- && getPinProperties (*properties, true, (int) index);\r
- }\r
-\r
- bool getOutputProperties (VstInt32 index, VstPinProperties* properties) override\r
- {\r
- return filter != nullptr\r
- && getPinProperties (*properties, false, (int) index);\r
- }\r
-\r
- bool getPinProperties (VstPinProperties& properties, bool direction, int index) const\r
- {\r
- // fill with default\r
- properties.flags = kVstPinUseSpeaker;\r
- properties.label[0] = 0;\r
- properties.shortLabel[0] = 0;\r
- properties.arrangementType = kSpeakerArrEmpty;\r
-\r
- // index refers to the absolute index when combining all channels of every bus\r
- if (index >= (direction ? cEffect.numInputs : cEffect.numOutputs))\r
- return false;\r
-\r
- const int n = busUtils.getBusCount(direction);\r
- int busIdx;\r
- for (busIdx = 0; busIdx < n; ++busIdx)\r
- {\r
- const int numChans = busUtils.getNumChannels (direction, busIdx);\r
- if (index < numChans)\r
- break;\r
-\r
- index -= numChans;\r
- }\r
-\r
- if (busIdx >= n)\r
- return true;\r
-\r
- const AudioProcessor::AudioProcessorBus& busInfo = busUtils.getFilterBus (direction).getReference (busIdx);\r
-\r
- #ifdef JucePlugin_PreferredChannelConfigurations\r
- String abbvChannelName = String (index);\r
- #else\r
- String abbvChannelName = AudioChannelSet::getAbbreviatedChannelTypeName (busInfo.channels.getTypeOfChannel(index));\r
- #endif\r
-\r
- String channelName = busInfo.name + String (" ") + abbvChannelName;\r
-\r
- channelName.copyToUTF8 (properties.label, (size_t) (kVstMaxLabelLen + 1));\r
- channelName.copyToUTF8 (properties.shortLabel, (size_t) (kVstMaxShortLabelLen + 1));\r
-\r
- properties.flags = kVstPinUseSpeaker | kVstPinIsActive;\r
- properties.arrangementType = SpeakerMappings::channelSetToVstArrangementType (busInfo.channels);\r
-\r
- if (properties.arrangementType == kSpeakerArrEmpty)\r
- properties.flags &= ~kVstPinIsActive;\r
-\r
- if (busInfo.channels.size() == 2)\r
- properties.flags |= kVstPinIsStereo;\r
-\r
- return true;\r
- }\r
-\r
- //==============================================================================\r
- struct SpeakerMappings : private AudioChannelSet // (inheritance only to give easier access to items in the namespace)\r
- {\r
- struct Mapping\r
- {\r
- VstInt32 vst2;\r
+ int32 vst2;\r
ChannelType channels[13];\r
\r
bool matches (const Array<ChannelType>& chans) const noexcept\r
}\r
};\r
\r
- static AudioChannelSet vstArrangementTypeToChannelSet (const VstSpeakerArrangement& arr)\r
+ static AudioChannelSet vstArrangementTypeToChannelSet (const VstSpeakerConfiguration& arr)\r
{\r
- for (const Mapping* m = getMappings(); m->vst2 != kSpeakerArrEmpty; ++m)\r
+ for (const Mapping* m = getMappings(); m->vst2 != vstSpeakerConfigTypeEmpty; ++m)\r
{\r
if (m->vst2 == arr.type)\r
{\r
}\r
}\r
\r
- return AudioChannelSet::discreteChannels (arr.numChannels);\r
+ return AudioChannelSet::discreteChannels (arr.numberOfChannels);\r
}\r
\r
- static VstInt32 channelSetToVstArrangementType (AudioChannelSet channels)\r
+ static int32 channelSetToVstArrangementType (AudioChannelSet channels)\r
{\r
Array<AudioChannelSet::ChannelType> chans (channels.getChannelTypes());\r
\r
if (channels == AudioChannelSet::disabled())\r
- return kSpeakerArrEmpty;\r
+ return vstSpeakerConfigTypeEmpty;\r
\r
- for (const Mapping* m = getMappings(); m->vst2 != kSpeakerArrEmpty; ++m)\r
+ for (const Mapping* m = getMappings(); m->vst2 != vstSpeakerConfigTypeEmpty; ++m)\r
if (m->matches (chans))\r
return m->vst2;\r
\r
- return kSpeakerArrUserDefined;\r
+ return vstSpeakerConfigTypeUser;\r
}\r
\r
- static void channelSetToVstArrangement (const AudioChannelSet& channels, VstSpeakerArrangement& result)\r
+ static void channelSetToVstArrangement (const AudioChannelSet& channels, VstSpeakerConfiguration& result)\r
{\r
result.type = channelSetToVstArrangementType (channels);\r
- result.numChannels = channels.size();\r
+ result.numberOfChannels = channels.size();\r
\r
- for (int i = 0; i < result.numChannels; ++i)\r
+ for (int i = 0; i < result.numberOfChannels; ++i)\r
{\r
- VstSpeakerProperties& speaker = result.speakers[i];\r
+ VstIndividualSpeakerInfo& speaker = result.speakers[i];\r
\r
- zeromem (&speaker, sizeof (VstSpeakerProperties));\r
+ zeromem (&speaker, sizeof (VstIndividualSpeakerInfo));\r
speaker.type = getSpeakerType (channels.getTypeOfChannel (i));\r
}\r
}\r
{\r
static const Mapping mappings[] =\r
{\r
- { kSpeakerArrMono, { centre, unknown } },\r
- { kSpeakerArrStereo, { left, right, unknown } },\r
- { kSpeakerArrStereoSurround, { leftSurround, rightSurround, unknown } },\r
- { kSpeakerArrStereoCenter, { leftCentre, rightCentre, unknown } },\r
- { kSpeakerArrStereoSide, { leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArrStereoCLfe, { centre, subbass, unknown } },\r
- { kSpeakerArr30Cine, { left, right, centre, unknown } },\r
- { kSpeakerArr30Music, { left, right, surround, unknown } },\r
- { kSpeakerArr31Cine, { left, right, centre, subbass, unknown } },\r
- { kSpeakerArr31Music, { left, right, subbass, surround, unknown } },\r
- { kSpeakerArr40Cine, { left, right, centre, surround, unknown } },\r
- { kSpeakerArr40Music, { left, right, leftSurround, rightSurround, unknown } },\r
- { kSpeakerArr41Cine, { left, right, centre, subbass, surround, unknown } },\r
- { kSpeakerArr41Music, { left, right, subbass, leftSurround, rightSurround, unknown } },\r
- { kSpeakerArr50, { left, right, centre, leftSurround, rightSurround, unknown } },\r
- { kSpeakerArr51, { left, right, centre, subbass, leftSurround, rightSurround, unknown } },\r
- { kSpeakerArr60Cine, { left, right, centre, leftSurround, rightSurround, surround, unknown } },\r
- { kSpeakerArr60Music, { left, right, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr61Cine, { left, right, centre, subbass, leftSurround, rightSurround, surround, unknown } },\r
- { kSpeakerArr61Music, { left, right, subbass, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr70Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } },\r
- { kSpeakerArr70Music, { left, right, centre, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr71Cine, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } },\r
- { kSpeakerArr71Music, { left, right, centre, subbass, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr80Cine, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } },\r
- { kSpeakerArr80Music, { left, right, centre, leftSurround, rightSurround, surround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr81Cine, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } },\r
- { kSpeakerArr81Music, { left, right, centre, subbass, leftSurround, rightSurround, surround, leftRearSurround, rightRearSurround, unknown } },\r
- { kSpeakerArr102, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontCentre, topFrontRight, topRearLeft, topRearRight, subbass2, unknown } },\r
- { kSpeakerArrEmpty, { unknown } }\r
+ { vstSpeakerConfigTypeMono, { centre, unknown } },\r
+ { vstSpeakerConfigTypeLR, { left, right, unknown } },\r
+ { vstSpeakerConfigTypeLsRs, { leftSurround, rightSurround, unknown } },\r
+ { vstSpeakerConfigTypeLcRc, { leftCentre, rightCentre, unknown } },\r
+ { vstSpeakerConfigTypeSlSr, { leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeCLfe, { centre, subbass, unknown } },\r
+ { vstSpeakerConfigTypeLRC, { left, right, centre, unknown } },\r
+ { vstSpeakerConfigTypeLRS, { left, right, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfe, { left, right, centre, subbass, unknown } },\r
+ { vstSpeakerConfigTypeLRLfeS, { left, right, subbass, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRCS, { left, right, centre, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRLsRs, { left, right, leftSurround, rightSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeS, { left, right, centre, subbass, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRLfeLsRs, { left, right, subbass, leftSurround, rightSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRs, { left, right, centre, leftSurround, rightSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRs, { left, right, centre, subbass, leftSurround, rightSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRsCs, { left, right, centre, leftSurround, rightSurround, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRLsRsSlSr, { left, right, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsCs, { left, right, centre, subbass, leftSurround, rightSurround, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRLfeLsRsSlSr, { left, right, subbass, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRsLcRc, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRsSlSr, { left, right, centre, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsLcRc, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontRight, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsSlSr, { left, right, centre, subbass, leftSurround, rightSurround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRsLcRcCs, { left, right, centre, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLsRsCsSlSr, { left, right, centre, leftSurround, rightSurround, surround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsLcRcCs, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontRight, surround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsCsSlSr, { left, right, centre, subbass, leftSurround, rightSurround, surround, leftRearSurround, rightRearSurround, unknown } },\r
+ { vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2, { left, right, centre, subbass, leftSurround, rightSurround, topFrontLeft, topFrontCentre, topFrontRight, topRearLeft, topRearRight, subbass2, unknown } },\r
+ { vstSpeakerConfigTypeEmpty, { unknown } }\r
};\r
\r
return mappings;\r
}\r
\r
- static inline VstInt32 getSpeakerType (AudioChannelSet::ChannelType type) noexcept\r
+ static inline int32 getSpeakerType (AudioChannelSet::ChannelType type) noexcept\r
{\r
switch (type)\r
{\r
- case AudioChannelSet::left: return kSpeakerL;\r
- case AudioChannelSet::right: return kSpeakerR;\r
- case AudioChannelSet::centre: return kSpeakerC;\r
- case AudioChannelSet::subbass: return kSpeakerLfe;\r
- case AudioChannelSet::leftSurround: return kSpeakerLs;\r
- case AudioChannelSet::rightSurround: return kSpeakerRs;\r
- case AudioChannelSet::leftCentre: return kSpeakerLc;\r
- case AudioChannelSet::rightCentre: return kSpeakerRc;\r
- case AudioChannelSet::surround: return kSpeakerS;\r
- case AudioChannelSet::leftRearSurround: return kSpeakerSl;\r
- case AudioChannelSet::rightRearSurround: return kSpeakerSr;\r
- case AudioChannelSet::topMiddle: return kSpeakerTm;\r
- case AudioChannelSet::topFrontLeft: return kSpeakerTfl;\r
- case AudioChannelSet::topFrontCentre: return kSpeakerTfc;\r
- case AudioChannelSet::topFrontRight: return kSpeakerTfr;\r
- case AudioChannelSet::topRearLeft: return kSpeakerTrl;\r
- case AudioChannelSet::topRearCentre: return kSpeakerTrc;\r
- case AudioChannelSet::topRearRight: return kSpeakerTrr;\r
- case AudioChannelSet::subbass2: return kSpeakerLfe2;\r
+ case AudioChannelSet::left: return vstIndividualSpeakerTypeLeft;\r
+ case AudioChannelSet::right: return vstIndividualSpeakerTypeRight;\r
+ case AudioChannelSet::centre: return vstIndividualSpeakerTypeCentre;\r
+ case AudioChannelSet::subbass: return vstIndividualSpeakerTypeSubbass;\r
+ case AudioChannelSet::leftSurround: return vstIndividualSpeakerTypeLeftSurround;\r
+ case AudioChannelSet::rightSurround: return vstIndividualSpeakerTypeRightSurround;\r
+ case AudioChannelSet::leftCentre: return vstIndividualSpeakerTypeLeftCentre;\r
+ case AudioChannelSet::rightCentre: return vstIndividualSpeakerTypeRightCentre;\r
+ case AudioChannelSet::surround: return vstIndividualSpeakerTypeSurround;\r
+ case AudioChannelSet::leftRearSurround: return vstIndividualSpeakerTypeLeftRearSurround;\r
+ case AudioChannelSet::rightRearSurround: return vstIndividualSpeakerTypeRightRearSurround;\r
+ case AudioChannelSet::topMiddle: return vstIndividualSpeakerTypeTopMiddle;\r
+ case AudioChannelSet::topFrontLeft: return vstIndividualSpeakerTypeTopFrontLeft;\r
+ case AudioChannelSet::topFrontCentre: return vstIndividualSpeakerTypeTopFrontCentre;\r
+ case AudioChannelSet::topFrontRight: return vstIndividualSpeakerTypeTopFrontRight;\r
+ case AudioChannelSet::topRearLeft: return vstIndividualSpeakerTypeTopRearLeft;\r
+ case AudioChannelSet::topRearCentre: return vstIndividualSpeakerTypeTopRearCentre;\r
+ case AudioChannelSet::topRearRight: return vstIndividualSpeakerTypeTopRearRight;\r
+ case AudioChannelSet::subbass2: return vstIndividualSpeakerTypeSubbass2;\r
default: break;\r
}\r
\r
return 0;\r
}\r
\r
- static inline AudioChannelSet::ChannelType getChannelType (VstInt32 type) noexcept\r
+ static inline AudioChannelSet::ChannelType getChannelType (int32 type) noexcept\r
{\r
switch (type)\r
{\r
- case kSpeakerL: return AudioChannelSet::left;\r
- case kSpeakerR: return AudioChannelSet::right;\r
- case kSpeakerC: return AudioChannelSet::centre;\r
- case kSpeakerLfe: return AudioChannelSet::subbass;\r
- case kSpeakerLs: return AudioChannelSet::leftSurround;\r
- case kSpeakerRs: return AudioChannelSet::rightSurround;\r
- case kSpeakerLc: return AudioChannelSet::leftCentre;\r
- case kSpeakerRc: return AudioChannelSet::rightCentre;\r
- case kSpeakerS: return AudioChannelSet::surround;\r
- case kSpeakerSl: return AudioChannelSet::leftRearSurround;\r
- case kSpeakerSr: return AudioChannelSet::rightRearSurround;\r
- case kSpeakerTm: return AudioChannelSet::topMiddle;\r
- case kSpeakerTfl: return AudioChannelSet::topFrontLeft;\r
- case kSpeakerTfc: return AudioChannelSet::topFrontCentre;\r
- case kSpeakerTfr: return AudioChannelSet::topFrontRight;\r
- case kSpeakerTrl: return AudioChannelSet::topRearLeft;\r
- case kSpeakerTrc: return AudioChannelSet::topRearCentre;\r
- case kSpeakerTrr: return AudioChannelSet::topRearRight;\r
- case kSpeakerLfe2: return AudioChannelSet::subbass2;\r
+ case vstIndividualSpeakerTypeLeft: return AudioChannelSet::left;\r
+ case vstIndividualSpeakerTypeRight: return AudioChannelSet::right;\r
+ case vstIndividualSpeakerTypeCentre: return AudioChannelSet::centre;\r
+ case vstIndividualSpeakerTypeSubbass: return AudioChannelSet::subbass;\r
+ case vstIndividualSpeakerTypeLeftSurround: return AudioChannelSet::leftSurround;\r
+ case vstIndividualSpeakerTypeRightSurround: return AudioChannelSet::rightSurround;\r
+ case vstIndividualSpeakerTypeLeftCentre: return AudioChannelSet::leftCentre;\r
+ case vstIndividualSpeakerTypeRightCentre: return AudioChannelSet::rightCentre;\r
+ case vstIndividualSpeakerTypeSurround: return AudioChannelSet::surround;\r
+ case vstIndividualSpeakerTypeLeftRearSurround: return AudioChannelSet::leftRearSurround;\r
+ case vstIndividualSpeakerTypeRightRearSurround: return AudioChannelSet::rightRearSurround;\r
+ case vstIndividualSpeakerTypeTopMiddle: return AudioChannelSet::topMiddle;\r
+ case vstIndividualSpeakerTypeTopFrontLeft: return AudioChannelSet::topFrontLeft;\r
+ case vstIndividualSpeakerTypeTopFrontCentre: return AudioChannelSet::topFrontCentre;\r
+ case vstIndividualSpeakerTypeTopFrontRight: return AudioChannelSet::topFrontRight;\r
+ case vstIndividualSpeakerTypeTopRearLeft: return AudioChannelSet::topRearLeft;\r
+ case vstIndividualSpeakerTypeTopRearCentre: return AudioChannelSet::topRearCentre;\r
+ case vstIndividualSpeakerTypeTopRearRight: return AudioChannelSet::topRearRight;\r
+ case vstIndividualSpeakerTypeSubbass2: return AudioChannelSet::subbass2;\r
default: break;\r
}\r
\r
}\r
};\r
\r
- //==============================================================================\r
- VstInt32 getChunk (void** data, bool onlyStoreCurrentProgramData) override\r
- {\r
- if (filter == nullptr)\r
- return 0;\r
-\r
- chunkMemory.reset();\r
- if (onlyStoreCurrentProgramData)\r
- filter->getCurrentProgramStateInformation (chunkMemory);\r
- else\r
- filter->getStateInformation (chunkMemory);\r
-\r
- *data = (void*) chunkMemory.getData();\r
-\r
- // because the chunk is only needed temporarily by the host (or at least you'd\r
- // hope so) we'll give it a while and then free it in the timer callback.\r
- chunkMemoryTime = juce::Time::getApproximateMillisecondCounter();\r
-\r
- return (VstInt32) chunkMemory.getSize();\r
- }\r
-\r
- VstInt32 setChunk (void* data, VstInt32 byteSize, bool onlyRestoreCurrentProgramData) override\r
- {\r
- if (filter != nullptr)\r
- {\r
- chunkMemory.reset();\r
- chunkMemoryTime = 0;\r
-\r
- if (byteSize > 0 && data != nullptr)\r
- {\r
- if (onlyRestoreCurrentProgramData)\r
- filter->setCurrentProgramStateInformation (data, byteSize);\r
- else\r
- filter->setStateInformation (data, byteSize);\r
- }\r
- }\r
-\r
- return 0;\r
- }\r
-\r
void timerCallback() override\r
{\r
if (shouldDeleteEditor)\r
#endif\r
}\r
\r
- void doIdleCallback()\r
- {\r
- // (wavelab calls this on a separate thread and causes a deadlock)..\r
- if (MessageManager::getInstance()->isThisTheMessageThread()\r
- && ! recursionCheck)\r
- {\r
- ScopedValueSetter<bool> svs (recursionCheck, true, false);\r
-\r
- JUCE_AUTORELEASEPOOL\r
- {\r
- Timer::callPendingTimersSynchronously();\r
-\r
- for (int i = ComponentPeer::getNumPeers(); --i >= 0;)\r
- if (ComponentPeer* p = ComponentPeer::getPeer(i))\r
- p->performAnyPendingRepaintsNow();\r
- }\r
- }\r
- }\r
-\r
void createEditorComp()\r
{\r
- #if ! JUCE_IOS\r
if (hasShutdown || filter == nullptr)\r
return;\r
\r
{\r
if (AudioProcessorEditor* const ed = filter->createEditorIfNeeded())\r
{\r
- cEffect.flags |= effFlagsHasEditor;\r
+ vstEffect.flags |= vstEffectFlagHasEditor;\r
ed->setOpaque (true);\r
ed->setVisible (true);\r
\r
}\r
else\r
{\r
- cEffect.flags &= ~effFlagsHasEditor;\r
+ vstEffect.flags &= ~vstEffectFlagHasEditor;\r
}\r
}\r
- #endif\r
\r
shouldDeleteEditor = false;\r
}\r
\r
void deleteEditor (bool canDeleteLaterIfModal)\r
{\r
- #if JUCE_IOS\r
- ignoreUnused (canDeleteLaterIfModal);\r
- #else\r
JUCE_AUTORELEASEPOOL\r
{\r
PopupMenu::dismissAllActiveMenus();\r
hostWindow = 0;\r
#endif\r
}\r
- #endif\r
}\r
\r
- VstIntPtr dispatcher (VstInt32 opCode, VstInt32 index, VstIntPtr value, void* ptr, float opt) override\r
+ pointer_sized_int dispatcher (int32 opCode, VstOpCodeArguments args)\r
{\r
if (hasShutdown)\r
return 0;\r
\r
- #if ! JUCE_IOS\r
- if (opCode == effEditIdle)\r
- {\r
- doIdleCallback();\r
- return 0;\r
- }\r
- else if (opCode == effEditOpen)\r
- {\r
- checkWhetherMessageThreadIsCorrect();\r
- const MessageManagerLock mmLock;\r
- jassert (! recursionCheck);\r
-\r
- startTimer (1000 / 4); // performs misc housekeeping chores\r
-\r
- deleteEditor (true);\r
- createEditorComp();\r
-\r
- if (editorComp != nullptr)\r
- {\r
- editorComp->setOpaque (true);\r
- editorComp->setVisible (false);\r
-\r
- #if JUCE_WINDOWS\r
- editorComp->addToDesktop (0, ptr);\r
- hostWindow = (HWND) ptr;\r
- #elif JUCE_LINUX\r
- editorComp->addToDesktop (0, ptr);\r
- hostWindow = (Window) ptr;\r
- Window editorWnd = (Window) editorComp->getWindowHandle();\r
- XReparentWindow (display, editorWnd, hostWindow, 0, 0);\r
- #elif JUCE_MAC\r
- hostWindow = attachComponentToWindowRefVST (editorComp, ptr, useNSView);\r
- #endif\r
- editorComp->setVisible (true);\r
-\r
- return 1;\r
- }\r
- }\r
- else if (opCode == effEditClose)\r
- {\r
- checkWhetherMessageThreadIsCorrect();\r
- const MessageManagerLock mmLock;\r
- deleteEditor (true);\r
- return 0;\r
+ switch (opCode)\r
+ {\r
+ case plugInOpcodeOpen: return handleOpen (args);\r
+ case plugInOpcodeClose: return handleClose (args);\r
+ case plugInOpcodeSetCurrentProgram: return handleSetCurrentProgram (args);\r
+ case plugInOpcodeGetCurrentProgram: return handleGetCurrentProgram (args);\r
+ case plugInOpcodeSetCurrentProgramName: return handleSetCurrentProgramName (args);\r
+ case plugInOpcodeGetCurrentProgramName: return handleGetCurrentProgramName (args);\r
+ case plugInOpcodeGetParameterLabel: return handleGetParameterLabel (args);\r
+ case plugInOpcodeGetParameterText: return handleGetParameterText (args);\r
+ case plugInOpcodeGetParameterName: return handleGetParameterName (args);\r
+ case plugInOpcodeSetSampleRate: return handleSetSampleRate (args);\r
+ case plugInOpcodeSetBlockSize: return handleSetBlockSize (args);\r
+ case plugInOpcodeResumeSuspend: return handleResumeSuspend (args);\r
+ case plugInOpcodeGetEditorBounds: return handleGetEditorBounds (args);\r
+ case plugInOpcodeOpenEditor: return handleOpenEditor (args);\r
+ case plugInOpcodeCloseEditor: return handleCloseEditor (args);\r
+ case plugInOpcodeGetData: return handleGetData (args);\r
+ case plugInOpcodeSetData: return handleSetData (args);\r
+ case plugInOpcodePreAudioProcessingEvents: return handlePreAudioProcessingEvents (args);\r
+ case plugInOpcodeIsParameterAutomatable: return handleIsParameterAutomatable (args);\r
+ case plugInOpcodeParameterValueForText: return handleParameterValueForText (args);\r
+ case plugInOpcodeGetProgramName: return handleGetProgramName (args);\r
+ case plugInOpcodeGetInputPinProperties: return handleGetInputPinProperties (args);\r
+ case plugInOpcodeGetOutputPinProperties: return handleGetOutputPinProperties (args);\r
+ case plugInOpcodeGetPlugInCategory: return handleGetPlugInCategory (args);\r
+ case plugInOpcodeSetSpeakerConfiguration: return handleSetSpeakerConfiguration (args);\r
+ case plugInOpcodeSetBypass: return handleSetBypass (args);\r
+ case plugInOpcodeGetPlugInName: return handleGetPlugInName (args);\r
+ case plugInOpcodeGetManufacturerProductName: return handleGetPlugInName (args);\r
+ case plugInOpcodeGetManufacturerName: return handleGetManufacturerName (args);\r
+ case plugInOpcodeGetManufacturerVersion: return handleGetManufacturerVersion (args);\r
+ case plugInOpcodeManufacturerSpecific: return handleManufacturerSpecific (args);\r
+ case plugInOpcodeCanPlugInDo: return handleCanPlugInDo (args);\r
+ case plugInOpcodeGetTailSize: return handleGetTailSize (args);\r
+ case plugInOpcodeKeyboardFocusRequired: return handleKeyboardFocusRequired (args);\r
+ case plugInOpcodeGetVstInterfaceVersion: return handleGetVstInterfaceVersion (args);\r
+ case plugInOpcodeGetCurrentMidiProgram: return handleGetCurrentMidiProgram (args);\r
+ case plugInOpcodeGetSpeakerArrangement: return handleGetSpeakerConfiguration (args);\r
+ case plugInOpcodeSetNumberOfSamplesToProcess: return handleSetNumberOfSamplesToProcess (args);\r
+ case plugInOpcodeSetSampleFloatType: return handleSetSampleFloatType (args);\r
+ default: return 0;\r
+ }\r
+ }\r
+\r
+ static pointer_sized_int dispatcherCB (VstEffectInterface* vstInterface, int32 opCode, int32 index,\r
+ pointer_sized_int value, void* ptr, float opt)\r
+ {\r
+ JuceVSTWrapper* wrapper = getWrapper (vstInterface);\r
+ VstOpCodeArguments args = { index, value, ptr, opt };\r
+\r
+ if (opCode == plugInOpcodeClose)\r
+ {\r
+ wrapper->dispatcher (opCode, args);\r
+ delete wrapper;\r
+ return 1;\r
}\r
- else if (opCode == effEditGetRect)\r
- {\r
- checkWhetherMessageThreadIsCorrect();\r
- const MessageManagerLock mmLock;\r
- createEditorComp();\r
-\r
- if (editorComp != nullptr)\r
- {\r
- editorSize.left = 0;\r
- editorSize.top = 0;\r
- editorSize.right = (VstInt16) editorComp->getWidth();\r
- editorSize.bottom = (VstInt16) editorComp->getHeight();\r
-\r
- *((ERect**) ptr) = &editorSize;\r
-\r
- return (VstIntPtr) (pointer_sized_int) &editorSize;\r
- }\r
\r
- return 0;\r
- }\r
- #endif\r
- return AudioEffectX::dispatcher (opCode, index, value, ptr, opt);\r
+ return wrapper->dispatcher (opCode, args);\r
}\r
\r
- #if ! JUCE_IOS\r
void resizeHostWindow (int newWidth, int newHeight)\r
{\r
if (editorComp != nullptr)\r
{\r
bool sizeWasSuccessful = false;\r
\r
- if (canHostDo (const_cast<char*> ("sizeWindow")))\r
+ if (hostCallback != nullptr)\r
{\r
- isInSizeWindow = true;\r
- sizeWasSuccessful = sizeWindow (newWidth, newHeight);\r
- isInSizeWindow = false;\r
+ if (hostCallback (&vstEffect, hostOpcodeCanHostDo, 0, 0, const_cast<char*> ("sizeWindow"), 0))\r
+ {\r
+ isInSizeWindow = true;\r
+ sizeWasSuccessful = (hostCallback (&vstEffect, hostOpcodeWindowSize, newWidth, newHeight, 0, 0) != 0);\r
+ isInSizeWindow = false;\r
+ }\r
}\r
\r
if (! sizeWasSuccessful)\r
addMouseListener (this, true);\r
#endif\r
\r
- ignoreUnused (fakeMouseGenerator);\r
+ ignoreUnused (fakeMouseGenerator);\r
}\r
\r
~EditorCompWrapper()\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EditorCompWrapper)\r
};\r
- #endif\r
\r
//==============================================================================\r
private:\r
+ VstHostCallback hostCallback;\r
+ float sampleRate;\r
+ int32 blockSize;\r
+ VstEffectInterface vstEffect;\r
AudioProcessor* filter;\r
PluginBusUtilities busUtils;\r
juce::MemoryBlock chunkMemory;\r
juce::uint32 chunkMemoryTime;\r
- #if ! JUCE_IOS\r
ScopedPointer<EditorCompWrapper> editorComp;\r
- ERect editorSize;\r
- #endif\r
+ VstEditorBounds editorBounds;\r
MidiBuffer midiEvents;\r
VSTMidiEventList outgoingEvents;\r
bool isProcessing, isBypassed, hasShutdown, isInSizeWindow, firstProcessCallback;\r
void* hostWindow;\r
#elif JUCE_LINUX\r
Window hostWindow;\r
- #elif JUCE_WINDOWS\r
+ #else\r
HWND hostWindow;\r
#endif\r
\r
- static inline VstInt32 convertHexVersionToDecimal (const unsigned int hexVersion)\r
+ static JuceVSTWrapper* getWrapper (VstEffectInterface* vstInterface) noexcept { return static_cast<JuceVSTWrapper*> (vstInterface->effectPointer); }\r
+\r
+ bool isProcessLevelOffline()\r
+ {\r
+ return hostCallback != nullptr && (int32) hostCallback (&vstEffect, hostOpcodeGetCurrentAudioProcessingLevel, 0, 0, 0, 0) == 4;\r
+ }\r
+\r
+ static inline int32 convertHexVersionToDecimal (const unsigned int hexVersion)\r
{\r
#if JUCE_VST_RETURN_HEX_VERSION_NUMBER_DIRECTLY\r
- return (VstInt32) hexVersion;\r
+ return (int32) hexVersion;\r
#else\r
- return (VstInt32) (((hexVersion >> 24) & 0xff) * 1000\r
+ return (int32) (((hexVersion >> 24) & 0xff) * 1000\r
+ ((hexVersion >> 16) & 0xff) * 100\r
+ ((hexVersion >> 8) & 0xff) * 10\r
+ (hexVersion & 0xff));\r
\r
if (filter != nullptr)\r
{\r
- int numChannels = cEffect.numInputs + cEffect.numOutputs;\r
- tmpBuffers.tempChannels.insertMultiple (0, nullptr, numChannels);\r
+ const int nInputAndOutputChannels = vstEffect.numInputChannels + vstEffect.numOutputChannels;\r
+ tmpBuffers.tempChannels.insertMultiple (0, nullptr, nInputAndOutputChannels);\r
}\r
}\r
\r
}\r
\r
for (i = 0; i < n; ++i)\r
- if ((config[i] = (config[i] + 1) % maxChans[i]) > 0)\r
+ if ((config[i] = maxChans[i] ? (config[i] + 1) % maxChans[i] : 0) > 0)\r
break;\r
}\r
\r
return false;\r
}\r
\r
+ void allocateSpeakerArrangement (VstSpeakerConfiguration** arrangement, int32 nChannels)\r
+ {\r
+ if (*arrangement)\r
+ delete [] (char*) *arrangement;\r
+\r
+ // The last member of a full VstSpeakerConfiguration struct is an array of 8\r
+ // VstIndividualSpeakerInfo. Here we only allocate space for channels we will\r
+ // actually use.\r
+ const size_t allocationSizeToSubtract = static_cast<size_t> (8 - nChannels) * sizeof (VstIndividualSpeakerInfo);\r
+ const size_t allocationSize = sizeof (VstSpeakerConfiguration) - allocationSizeToSubtract;\r
+ char* newAllocation = new char[allocationSize];\r
+ memset (newAllocation, 0, allocationSize);\r
+\r
+ *arrangement = (VstSpeakerConfiguration*) newAllocation;\r
+ (*arrangement)->numberOfChannels = nChannels;\r
+ }\r
+\r
//==============================================================================\r
- bool pluginHasSidechainsOrAuxs() const { return (busUtils.getBusCount (true) > 1 || busUtils.getBusCount (false) > 1); }\r
+ bool pluginHasSidechainsOrAuxs() const\r
+ {\r
+ return (busUtils.getBusCount (true) > 1 || busUtils.getBusCount (false) > 1);\r
+ }\r
\r
static int sumOfConfig (const int config[], int num) noexcept\r
{\r
\r
return retval;\r
}\r
+\r
//==============================================================================\r
- JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceVSTWrapper)\r
-};\r
+ /** Host to plug-in calls. */\r
\r
-//==============================================================================\r
-namespace\r
-{\r
- AEffect* pluginEntryPoint (audioMasterCallback audioMaster)\r
+ pointer_sized_int handleOpen (VstOpCodeArguments)\r
{\r
- JUCE_AUTORELEASEPOOL\r
- {\r
- initialiseJuce_GUI();\r
+ // Note: most hosts call this on the UI thread, but wavelab doesn't, so be careful in here.\r
+ if (filter->hasEditor())\r
+ vstEffect.flags |= vstEffectFlagHasEditor;\r
+ else\r
+ vstEffect.flags &= ~vstEffectFlagHasEditor;\r
\r
- try\r
- {\r
- if (audioMaster (0, audioMasterVersion, 0, 0, 0, 0) != 0)\r
- {\r
- #if JUCE_LINUX\r
- MessageManagerLock mmLock;\r
- #endif\r
+ return 0;\r
+ }\r
\r
- AudioProcessor* const filter = createPluginFilterOfType (AudioProcessor::wrapperType_VST);\r
- JuceVSTWrapper* const wrapper = new JuceVSTWrapper (audioMaster, filter);\r
- return wrapper->getAeffect();\r
- }\r
- }\r
- catch (...)\r
- {}\r
+ pointer_sized_int handleClose (VstOpCodeArguments)\r
+ {\r
+ // Note: most hosts call this on the UI thread, but wavelab doesn't, so be careful in here.\r
+ stopTimer();\r
+\r
+ if (MessageManager::getInstance()->isThisTheMessageThread())\r
+ deleteEditor (false);\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleSetCurrentProgram (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr && isPositiveAndBelow((int) args.value, filter->getNumPrograms()))\r
+ filter->setCurrentProgram ((int) args.value);\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetCurrentProgram (VstOpCodeArguments)\r
+ {\r
+ return (filter != nullptr && filter->getNumPrograms() > 0 ? filter->getCurrentProgram() : 0);\r
+ }\r
+\r
+ pointer_sized_int handleSetCurrentProgramName (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr && filter->getNumPrograms() > 0)\r
+ filter->changeProgramName (filter->getCurrentProgram(), (char*) args.ptr);\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetCurrentProgramName (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr && filter->getNumPrograms() > 0)\r
+ filter->getProgramName (filter->getCurrentProgram()).copyToUTF8 ((char*) args.ptr, 24 + 1);\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetParameterLabel (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr)\r
+ {\r
+ jassert (isPositiveAndBelow (args.index, filter->getNumParameters()));\r
+ // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterLabel (args.index).copyToUTF8 ((char*) args.ptr, 24 + 1);\r
}\r
\r
- return nullptr;\r
+ return 0;\r
}\r
-}\r
\r
-#if ! JUCE_WINDOWS\r
- #define JUCE_EXPORTED_FUNCTION extern "C" __attribute__ ((visibility("default")))\r
-#endif\r
+ pointer_sized_int handleGetParameterText (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr)\r
+ {\r
+ jassert (isPositiveAndBelow (args.index, filter->getNumParameters()));\r
+ // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterText (args.index, 24).copyToUTF8 ((char*) args.ptr, 24 + 1);\r
+ }\r
\r
-//==============================================================================\r
-// Mac startup code..\r
-#if JUCE_MAC || JUCE_IOS\r
+ return 0;\r
+ }\r
\r
- JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster);\r
- JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
+ pointer_sized_int handleGetParameterName (VstOpCodeArguments args)\r
{\r
- PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
+ if (filter != nullptr)\r
+ {\r
+ jassert (isPositiveAndBelow (args.index, filter->getNumParameters()));\r
+ // length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.\r
+ filter->getParameterName (args.index, 16).copyToUTF8 ((char*) args.ptr, 16 + 1);\r
+ }\r
\r
- #if JUCE_MAC\r
- initialiseMacVST();\r
- #endif\r
+ return 0;\r
+ }\r
\r
- return pluginEntryPoint (audioMaster);\r
+ pointer_sized_int handleSetSampleRate (VstOpCodeArguments args)\r
+ {\r
+ sampleRate = args.opt;\r
+ return 0;\r
}\r
\r
- JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster);\r
- JUCE_EXPORTED_FUNCTION AEffect* main_macho (audioMasterCallback audioMaster)\r
+ pointer_sized_int handleSetBlockSize (VstOpCodeArguments args)\r
{\r
- PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
+ blockSize = (int32) args.value;\r
+ return 0;\r
+ }\r
\r
- #if JUCE_MAC\r
- initialiseMacVST();\r
- #endif\r
+ pointer_sized_int handleResumeSuspend (VstOpCodeArguments args)\r
+ {\r
+ if (args.value)\r
+ resume();\r
+ else\r
+ suspend();\r
\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetEditorBounds (VstOpCodeArguments args)\r
+ {\r
+ checkWhetherMessageThreadIsCorrect();\r
+ const MessageManagerLock mmLock;\r
+ createEditorComp();\r
+\r
+ if (editorComp != nullptr)\r
+ {\r
+ editorBounds.upper = 0;\r
+ editorBounds.leftmost = 0;\r
+ editorBounds.lower = (int16) editorComp->getHeight();\r
+ editorBounds.rightmost = (int16) editorComp->getWidth();\r
+\r
+ *((VstEditorBounds**) args.ptr) = &editorBounds;\r
+\r
+ return (pointer_sized_int) (pointer_sized_int) &editorBounds;\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleOpenEditor (VstOpCodeArguments args)\r
+ {\r
+ checkWhetherMessageThreadIsCorrect();\r
+ const MessageManagerLock mmLock;\r
+ jassert (! recursionCheck);\r
+\r
+ startTimer (1000 / 4); // performs misc housekeeping chores\r
+\r
+ deleteEditor (true);\r
+ createEditorComp();\r
+\r
+ if (editorComp != nullptr)\r
+ {\r
+ editorComp->setOpaque (true);\r
+ editorComp->setVisible (false);\r
+\r
+ #if JUCE_WINDOWS\r
+ editorComp->addToDesktop (0, args.ptr);\r
+ hostWindow = (HWND) args.ptr;\r
+ #elif JUCE_LINUX\r
+ editorComp->addToDesktop (0, args.ptr);\r
+ hostWindow = (Window) args.ptr;\r
+ Window editorWnd = (Window) editorComp->getWindowHandle();\r
+ XReparentWindow (display, editorWnd, hostWindow, 0, 0);\r
+ #else\r
+ hostWindow = attachComponentToWindowRefVST (editorComp, args.ptr, useNSView);\r
+ #endif\r
+ editorComp->setVisible (true);\r
+\r
+ return 1;\r
+ }\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleCloseEditor (VstOpCodeArguments)\r
+ {\r
+ checkWhetherMessageThreadIsCorrect();\r
+ const MessageManagerLock mmLock;\r
+ deleteEditor (true);\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetData (VstOpCodeArguments args)\r
+ {\r
+ void** data = (void**) args.ptr;\r
+ bool onlyStoreCurrentProgramData = (args.index != 0);\r
+\r
+ if (filter == nullptr)\r
+ return 0;\r
+\r
+ chunkMemory.reset();\r
+ if (onlyStoreCurrentProgramData)\r
+ filter->getCurrentProgramStateInformation (chunkMemory);\r
+ else\r
+ filter->getStateInformation (chunkMemory);\r
+\r
+ *data = (void*) chunkMemory.getData();\r
+\r
+ // because the chunk is only needed temporarily by the host (or at least you'd\r
+ // hope so) we'll give it a while and then free it in the timer callback.\r
+ chunkMemoryTime = juce::Time::getApproximateMillisecondCounter();\r
+\r
+ return (int32) chunkMemory.getSize();\r
+ }\r
+\r
+ pointer_sized_int handleSetData (VstOpCodeArguments args)\r
+ {\r
+ void* data = args.ptr;\r
+ int32 byteSize = (int32) args.value;\r
+ bool onlyRestoreCurrentProgramData = (args.index != 0);\r
+\r
+ if (filter != nullptr)\r
+ {\r
+ chunkMemory.reset();\r
+ chunkMemoryTime = 0;\r
+\r
+ if (byteSize > 0 && data != nullptr)\r
+ {\r
+ if (onlyRestoreCurrentProgramData)\r
+ filter->setCurrentProgramStateInformation (data, byteSize);\r
+ else\r
+ filter->setStateInformation (data, byteSize);\r
+ }\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handlePreAudioProcessingEvents (VstOpCodeArguments args)\r
+ {\r
+ #if JucePlugin_WantsMidiInput\r
+ VSTMidiEventList::addEventsToMidiBuffer ((VstEventBlock*) args.ptr, midiEvents);\r
+ return 1;\r
+ #else\r
+ ignoreUnused (args);\r
+ return 0;\r
+ #endif\r
+ }\r
+\r
+ pointer_sized_int handleIsParameterAutomatable (VstOpCodeArguments args)\r
+ {\r
+ return (filter != nullptr && filter->isParameterAutomatable (args.index)) ? 1 : 0;\r
+ }\r
+\r
+ pointer_sized_int handleParameterValueForText (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr)\r
+ {\r
+ jassert (isPositiveAndBelow (args.index, filter->getNumParameters()));\r
+\r
+ if (AudioProcessorParameter* p = filter->getParameters()[args.index])\r
+ {\r
+ filter->setParameter (args.index, p->getValueForText (String::fromUTF8 ((char*) args.ptr)));\r
+ return 1;\r
+ }\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetProgramName (VstOpCodeArguments args)\r
+ {\r
+ if (filter != nullptr && isPositiveAndBelow (args.index, filter->getNumPrograms()))\r
+ {\r
+ filter->getProgramName (args.index).copyToUTF8 ((char*) args.ptr, 24 + 1);\r
+ return 1;\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetInputPinProperties (VstOpCodeArguments args)\r
+ {\r
+ return (filter != nullptr && getPinProperties (*(VstPinInfo*) args.ptr, true, args.index)) ? 1 : 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetOutputPinProperties (VstOpCodeArguments args)\r
+ {\r
+ return (filter != nullptr && getPinProperties (*(VstPinInfo*) args.ptr, false, args.index)) ? 1 : 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetPlugInCategory (VstOpCodeArguments)\r
+ {\r
+ return JucePlugin_VSTCategory;\r
+ }\r
+\r
+ pointer_sized_int handleSetSpeakerConfiguration (VstOpCodeArguments args)\r
+ {\r
+ VstSpeakerConfiguration* pluginInput = reinterpret_cast<VstSpeakerConfiguration*> (args.value);\r
+ VstSpeakerConfiguration* pluginOutput = (VstSpeakerConfiguration*) args.ptr;\r
+\r
+ const int numIns = busUtils.getBusCount (true);\r
+ const int numOuts = busUtils.getBusCount (false);;\r
+\r
+ if (pluginInput != nullptr && numIns == 0)\r
+ return 0;\r
+\r
+ if (pluginOutput != nullptr && numOuts == 0)\r
+ return 0;\r
+\r
+ if (pluginInput != nullptr && pluginInput->type >= 0)\r
+ {\r
+ // inconsistent request?\r
+ if (SpeakerMappings::vstArrangementTypeToChannelSet (*pluginInput).size() != pluginInput->numberOfChannels)\r
+ return 0;\r
+ }\r
+\r
+ if (pluginOutput != nullptr && pluginOutput->type >= 0)\r
+ {\r
+ // inconsistent request?\r
+ if (SpeakerMappings::vstArrangementTypeToChannelSet (*pluginOutput).size() != pluginOutput->numberOfChannels)\r
+ return 0;\r
+ }\r
+\r
+ if (numIns > 1 || numOuts > 1)\r
+ {\r
+ int newNumInChannels = (pluginInput != nullptr && pluginInput-> numberOfChannels >= 0)\r
+ ? pluginInput-> numberOfChannels\r
+ : busUtils.findTotalNumChannels (true);\r
+ int newNumOutChannels = (pluginOutput != nullptr && pluginOutput->numberOfChannels >= 0)\r
+ ? pluginOutput->numberOfChannels\r
+ : busUtils.findTotalNumChannels (false);\r
+\r
+ newNumInChannels = jmin (newNumInChannels, maxNumInChannels);\r
+ newNumOutChannels = jmin (newNumOutChannels, maxNumOutChannels);\r
+\r
+ if (! setBusArrangementFromTotalChannelNum (newNumInChannels, newNumOutChannels))\r
+ return 0;\r
+ }\r
+ else\r
+ {\r
+ PluginBusUtilities::ScopedBusRestorer busRestorer (busUtils);\r
+ AudioChannelSet inLayoutType;\r
+\r
+ if (pluginInput != nullptr && pluginInput-> numberOfChannels >= 0)\r
+ {\r
+ inLayoutType = SpeakerMappings::vstArrangementTypeToChannelSet (*pluginInput);\r
+ if (busUtils.getChannelSet (true, 0) != inLayoutType)\r
+ if (! filter->setPreferredBusArrangement (true, 0, inLayoutType))\r
+ return 0;\r
+ }\r
+\r
+ if (pluginOutput != nullptr && pluginOutput->numberOfChannels >= 0)\r
+ {\r
+ AudioChannelSet newType = SpeakerMappings::vstArrangementTypeToChannelSet (*pluginOutput);\r
+\r
+ if (busUtils.getChannelSet (false, 0) != newType)\r
+ if (! filter->setPreferredBusArrangement (false, 0, newType))\r
+ return 0;\r
+\r
+ // re-check the input\r
+ if ((! inLayoutType.isDisabled()) && busUtils.getChannelSet (true, 0) != inLayoutType)\r
+ return 0;\r
+\r
+ busRestorer.release();\r
+ }\r
+ }\r
+\r
+ filter->setRateAndBufferSizeDetails(0, 0);\r
+ return 1;\r
+ }\r
+\r
+ pointer_sized_int handleSetBypass (VstOpCodeArguments args)\r
+ {\r
+ isBypassed = (args.value != 0);\r
+ return 1;\r
+ }\r
+\r
+ pointer_sized_int handleGetPlugInName (VstOpCodeArguments args)\r
+ {\r
+ String (JucePlugin_Name).copyToUTF8 ((char*) args.ptr, 64 + 1);\r
+ return 1;\r
+ }\r
+\r
+ pointer_sized_int handleGetManufacturerName (VstOpCodeArguments args)\r
+ {\r
+ String (JucePlugin_Manufacturer).copyToUTF8 ((char*) args.ptr, 64 + 1);\r
+ return 1;\r
+ }\r
+\r
+ pointer_sized_int handleGetManufacturerVersion (VstOpCodeArguments)\r
+ {\r
+ return convertHexVersionToDecimal (JucePlugin_VersionCode);\r
+ }\r
+\r
+ pointer_sized_int handleManufacturerSpecific (VstOpCodeArguments args)\r
+ {\r
+ #if JucePlugin_Build_VST3 && JUCE_VST3_CAN_REPLACE_VST2\r
+ if ((args.index == 'stCA' || args.index == 'stCa') && args.value == 'FUID' && args.ptr != nullptr)\r
+ {\r
+ memcpy (args.ptr, getJuceVST3ComponentIID(), 16);\r
+ return 1;\r
+ }\r
+ #else\r
+ ignoreUnused (args);\r
+ #endif\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleCanPlugInDo (VstOpCodeArguments args)\r
+ {\r
+ char* text = (char*) args.ptr;\r
+ if (strcmp (text, "receiveVstEvents") == 0\r
+ || strcmp (text, "receiveVstMidiEvent") == 0\r
+ || strcmp (text, "receiveVstMidiEvents") == 0)\r
+ {\r
+ #if JucePlugin_WantsMidiInput\r
+ return 1;\r
+ #else\r
+ return -1;\r
+ #endif\r
+ }\r
+\r
+ if (strcmp (text, "sendVstEvents") == 0\r
+ || strcmp (text, "sendVstMidiEvent") == 0\r
+ || strcmp (text, "sendVstMidiEvents") == 0)\r
+ {\r
+ #if JucePlugin_ProducesMidiOutput\r
+ return 1;\r
+ #else\r
+ return -1;\r
+ #endif\r
+ }\r
+\r
+ if (strcmp (text, "receiveVstTimeInfo") == 0\r
+ || strcmp (text, "conformsToWindowRules") == 0\r
+ || strcmp (text, "bypass") == 0)\r
+ {\r
+ return 1;\r
+ }\r
+\r
+ // This tells Wavelab to use the UI thread to invoke open/close,\r
+ // like all other hosts do.\r
+ if (strcmp (text, "openCloseAnyThread") == 0)\r
+ return -1;\r
+\r
+ if (strcmp (text, "MPE") == 0)\r
+ return filter->supportsMPE() ? 1 : 0;\r
+\r
+ #if JUCE_MAC\r
+ if (strcmp (text, "hasCockosViewAsConfig") == 0)\r
+ {\r
+ useNSView = true;\r
+ return (int32) 0xbeef0000;\r
+ }\r
+ #endif\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetTailSize (VstOpCodeArguments)\r
+ {\r
+ if (filter != nullptr)\r
+ return (pointer_sized_int) (filter->getTailLengthSeconds() * sampleRate);\r
+\r
+ return 0;\r
+ }\r
+\r
+ pointer_sized_int handleKeyboardFocusRequired (VstOpCodeArguments)\r
+ {\r
+ return (JucePlugin_EditorRequiresKeyboardFocus != 0) ? 1 : 0;\r
+ }\r
+\r
+ pointer_sized_int handleGetVstInterfaceVersion (VstOpCodeArguments)\r
+ {\r
+ return juceVstInterfaceVersion;\r
+ }\r
+\r
+ pointer_sized_int handleGetCurrentMidiProgram (VstOpCodeArguments)\r
+ {\r
+ return -1;\r
+ }\r
+\r
+ pointer_sized_int handleGetSpeakerConfiguration (VstOpCodeArguments args)\r
+ {\r
+ VstSpeakerConfiguration** pluginInput = reinterpret_cast<VstSpeakerConfiguration**> (args.value);\r
+ VstSpeakerConfiguration** pluginOutput = (VstSpeakerConfiguration**) args.ptr;\r
+ *pluginInput = nullptr;\r
+ *pluginOutput = nullptr;\r
+\r
+ allocateSpeakerArrangement (pluginInput, busUtils.findTotalNumChannels (true));\r
+ allocateSpeakerArrangement (pluginOutput, busUtils.findTotalNumChannels (false));\r
+\r
+ if (pluginHasSidechainsOrAuxs())\r
+ {\r
+ int numIns = busUtils.findTotalNumChannels (true);\r
+ int numOuts = busUtils.findTotalNumChannels (false);\r
+\r
+ AudioChannelSet layout = AudioChannelSet::canonicalChannelSet (numIns);\r
+ SpeakerMappings::channelSetToVstArrangement (layout, **pluginInput);\r
+\r
+ layout = AudioChannelSet::canonicalChannelSet (numOuts);\r
+ SpeakerMappings::channelSetToVstArrangement (layout, **pluginOutput);\r
+ }\r
+ else\r
+ {\r
+ SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (true, 0), **pluginInput);\r
+ SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (false, 0), **pluginOutput);\r
+ }\r
+\r
+ return 1;\r
+ }\r
+\r
+ pointer_sized_int handleSetNumberOfSamplesToProcess (VstOpCodeArguments args)\r
+ {\r
+ return args.value;\r
+ }\r
+\r
+ pointer_sized_int handleSetSampleFloatType (VstOpCodeArguments args)\r
+ {\r
+ if (! isProcessing)\r
+ {\r
+ if (filter != nullptr)\r
+ {\r
+ filter->setProcessingPrecision (args.value == vstProcessingSampleTypeDouble\r
+ && filter->supportsDoublePrecisionProcessing()\r
+ ? AudioProcessor::doublePrecision\r
+ : AudioProcessor::singlePrecision);\r
+\r
+ return 1;\r
+ }\r
+ }\r
+\r
+ return 0;\r
+ }\r
+\r
+ //==============================================================================\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceVSTWrapper)\r
+};\r
+\r
+\r
+//==============================================================================\r
+namespace\r
+{\r
+ VstEffectInterface* pluginEntryPoint (VstHostCallback audioMaster)\r
+ {\r
+ JUCE_AUTORELEASEPOOL\r
+ {\r
+ initialiseJuce_GUI();\r
+\r
+ try\r
+ {\r
+ if (audioMaster (0, hostOpcodeVstVersion, 0, 0, 0, 0) != 0)\r
+ {\r
+ #if JUCE_LINUX\r
+ MessageManagerLock mmLock;\r
+ #endif\r
+\r
+ AudioProcessor* const filter = createPluginFilterOfType (AudioProcessor::wrapperType_VST);\r
+ JuceVSTWrapper* const wrapper = new JuceVSTWrapper (audioMaster, filter);\r
+ return wrapper->getVstEffectInterface();\r
+ }\r
+ }\r
+ catch (...)\r
+ {}\r
+ }\r
+\r
+ return nullptr;\r
+ }\r
+}\r
+\r
+#if ! JUCE_WINDOWS\r
+ #define JUCE_EXPORTED_FUNCTION extern "C" __attribute__ ((visibility("default")))\r
+#endif\r
+\r
+//==============================================================================\r
+// Mac startup code..\r
+#if JUCE_MAC\r
+\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* VSTPluginMain (VstHostCallback audioMaster);\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* VSTPluginMain (VstHostCallback audioMaster)\r
+ {\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
+\r
+ initialiseMacVST();\r
+ return pluginEntryPoint (audioMaster);\r
+ }\r
+\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* main_macho (VstHostCallback audioMaster);\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* main_macho (VstHostCallback audioMaster)\r
+ {\r
+ PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
+\r
+ initialiseMacVST();\r
return pluginEntryPoint (audioMaster);\r
}\r
\r
// Linux startup code..\r
#elif JUCE_LINUX\r
\r
- JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster);\r
- JUCE_EXPORTED_FUNCTION AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* VSTPluginMain (VstHostCallback audioMaster);\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* VSTPluginMain (VstHostCallback audioMaster)\r
{\r
PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
return pluginEntryPoint (audioMaster);\r
}\r
\r
- JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster) asm ("main");\r
- JUCE_EXPORTED_FUNCTION AEffect* main_plugin (audioMasterCallback audioMaster)\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* main_plugin (VstHostCallback audioMaster) asm ("main");\r
+ JUCE_EXPORTED_FUNCTION VstEffectInterface* main_plugin (VstHostCallback audioMaster)\r
{\r
PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
// Win32 startup code..\r
#else\r
\r
- extern "C" __declspec (dllexport) AEffect* VSTPluginMain (audioMasterCallback audioMaster)\r
+ extern "C" __declspec (dllexport) VstEffectInterface* VSTPluginMain (VstHostCallback audioMaster)\r
{\r
PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
}\r
\r
#ifndef JUCE_64BIT // (can't compile this on win64, but it's not needed anyway with VST2.4)\r
- extern "C" __declspec (dllexport) int main (audioMasterCallback audioMaster)\r
+ extern "C" __declspec (dllexport) int main (VstHostCallback audioMaster)\r
{\r
PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST;\r
\r
#include "../utility/juce_IncludeModuleHeaders.h"\r
#include "../utility/juce_WindowsHooks.h"\r
#include "../utility/juce_PluginBusUtilities.h"\r
+#include "../utility/juce_FakeMouseMoveGenerator.h"\r
#include "../../juce_audio_processors/format_types/juce_VST3Common.h"\r
\r
#ifndef JUCE_VST3_CAN_REPLACE_VST2\r
if (v != valueNormalized)\r
{\r
valueNormalized = v;\r
+ owner.setParameter (paramIndex, static_cast<float> (v));\r
+\r
changed();\r
return true;\r
}\r
setBounds (pluginEditor->getLocalBounds());\r
resizeHostWindow();\r
}\r
+\r
+ ignoreUnused (fakeMouseGenerator);\r
}\r
\r
~ContentWrapperComponent()\r
\r
private:\r
JuceVST3Editor& owner;\r
+ FakeMouseMoveGenerator fakeMouseGenerator;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ContentWrapperComponent)\r
};\r
{\r
const Vst::ParamID paramID = JuceVST3EditController::generateVSTParamIDForIndex (pluginInstance, i);\r
\r
+ // Consider yourself very unlucky if you hit this assertion. The hash code of your\r
+ // parameter ids are not unique.\r
+ jassert (! vstParamIDs.contains (static_cast<uint32> (paramID)));\r
+\r
vstParamIDs.add (paramID);\r
paramMap.set (static_cast<int32> (paramID), i);\r
}\r
\r
ID: juce_audio_plugin_client\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE audio plugin wrapper classes\r
description: Classes for building VST, VST3, AudioUnit, AAX and RTAS plugins.\r
website: http://www.juce.com/juce\r
*/\r
\r
#if ! JUCE_MODULE_AVAILABLE_juce_audio_utils\r
- #error To compile AudioUnitv3 and/or Standalone plug-ins, you need to add the juce_audio_utils module!\r
+ #error To compile AudioUnitv3 and/or Standalone plug-ins, you need to add the juce_audio_utils and juce_audio_devices modules!\r
#endif\r
\r
#include "Standalone/juce_StandaloneFilterApp.cpp"\r
#ifndef JUCE_FAKEMOUSEMOVEGENERATOR_H_INCLUDED\r
#define JUCE_FAKEMOUSEMOVEGENERATOR_H_INCLUDED\r
\r
-#if JUCE_MAC && JUCE_SUPPORT_CARBON\r
+#if JUCE_MAC\r
\r
//==============================================================================\r
-// Helper class to workaround carbon windows not getting mouse-moves..\r
+// Helper class to workaround windows not getting mouse-moves...\r
class FakeMouseMoveGenerator : private Timer\r
{\r
public:\r
\r
void timerCallback() override\r
{\r
- // workaround for carbon windows not getting mouse-moves..\r
+ // Workaround for windows not getting mouse-moves...\r
const Point<float> screenPos (Desktop::getInstance().getMainMouseSource().getScreenPosition());\r
\r
if (screenPos != lastScreenPos)\r
#endif\r
\r
//==============================================================================\r
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200\r
enum\r
{\r
/** Custom AudioUnit property used to indicate MPE support */\r
- kAudioUnitProperty_SupportsMPE = 75001\r
+ kAudioUnitProperty_SupportsMPE = 58\r
};\r
+#endif\r
(int) (numOutputBusChannels * numOutputBusses),\r
rate, blockSize);\r
setLatencySamples (0);\r
-\r
- if (parameters.size() == 0)\r
- {\r
- // some plugins crash if initialiseAudioUnit() is called too soon (sigh..), so we'll\r
- // only call it here if it seems like they it's one of the awkward plugins that can\r
- // only create their parameters after it has been initialised.\r
- if (! initialiseAudioUnit())\r
- return false;\r
-\r
- refreshParameterList();\r
- }\r
-\r
+ refreshParameterList();\r
setPluginCallbacks();\r
return true;\r
}\r
resetBusses();\r
\r
jassert (! prepared);\r
- initialiseAudioUnit();\r
+ prepared = (AudioUnitInitialize (audioUnit) == noErr);\r
}\r
}\r
\r
incomingMidi.clear();\r
}\r
\r
- bool initialiseAudioUnit()\r
- {\r
- if (! prepared)\r
- prepared = (AudioUnitInitialize (audioUnit) == noErr);\r
-\r
- return prepared;\r
- }\r
-\r
void resetBusses()\r
{\r
for (AudioUnitElement i = 0; i < numInputBusses; ++i) AudioUnitReset (audioUnit, kAudioUnitScope_Input, i);\r
\r
if (propertyList != 0)\r
{\r
- initialiseAudioUnit();\r
-\r
AudioUnitSetProperty (audioUnit, kAudioUnitProperty_ClassInfo, kAudioUnitScope_Global,\r
0, &propertyList, sizeof (propertyList));\r
\r
event.mEventType = kAudioUnitEvent_PropertyChange;\r
event.mArgument.mProperty.mPropertyID = type;\r
event.mArgument.mProperty.mAudioUnit = audioUnit;\r
- event.mArgument.mProperty.mPropertyID = kAudioUnitProperty_PresentPreset;\r
event.mArgument.mProperty.mScope = kAudioUnitScope_Global;\r
event.mArgument.mProperty.mElement = 0;\r
AUEventListenerAddEventType (eventListenerRef, nullptr, &event);\r
\r
void eventCallback (const AudioUnitEvent& event, AudioUnitParameterValue newValue)\r
{\r
+ int paramIndex = -1;\r
+\r
+ if (event.mEventType == kAudioUnitEvent_ParameterValueChange\r
+ || event.mEventType == kAudioUnitEvent_BeginParameterChangeGesture\r
+ || event.mEventType == kAudioUnitEvent_EndParameterChangeGesture)\r
+ {\r
+ for (paramIndex = 0; paramIndex < parameters.size(); ++paramIndex)\r
+ {\r
+ const ParamInfo& p = *parameters.getUnchecked(paramIndex);\r
+\r
+ if (p.paramID == event.mArgument.mParameter.mParameterID)\r
+ break;\r
+ }\r
+\r
+ if (! isPositiveAndBelow (paramIndex, parameters.size()))\r
+ return;\r
+ }\r
+\r
switch (event.mEventType)\r
{\r
case kAudioUnitEvent_ParameterValueChange:\r
- for (int i = 0; i < parameters.size(); ++i)\r
{\r
- const ParamInfo& p = *parameters.getUnchecked(i);\r
-\r
- if (p.paramID == event.mArgument.mParameter.mParameterID)\r
- {\r
- sendParamChangeMessageToListeners (i, (newValue - p.minValue) / (p.maxValue - p.minValue));\r
- break;\r
- }\r
+ const ParamInfo& p = *parameters.getUnchecked(paramIndex);\r
+ sendParamChangeMessageToListeners (paramIndex, (newValue - p.minValue) / (p.maxValue - p.minValue));\r
}\r
-\r
break;\r
\r
case kAudioUnitEvent_BeginParameterChangeGesture:\r
- beginParameterChangeGesture ((int) event.mArgument.mParameter.mParameterID);\r
+ beginParameterChangeGesture (paramIndex);\r
break;\r
\r
case kAudioUnitEvent_EndParameterChangeGesture:\r
- endParameterChangeGesture ((int) event.mArgument.mParameter.mParameterID);\r
+ endParameterChangeGesture (paramIndex);\r
break;\r
\r
default:\r
\r
bool createView (const bool createGenericViewIfNeeded)\r
{\r
- if (! plugin.initialiseAudioUnit())\r
- return false;\r
-\r
JUCE_IOS_MAC_VIEW* pluginView = nil;\r
UInt32 dataSize = 0;\r
Boolean isWritable = false;\r
isControllerInitialised = true;\r
editController->setComponentHandler (host);\r
grabInformationObjects();\r
- synchroniseStates();\r
interconnectComponentAndController();\r
+ synchroniseStates();\r
syncProgramNames();\r
setupIO();\r
return true;\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2016 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ -----------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+#ifndef JUCE_VSTINTERFACE_H_INCLUDED\r
+#define JUCE_VSTINTERFACE_H_INCLUDED\r
+\r
+#include "../../juce_core/juce_core.h"\r
+\r
+using namespace juce;\r
+\r
+#if JUCE_MSVC\r
+ #define VSTINTERFACECALL __cdecl\r
+ #pragma pack(push)\r
+ #pragma pack(8)\r
+#elif JUCE_MAC || JUCE_IOS\r
+ #define VSTINTERFACECALL\r
+ #if JUCE_64BIT\r
+ #pragma options align=power\r
+ #else\r
+ #pragma options align=mac68k\r
+ #endif\r
+#else\r
+ #define VSTINTERFACECALL\r
+ #pragma pack(push, 8)\r
+#endif\r
+\r
+const int32 juceVstInterfaceVersion = 2400;\r
+const int32 juceVstInterfaceIdentifier = 0x56737450; // The "magic" identifier in the SDK is 'VstP'.\r
+\r
+//==============================================================================\r
+struct VstEffectInterface\r
+{\r
+ int32 interfaceIdentifier;\r
+ pointer_sized_int (VSTINTERFACECALL* dispatchFunction) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);\r
+ void (VSTINTERFACECALL* processAudioFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples);\r
+ void (VSTINTERFACECALL* setParameterValueFunction) (VstEffectInterface*, int32 parameterIndex, float value);\r
+ float (VSTINTERFACECALL* getParameterValueFunction) (VstEffectInterface*, int32 parameterIndex);\r
+ int32 numPrograms;\r
+ int32 numParameters;\r
+ int32 numInputChannels;\r
+ int32 numOutputChannels;\r
+ int32 flags;\r
+ pointer_sized_int hostSpace1;\r
+ pointer_sized_int hostSpace2;\r
+ int32 latency;\r
+ int32 deprecated1;\r
+ int32 deprecated2;\r
+ float deprecated3;\r
+ void* effectPointer;\r
+ void* userPointer;\r
+ int32 plugInIdentifier;\r
+ int32 plugInVersion;\r
+ void (VSTINTERFACECALL* processAudioInplaceFunction) (VstEffectInterface*, float** inputs, float** outputs, int32 numSamples);\r
+ void (VSTINTERFACECALL* processDoubleAudioInplaceFunction) (VstEffectInterface*, double** inputs, double** outputs, int32 numSamples);\r
+ char emptySpace[56];\r
+};\r
+\r
+typedef pointer_sized_int (VSTINTERFACECALL* VstHostCallback) (VstEffectInterface*, int32 op, int32 index, pointer_sized_int value, void* ptr, float opt);\r
+\r
+enum VstEffectInterfaceFlags\r
+{\r
+ vstEffectFlagHasEditor = 1,\r
+ vstEffectFlagInplaceAudio = 16,\r
+ vstEffectFlagDataInChunks = 32,\r
+ vstEffectFlagIsSynth = 256,\r
+ vstEffectFlagInplaceDoubleAudio = 4096\r
+};\r
+\r
+//==============================================================================\r
+enum VstHostToPlugInOpcodes\r
+{\r
+ plugInOpcodeOpen,\r
+ plugInOpcodeClose,\r
+ plugInOpcodeSetCurrentProgram,\r
+ plugInOpcodeGetCurrentProgram,\r
+ plugInOpcodeSetCurrentProgramName,\r
+ plugInOpcodeGetCurrentProgramName,\r
+ plugInOpcodeGetParameterLabel,\r
+ plugInOpcodeGetParameterText,\r
+ plugInOpcodeGetParameterName,\r
+ plugInOpcodeSetSampleRate = plugInOpcodeGetParameterName + 2,\r
+ plugInOpcodeSetBlockSize,\r
+ plugInOpcodeResumeSuspend,\r
+ plugInOpcodeGetEditorBounds,\r
+ plugInOpcodeOpenEditor,\r
+ plugInOpcodeCloseEditor,\r
+ plugInOpcodeDrawEditor,\r
+ plugInOpcodeGetMouse,\r
+ plugInOpcodeEditorIdle = plugInOpcodeGetMouse + 2,\r
+ plugInOpcodeeffEditorTop,\r
+ plugInOpcodeSleepEditor,\r
+ plugInOpcodeIdentify,\r
+ plugInOpcodeGetData,\r
+ plugInOpcodeSetData,\r
+ plugInOpcodePreAudioProcessingEvents,\r
+ plugInOpcodeIsParameterAutomatable,\r
+ plugInOpcodeParameterValueForText,\r
+ plugInOpcodeGetProgramName = plugInOpcodeParameterValueForText + 2,\r
+ plugInOpcodeConnectInput = plugInOpcodeGetProgramName + 2,\r
+ plugInOpcodeConnectOutput,\r
+ plugInOpcodeGetInputPinProperties,\r
+ plugInOpcodeGetOutputPinProperties,\r
+ plugInOpcodeGetPlugInCategory,\r
+ plugInOpcodeSetSpeakerConfiguration = plugInOpcodeGetPlugInCategory + 7,\r
+ plugInOpcodeSetBypass = plugInOpcodeSetSpeakerConfiguration + 2,\r
+ plugInOpcodeGetPlugInName,\r
+ plugInOpcodeGetManufacturerName = plugInOpcodeGetPlugInName + 2,\r
+ plugInOpcodeGetManufacturerProductName,\r
+ plugInOpcodeGetManufacturerVersion,\r
+ plugInOpcodeManufacturerSpecific,\r
+ plugInOpcodeCanPlugInDo,\r
+ plugInOpcodeGetTailSize,\r
+ plugInOpcodeIdle,\r
+ plugInOpcodeKeyboardFocusRequired = plugInOpcodeIdle + 4,\r
+ plugInOpcodeGetVstInterfaceVersion,\r
+ plugInOpcodeGetCurrentMidiProgram = plugInOpcodeGetVstInterfaceVersion + 5,\r
+ plugInOpcodeGetSpeakerArrangement = plugInOpcodeGetCurrentMidiProgram + 6,\r
+ plugInOpcodeNextPlugInUniqueID,\r
+ plugInOpcodeStartProcess,\r
+ plugInOpcodeStopProcess,\r
+ plugInOpcodeSetNumberOfSamplesToProcess,\r
+ plugInOpcodeSetSampleFloatType = plugInOpcodeSetNumberOfSamplesToProcess + 4,\r
+ plugInOpcodeMaximum = plugInOpcodeSetSampleFloatType\r
+};\r
+\r
+\r
+enum VstPlugInToHostOpcodes\r
+{\r
+ hostOpcodeParameterChanged,\r
+ hostOpcodeVstVersion,\r
+ hostOpcodeCurrentId,\r
+ hostOpcodeIdle,\r
+ hostOpcodePinConnected,\r
+ hostOpcodePlugInWantsMidi = hostOpcodePinConnected + 2,\r
+ hostOpcodeGetTimingInfo,\r
+ hostOpcodePreAudioProcessingEvents,\r
+ hostOpcodeSetTime,\r
+ hostOpcodeTempoAt,\r
+ hostOpcodeGetNumberOfAutomatableParameters,\r
+ hostOpcodeGetParameterInterval,\r
+ hostOpcodeIOModified,\r
+ hostOpcodeNeedsIdle,\r
+ hostOpcodeWindowSize,\r
+ hostOpcodeGetSampleRate,\r
+ hostOpcodeGetBlockSize,\r
+ hostOpcodeGetInputLatency,\r
+ hostOpcodeGetOutputLatency,\r
+ hostOpcodeGetPreviousPlugIn,\r
+ hostOpcodeGetNextPlugIn,\r
+ hostOpcodeWillReplace,\r
+ hostOpcodeGetCurrentAudioProcessingLevel,\r
+ hostOpcodeGetAutomationState,\r
+ hostOpcodeOfflineStart,\r
+ hostOpcodeOfflineReadSource,\r
+ hostOpcodeOfflineWrite,\r
+ hostOpcodeOfflineGetCurrentPass,\r
+ hostOpcodeOfflineGetCurrentMetaPass,\r
+ hostOpcodeSetOutputSampleRate,\r
+ hostOpcodeGetOutputSpeakerConfiguration,\r
+ hostOpcodeGetManufacturerName,\r
+ hostOpcodeGetProductName,\r
+ hostOpcodeGetManufacturerVersion,\r
+ hostOpcodeManufacturerSpecific,\r
+ hostOpcodeSetIcon,\r
+ hostOpcodeCanHostDo,\r
+ hostOpcodeGetLanguage,\r
+ hostOpcodeOpenEditorWindow,\r
+ hostOpcodeCloseEditorWindow,\r
+ hostOpcodeGetDirectory,\r
+ hostOpcodeUpdateView,\r
+ hostOpcodeParameterChangeGestureBegin,\r
+ hostOpcodeParameterChangeGestureEnd,\r
+};\r
+\r
+//==============================================================================\r
+enum VstProcessingSampleType\r
+{\r
+ vstProcessingSampleTypeFloat,\r
+ vstProcessingSampleTypeDouble\r
+};\r
+\r
+//==============================================================================\r
+// These names must be identical to the Steinberg SDK so JUCE users can set\r
+// exactly what they want.\r
+enum VstPlugInCategory\r
+{\r
+ kPlugCategUnknown,\r
+ kPlugCategEffect,\r
+ kPlugCategSynth,\r
+ kPlugCategAnalysis,\r
+ kPlugCategMastering,\r
+ kPlugCategSpacializer,\r
+ kPlugCategRoomFx,\r
+ kPlugSurroundFx,\r
+ kPlugCategRestoration,\r
+ kPlugCategOfflineProcess,\r
+ kPlugCategShell,\r
+ kPlugCategGenerator\r
+};\r
+\r
+//==============================================================================\r
+struct VstEditorBounds\r
+{\r
+ int16 upper;\r
+ int16 leftmost;\r
+ int16 lower;\r
+ int16 rightmost;\r
+};\r
+\r
+//==============================================================================\r
+enum VstMaxStringLengths\r
+{\r
+ vstMaxNameLength = 64,\r
+ vstMaxParameterOrPinLabelLength = 64,\r
+ vstMaxParameterOrPinShortLabelLength = 8,\r
+ vstMaxCategoryLength = 24,\r
+ vstMaxManufacturerStringLength = 64,\r
+ vstMaxPlugInNameStringLength = 64\r
+};\r
+\r
+//==============================================================================\r
+struct VstPinInfo\r
+{\r
+ char text[vstMaxParameterOrPinLabelLength];\r
+ int32 flags;\r
+ int32 configurationType;\r
+ char shortText[vstMaxParameterOrPinShortLabelLength];\r
+ char unused[48];\r
+};\r
+\r
+enum VstPinInfoFlags\r
+{\r
+ vstPinInfoFlagIsActive = 1,\r
+ vstPinInfoFlagIsStereo = 2,\r
+ vstPinInfoFlagValid = 4\r
+};\r
+\r
+//==============================================================================\r
+struct VstEvent\r
+{\r
+ int32 type;\r
+ int32 size;\r
+ int32 sampleOffset;\r
+ int32 flags;\r
+ char content[16];\r
+};\r
+\r
+enum VstEventTypes\r
+{\r
+ vstMidiEventType = 1,\r
+ vstSysExEventType = 6\r
+};\r
+\r
+struct VstEventBlock\r
+{\r
+ int32 numberOfEvents;\r
+ pointer_sized_int future;\r
+ VstEvent* events[2];\r
+};\r
+\r
+struct VstMidiEvent\r
+{\r
+ int32 type;\r
+ int32 size;\r
+ int32 sampleOffset;\r
+ int32 flags;\r
+ int32 noteSampleLength;\r
+ int32 noteSampleOffset;\r
+ char midiData[4];\r
+ char tuning;\r
+ char noteVelocityOff;\r
+ char future1;\r
+ char future2;\r
+};\r
+\r
+enum VstMidiEventFlags\r
+{\r
+ vstMidiEventIsRealtime = 1\r
+};\r
+\r
+struct VstSysExEvent\r
+{\r
+ int32 type;\r
+ int32 size;\r
+ int32 offsetSamples;\r
+ int32 flags;\r
+ int32 sysExDumpSize;\r
+ pointer_sized_int future1;\r
+ char* sysExDump;\r
+ pointer_sized_int future2;\r
+};\r
+\r
+//==============================================================================\r
+struct VstTimingInformation\r
+{\r
+ double samplePosition;\r
+ double sampleRate;\r
+ double systemTimeNanoseconds;\r
+ double musicalPosition;\r
+ double tempoBPM;\r
+ double lastBarPosition;\r
+ double loopStartPosition;\r
+ double loopEndPosition;\r
+ int32 timeSignatureNumerator;\r
+ int32 timeSignatureDenominator;\r
+ int32 smpteOffset;\r
+ int32 smpteRate;\r
+ int32 samplesToNearestClock;\r
+ int32 flags;\r
+};\r
+\r
+enum VstTimingInformationFlags\r
+{\r
+ vstTimingInfoFlagTransportChanged = 1,\r
+ vstTimingInfoFlagCurrentlyPlaying = 2,\r
+ vstTimingInfoFlagLoopActive = 4,\r
+ vstTimingInfoFlagCurrentlyRecording = 8,\r
+ vstTimingInfoFlagAutomationWriteModeActive = 64,\r
+ vstTimingInfoFlagAutomationReadModeActive = 128,\r
+ vstTimingInfoFlagNanosecondsValid = 256,\r
+ vstTimingInfoFlagMusicalPositionValid = 512,\r
+ vstTimingInfoFlagTempoValid = 1024,\r
+ vstTimingInfoFlagLastBarPositionValid = 2056,\r
+ vstTimingInfoFlagLoopPositionValid = 4096,\r
+ vstTimingInfoFlagTimeSignatureValid = 8192,\r
+ vstTimingInfoFlagSmpteValid = 16384,\r
+ vstTimingInfoFlagNearestClockValid = 32768\r
+};\r
+\r
+//==============================================================================\r
+enum VstSmpteRates\r
+{\r
+ vstSmpteRateFps24,\r
+ vstSmpteRateFps25,\r
+ vstSmpteRateFps2997,\r
+ vstSmpteRateFps30,\r
+ vstSmpteRateFps2997drop,\r
+ vstSmpteRateFps30drop,\r
+\r
+ vstSmpteRate16mmFilm,\r
+ vstSmpteRate35mmFilm,\r
+\r
+ vstSmpteRateFps239 = vstSmpteRate35mmFilm + 3,\r
+ vstSmpteRateFps249 ,\r
+ vstSmpteRateFps599,\r
+ vstSmpteRateFps60\r
+};\r
+\r
+//==============================================================================\r
+struct VstIndividualSpeakerInfo\r
+{\r
+ float azimuthalAngle;\r
+ float elevationAngle;\r
+ float radius;\r
+ float reserved;\r
+ char label[vstMaxNameLength];\r
+ int32 type;\r
+ char unused[28];\r
+};\r
+\r
+enum VstIndividualSpeakerType\r
+{\r
+ vstIndividualSpeakerTypeUndefined = 0x7fffffff,\r
+ vstIndividualSpeakerTypeMono = 0,\r
+ vstIndividualSpeakerTypeLeft,\r
+ vstIndividualSpeakerTypeRight,\r
+ vstIndividualSpeakerTypeCentre,\r
+ vstIndividualSpeakerTypeSubbass,\r
+ vstIndividualSpeakerTypeLeftSurround,\r
+ vstIndividualSpeakerTypeRightSurround,\r
+ vstIndividualSpeakerTypeLeftCentre,\r
+ vstIndividualSpeakerTypeRightCentre,\r
+ vstIndividualSpeakerTypeSurround,\r
+ vstIndividualSpeakerTypeCentreSurround = vstIndividualSpeakerTypeSurround,\r
+ vstIndividualSpeakerTypeLeftRearSurround,\r
+ vstIndividualSpeakerTypeRightRearSurround,\r
+ vstIndividualSpeakerTypeTopMiddle,\r
+ vstIndividualSpeakerTypeTopFrontLeft,\r
+ vstIndividualSpeakerTypeTopFrontCentre,\r
+ vstIndividualSpeakerTypeTopFrontRight,\r
+ vstIndividualSpeakerTypeTopRearLeft,\r
+ vstIndividualSpeakerTypeTopRearCentre,\r
+ vstIndividualSpeakerTypeTopRearRight,\r
+ vstIndividualSpeakerTypeSubbass2\r
+};\r
+\r
+struct VstSpeakerConfiguration\r
+{\r
+ int32 type;\r
+ int32 numberOfChannels;\r
+ VstIndividualSpeakerInfo speakers[8];\r
+};\r
+\r
+enum VstSpeakerConfigurationType\r
+{\r
+ vstSpeakerConfigTypeUser = -2,\r
+ vstSpeakerConfigTypeEmpty = -1,\r
+ vstSpeakerConfigTypeMono = 0,\r
+ vstSpeakerConfigTypeLR,\r
+ vstSpeakerConfigTypeLsRs,\r
+ vstSpeakerConfigTypeLcRc,\r
+ vstSpeakerConfigTypeSlSr,\r
+ vstSpeakerConfigTypeCLfe,\r
+ vstSpeakerConfigTypeLRC,\r
+ vstSpeakerConfigTypeLRS,\r
+ vstSpeakerConfigTypeLRCLfe,\r
+ vstSpeakerConfigTypeLRLfeS,\r
+ vstSpeakerConfigTypeLRCS,\r
+ vstSpeakerConfigTypeLRLsRs,\r
+ vstSpeakerConfigTypeLRCLfeS,\r
+ vstSpeakerConfigTypeLRLfeLsRs,\r
+ vstSpeakerConfigTypeLRCLsRs,\r
+ vstSpeakerConfigTypeLRCLfeLsRs,\r
+ vstSpeakerConfigTypeLRCLsRsCs,\r
+ vstSpeakerConfigTypeLRLsRsSlSr,\r
+ vstSpeakerConfigTypeLRCLfeLsRsCs,\r
+ vstSpeakerConfigTypeLRLfeLsRsSlSr,\r
+ vstSpeakerConfigTypeLRCLsRsLcRc,\r
+ vstSpeakerConfigTypeLRCLsRsSlSr,\r
+ vstSpeakerConfigTypeLRCLfeLsRsLcRc,\r
+ vstSpeakerConfigTypeLRCLfeLsRsSlSr,\r
+ vstSpeakerConfigTypeLRCLsRsLcRcCs,\r
+ vstSpeakerConfigTypeLRCLsRsCsSlSr,\r
+ vstSpeakerConfigTypeLRCLfeLsRsLcRcCs,\r
+ vstSpeakerConfigTypeLRCLfeLsRsCsSlSr,\r
+ vstSpeakerConfigTypeLRCLfeLsRsTflTfcTfrTrlTrrLfe2\r
+};\r
+\r
+#if JUCE_MSVC\r
+ #pragma pack(pop)\r
+#elif JUCE_MAC || JUCE_IOS\r
+ #pragma options align=reset\r
+#else\r
+ #pragma pack(pop)\r
+#endif\r
+\r
+#endif // JUCE_VSTINTERFACE_H_INCLUDED\r
==============================================================================\r
*/\r
\r
-#ifdef __aeffect__ // NB: this must come first, *before* the header-guard.\r
+// NB: this must come first, *before* the header-guard.\r
+#ifdef JUCE_VSTINTERFACE_H_INCLUDED\r
\r
#ifndef JUCE_VSTMIDIEVENTLIST_H_INCLUDED\r
#define JUCE_VSTMIDIEVENTLIST_H_INCLUDED\r
numEventsUsed = 0;\r
\r
if (events != nullptr)\r
- events->numEvents = 0;\r
+ events->numberOfEvents = 0;\r
}\r
\r
void addEvent (const void* const midiData, const int numBytes, const int frameOffset)\r
ensureSize (numEventsUsed + 1);\r
\r
VstMidiEvent* const e = (VstMidiEvent*) (events->events [numEventsUsed]);\r
- events->numEvents = ++numEventsUsed;\r
+ events->numberOfEvents = ++numEventsUsed;\r
\r
if (numBytes <= 4)\r
{\r
- if (e->type == kVstSysExType)\r
+ if (e->type == vstSysExEventType)\r
{\r
- delete[] (((VstMidiSysexEvent*) e)->sysexDump);\r
- e->type = kVstMidiType;\r
- e->byteSize = sizeof (VstMidiEvent);\r
- e->noteLength = 0;\r
- e->noteOffset = 0;\r
- e->detune = 0;\r
- e->noteOffVelocity = 0;\r
+ delete[] (((VstSysExEvent*) e)->sysExDump);\r
+ e->type = vstMidiEventType;\r
+ e->size = sizeof (VstMidiEvent);\r
+ e->noteSampleLength = 0;\r
+ e->noteSampleOffset = 0;\r
+ e->tuning = 0;\r
+ e->noteVelocityOff = 0;\r
}\r
\r
- e->deltaFrames = frameOffset;\r
+ e->sampleOffset = frameOffset;\r
memcpy (e->midiData, midiData, (size_t) numBytes);\r
}\r
else\r
{\r
- VstMidiSysexEvent* const se = (VstMidiSysexEvent*) e;\r
+ VstSysExEvent* const se = (VstSysExEvent*) e;\r
\r
- if (se->type == kVstSysExType)\r
- delete[] se->sysexDump;\r
+ if (se->type == vstSysExEventType)\r
+ delete[] se->sysExDump;\r
\r
- se->sysexDump = new char [numBytes];\r
- memcpy (se->sysexDump, midiData, (size_t) numBytes);\r
+ se->sysExDump = new char [(size_t) numBytes];\r
+ memcpy (se->sysExDump, midiData, (size_t) numBytes);\r
\r
- se->type = kVstSysExType;\r
- se->byteSize = sizeof (VstMidiSysexEvent);\r
- se->deltaFrames = frameOffset;\r
+ se->type = vstSysExEventType;\r
+ se->size = sizeof (VstSysExEvent);\r
+ se->offsetSamples = frameOffset;\r
se->flags = 0;\r
- se->dumpBytes = numBytes;\r
- se->resvd1 = 0;\r
- se->resvd2 = 0;\r
+ se->sysExDumpSize = numBytes;\r
+ se->future1 = 0;\r
+ se->future2 = 0;\r
}\r
}\r
\r
//==============================================================================\r
// Handy method to pull the events out of an event buffer supplied by the host\r
// or plugin.\r
- static void addEventsToMidiBuffer (const VstEvents* events, MidiBuffer& dest)\r
+ static void addEventsToMidiBuffer (const VstEventBlock* events, MidiBuffer& dest)\r
{\r
- for (int i = 0; i < events->numEvents; ++i)\r
+ for (int i = 0; i < events->numberOfEvents; ++i)\r
{\r
const VstEvent* const e = events->events[i];\r
\r
if (e != nullptr)\r
{\r
- if (e->type == kVstMidiType)\r
+ if (e->type == vstMidiEventType)\r
{\r
dest.addEvent ((const juce::uint8*) ((const VstMidiEvent*) e)->midiData,\r
- 4, e->deltaFrames);\r
+ 4, e->sampleOffset);\r
}\r
- else if (e->type == kVstSysExType)\r
+ else if (e->type == vstSysExEventType)\r
{\r
- dest.addEvent ((const juce::uint8*) ((const VstMidiSysexEvent*) e)->sysexDump,\r
- (int) ((const VstMidiSysexEvent*) e)->dumpBytes,\r
- e->deltaFrames);\r
+ dest.addEvent ((const juce::uint8*) ((const VstSysExEvent*) e)->sysExDump,\r
+ (int) ((const VstSysExEvent*) e)->sysExDumpSize,\r
+ e->sampleOffset);\r
}\r
}\r
}\r
}\r
\r
//==============================================================================\r
- HeapBlock<VstEvents> events;\r
+ HeapBlock<VstEventBlock> events;\r
\r
private:\r
int numEventsUsed, numEventsAllocated;\r
\r
static VstEvent* allocateVSTEvent()\r
{\r
- VstEvent* const e = (VstEvent*) std::calloc (1, sizeof (VstMidiEvent) > sizeof (VstMidiSysexEvent) ? sizeof (VstMidiEvent)\r
- : sizeof (VstMidiSysexEvent));\r
- e->type = kVstMidiType;\r
- e->byteSize = sizeof (VstMidiEvent);\r
+ VstEvent* const e = (VstEvent*) std::calloc (1, sizeof (VstMidiEvent) > sizeof (VstSysExEvent) ? sizeof (VstMidiEvent)\r
+ : sizeof (VstSysExEvent));\r
+ e->type = vstMidiEventType;\r
+ e->size = sizeof (VstMidiEvent);\r
return e;\r
}\r
\r
static void freeVSTEvent (VstEvent* e)\r
{\r
- if (e->type == kVstSysExType)\r
- delete[] (((VstMidiSysexEvent*) e)->sysexDump);\r
+ if (e->type == vstSysExEventType)\r
+ delete[] (((VstSysExEvent*) e)->sysExDump);\r
\r
std::free (e);\r
}\r
\r
//==============================================================================\r
#undef PRAGMA_ALIGN_SUPPORTED\r
-#define VST_FORCE_DEPRECATED 0\r
\r
#if JUCE_MSVC\r
#pragma warning (push)\r
#define __cdecl\r
#endif\r
\r
-/* Obviously you're going to need the Steinberg vstsdk2.4 folder in\r
- your include path if you want to add VST support.\r
-\r
- If you're not interested in VSTs, you can disable them by setting the\r
- JUCE_PLUGINHOST_VST flag to 0.\r
-*/\r
-#include "pluginterfaces/vst2.x/aeffectx.h"\r
+namespace\r
+{\r
+#include "juce_VSTInterface.h"\r
+}\r
\r
#if JUCE_MSVC\r
#pragma warning (pop)\r
\r
struct fxProgram\r
{\r
- VstInt32 chunkMagic; // 'CcnK'\r
- VstInt32 byteSize; // of this chunk, excl. magic + byteSize\r
- VstInt32 fxMagic; // 'FxCk'\r
- VstInt32 version;\r
- VstInt32 fxID; // fx unique id\r
- VstInt32 fxVersion;\r
- VstInt32 numParams;\r
+ int32 chunkMagic; // 'CcnK'\r
+ int32 byteSize; // of this chunk, excl. magic + byteSize\r
+ int32 fxMagic; // 'FxCk'\r
+ int32 version;\r
+ int32 fxID; // fx unique id\r
+ int32 fxVersion;\r
+ int32 numParams;\r
char prgName[28];\r
float params[1]; // variable no. of parameters\r
};\r
\r
struct fxSet\r
{\r
- VstInt32 chunkMagic; // 'CcnK'\r
- VstInt32 byteSize; // of this chunk, excl. magic + byteSize\r
- VstInt32 fxMagic; // 'FxBk'\r
- VstInt32 version;\r
- VstInt32 fxID; // fx unique id\r
- VstInt32 fxVersion;\r
- VstInt32 numPrograms;\r
+ int32 chunkMagic; // 'CcnK'\r
+ int32 byteSize; // of this chunk, excl. magic + byteSize\r
+ int32 fxMagic; // 'FxBk'\r
+ int32 version;\r
+ int32 fxID; // fx unique id\r
+ int32 fxVersion;\r
+ int32 numPrograms;\r
char future[128];\r
fxProgram programs[1]; // variable no. of programs\r
};\r
\r
struct fxChunkSet\r
{\r
- VstInt32 chunkMagic; // 'CcnK'\r
- VstInt32 byteSize; // of this chunk, excl. magic + byteSize\r
- VstInt32 fxMagic; // 'FxCh', 'FPCh', or 'FBCh'\r
- VstInt32 version;\r
- VstInt32 fxID; // fx unique id\r
- VstInt32 fxVersion;\r
- VstInt32 numPrograms;\r
+ int32 chunkMagic; // 'CcnK'\r
+ int32 byteSize; // of this chunk, excl. magic + byteSize\r
+ int32 fxMagic; // 'FxCh', 'FPCh', or 'FBCh'\r
+ int32 version;\r
+ int32 fxID; // fx unique id\r
+ int32 fxVersion;\r
+ int32 numPrograms;\r
char future[128];\r
- VstInt32 chunkSize;\r
+ int32 chunkSize;\r
char chunk[8]; // variable\r
};\r
\r
struct fxProgramSet\r
{\r
- VstInt32 chunkMagic; // 'CcnK'\r
- VstInt32 byteSize; // of this chunk, excl. magic + byteSize\r
- VstInt32 fxMagic; // 'FxCh', 'FPCh', or 'FBCh'\r
- VstInt32 version;\r
- VstInt32 fxID; // fx unique id\r
- VstInt32 fxVersion;\r
- VstInt32 numPrograms;\r
+ int32 chunkMagic; // 'CcnK'\r
+ int32 byteSize; // of this chunk, excl. magic + byteSize\r
+ int32 fxMagic; // 'FxCh', 'FPCh', or 'FBCh'\r
+ int32 version;\r
+ int32 fxID; // fx unique id\r
+ int32 fxVersion;\r
+ int32 numPrograms;\r
char name[28];\r
- VstInt32 chunkSize;\r
+ int32 chunkSize;\r
char chunk[8]; // variable\r
};\r
\r
// Compares a magic value in either endianness.\r
- static bool compareMagic (VstInt32 magic, const char* name) noexcept\r
+ static bool compareMagic (int32 magic, const char* name) noexcept\r
{\r
- return magic == (VstInt32) ByteOrder::littleEndianInt (name)\r
- || magic == (VstInt32) ByteOrder::bigEndianInt (name);\r
+ return magic == (int32) ByteOrder::littleEndianInt (name)\r
+ || magic == (int32) ByteOrder::bigEndianInt (name);\r
}\r
\r
- static VstInt32 fxbName (const char* name) noexcept { return (VstInt32) ByteOrder::littleEndianInt (name); }\r
- static VstInt32 fxbSwap (const VstInt32 x) noexcept { return (VstInt32) ByteOrder::swapIfLittleEndian ((uint32) x); }\r
+ static int32 fxbName (const char* name) noexcept { return (int32) ByteOrder::littleEndianInt (name); }\r
+ static int32 fxbSwap (const int32 x) noexcept { return (int32) ByteOrder::swapIfLittleEndian ((uint32) x); }\r
\r
static float fxbSwapFloat (const float x) noexcept\r
{\r
}\r
\r
//==============================================================================\r
-typedef AEffect* (VSTCALLBACK *MainCall) (audioMasterCallback);\r
-static VstIntPtr VSTCALLBACK audioMaster (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt);\r
+typedef VstEffectInterface* (VSTINTERFACECALL *MainCall) (VstHostCallback);\r
+static pointer_sized_int VSTINTERFACECALL audioMaster (VstEffectInterface* effect, int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt);\r
\r
//==============================================================================\r
// Change this to disable logging of various VST activities\r
module.close();\r
}\r
\r
- void closeEffect (AEffect* eff)\r
+ void closeEffect (VstEffectInterface* eff)\r
{\r
- eff->dispatcher (eff, effClose, 0, 0, 0, 0);\r
+ eff->dispatchFunction (eff, plugInOpcodeClose, 0, 0, 0, 0);\r
}\r
\r
#if JUCE_WINDOWS\r
}\r
}\r
\r
- void closeEffect (AEffect* eff)\r
+ void closeEffect (VstEffectInterface* eff)\r
{\r
- eff->dispatcher (eff, effClose, 0, 0, 0, 0);\r
+ eff->dispatchFunction (eff, plugInOpcodeClose, 0, 0, 0, 0);\r
}\r
\r
#endif\r
JUCE_VST_WRAPPER_INVOKE_MAIN\r
}\r
\r
- if (effect != nullptr && effect->magic == kEffectMagic)\r
+ if (effect != nullptr && effect->interfaceIdentifier == juceVstInterfaceIdentifier)\r
{\r
- jassert (effect->resvd2 == 0);\r
- jassert (effect->object != 0);\r
+ jassert (effect->hostSpace2 == 0);\r
+ jassert (effect->effectPointer != 0);\r
\r
- _fpreset(); // some dodgy plugs fuck around with this\r
+ _fpreset(); // some dodgy plugs mess around with this\r
}\r
else\r
{\r
const ScopedLock sl (lock);\r
stopTimer();\r
\r
- if (effect != nullptr && effect->magic == kEffectMagic)\r
+ if (effect != nullptr && effect->interfaceIdentifier == juceVstInterfaceIdentifier)\r
{\r
#if JUCE_MAC\r
if (module->resFileId != 0)\r
desc.name = name;\r
\r
{\r
- char buffer [512] = { 0 };\r
- dispatch (effGetEffectName, 0, 0, buffer, 0);\r
+ char buffer[512] = { 0 };\r
+ dispatch (plugInOpcodeGetPlugInName, 0, 0, buffer, 0);\r
\r
- desc.descriptiveName = String::fromUTF8 (buffer).trim();\r
+ desc.descriptiveName = String::createStringFromData (buffer, (int) sizeof (buffer)).trim();\r
\r
if (desc.descriptiveName.isEmpty())\r
desc.descriptiveName = name;\r
desc.category = getCategory();\r
\r
{\r
- char buffer [kVstMaxVendorStrLen + 8] = { 0 };\r
- dispatch (effGetVendorString, 0, 0, buffer, 0);\r
- desc.manufacturerName = String::fromUTF8 (buffer);\r
+ char buffer[512] = { 0 };\r
+ dispatch (plugInOpcodeGetManufacturerName, 0, 0, buffer, 0);\r
+ desc.manufacturerName = String::createStringFromData (buffer, (int) sizeof (buffer)).trim();\r
}\r
\r
desc.version = getVersion();\r
desc.numInputChannels = getTotalNumInputChannels();\r
desc.numOutputChannels = getTotalNumOutputChannels();\r
- desc.isInstrument = (effect != nullptr && (effect->flags & effFlagsIsSynth) != 0);\r
+ desc.isInstrument = (effect != nullptr && (effect->flags & vstEffectFlagIsSynth) != 0);\r
}\r
\r
bool initialiseEffect (double initialSampleRate, int initialBlockSize)\r
{\r
if (effect != nullptr)\r
{\r
- effect->resvd2 = (VstIntPtr) (pointer_sized_int) this;\r
+ effect->hostSpace2 = (pointer_sized_int) (pointer_sized_int) this;\r
initialise (initialSampleRate, initialBlockSize);\r
return true;\r
}\r
JUCE_VST_LOG ("Initialising VST: " + module->pluginName + " (" + getVersion() + ")");\r
initialised = true;\r
\r
- setPlayConfigDetails (effect->numInputs, effect->numOutputs,\r
+ setPlayConfigDetails (effect->numInputChannels, effect->numOutputChannels,\r
initialSampleRate, initialBlockSize);\r
\r
- dispatch (effIdentify, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeIdentify, 0, 0, 0, 0);\r
\r
if (getSampleRate() > 0)\r
- dispatch (effSetSampleRate, 0, 0, 0, (float) getSampleRate());\r
+ dispatch (plugInOpcodeSetSampleRate, 0, 0, 0, (float) getSampleRate());\r
\r
if (getBlockSize() > 0)\r
- dispatch (effSetBlockSize, 0, jmax (32, getBlockSize()), 0, 0);\r
+ dispatch (plugInOpcodeSetBlockSize, 0, jmax (32, getBlockSize()), 0, 0);\r
\r
- dispatch (effOpen, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeOpen, 0, 0, 0, 0);\r
\r
- setPlayConfigDetails (effect->numInputs, effect->numOutputs,\r
+ setPlayConfigDetails (effect->numInputChannels, effect->numOutputChannels,\r
getSampleRate(), getBlockSize());\r
\r
if (getNumPrograms() > 1)\r
setCurrentProgram (0);\r
else\r
- dispatch (effSetProgram, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeSetCurrentProgram, 0, 0, 0, 0);\r
\r
- for (int i = effect->numInputs; --i >= 0;) dispatch (effConnectInput, i, 1, 0, 0);\r
- for (int i = effect->numOutputs; --i >= 0;) dispatch (effConnectOutput, i, 1, 0, 0);\r
+ for (int i = effect->numInputChannels; --i >= 0;) dispatch (plugInOpcodeConnectInput, i, 1, 0, 0);\r
+ for (int i = effect->numOutputChannels; --i >= 0;) dispatch (plugInOpcodeConnectOutput, i, 1, 0, 0);\r
\r
if (getVstCategory() != kPlugCategShell) // (workaround for Waves 5 plugins which crash during this call)\r
updateStoredProgramNames();\r
usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul;\r
#endif\r
\r
- setLatencySamples (effect->initialDelay);\r
+ setLatencySamples (effect->latency);\r
}\r
\r
void* getPlatformSpecificData() override { return effect; }\r
- const String getName() const override { return name; }\r
+\r
+ const String getName() const override\r
+ {\r
+ if (effect != nullptr)\r
+ {\r
+ char buffer[512] = { 0 };\r
+\r
+ if (dispatch (plugInOpcodeGetManufacturerProductName, 0, 0, buffer, 0) != 0)\r
+ {\r
+ String productName = String::createStringFromData (buffer, (int) sizeof (buffer));\r
+\r
+ if (productName.isNotEmpty())\r
+ return productName;\r
+ }\r
+ }\r
+\r
+ return name;\r
+ }\r
\r
int getUID() const\r
{\r
- int uid = effect != nullptr ? effect->uniqueID : 0;\r
+ int uid = effect != nullptr ? effect->plugInIdentifier : 0;\r
\r
if (uid == 0)\r
uid = module->file.hashCode();\r
if (sampleRate <= 0)\r
return 0.0;\r
\r
- VstIntPtr samples = dispatch (effGetTailSize, 0, 0, 0, 0);\r
+ pointer_sized_int samples = dispatch (plugInOpcodeGetTailSize, 0, 0, 0, 0);\r
return samples / sampleRate;\r
}\r
\r
bool producesMidi() const override { return pluginCanDo ("sendVstMidiEvent") > 0; }\r
bool supportsMPE() const override { return pluginCanDo ("MPE") > 0; }\r
\r
- VstPlugCategory getVstCategory() const noexcept { return (VstPlugCategory) dispatch (effGetPlugCategory, 0, 0, 0, 0); }\r
+ VstPlugInCategory getVstCategory() const noexcept { return (VstPlugInCategory) dispatch (plugInOpcodeGetPlugInCategory, 0, 0, 0, 0); }\r
\r
- int pluginCanDo (const char* text) const { return (int) dispatch (effCanDo, 0, 0, (void*) text, 0); }\r
+ int pluginCanDo (const char* text) const { return (int) dispatch (plugInOpcodeCanPlugInDo, 0, 0, (void*) text, 0); }\r
\r
//==============================================================================\r
void prepareToPlay (double rate, int samplesPerBlockExpected) override\r
{\r
- setPlayConfigDetails (effect->numInputs, effect->numOutputs, rate, samplesPerBlockExpected);\r
+ setPlayConfigDetails (effect->numInputChannels, effect->numOutputChannels, rate, samplesPerBlockExpected);\r
\r
- vstHostTime.tempo = 120.0;\r
- vstHostTime.timeSigNumerator = 4;\r
- vstHostTime.timeSigDenominator = 4;\r
+ vstHostTime.tempoBPM = 120.0;\r
+ vstHostTime.timeSignatureNumerator = 4;\r
+ vstHostTime.timeSignatureDenominator = 4;\r
vstHostTime.sampleRate = rate;\r
- vstHostTime.samplePos = 0;\r
- vstHostTime.flags = kVstNanosValid | kVstAutomationWriting | kVstAutomationReading;\r
+ vstHostTime.samplePosition = 0;\r
+ vstHostTime.flags = vstTimingInfoFlagNanosecondsValid\r
+ | vstTimingInfoFlagAutomationWriteModeActive\r
+ | vstTimingInfoFlagAutomationReadModeActive;\r
\r
initialise (rate, samplesPerBlockExpected);\r
\r
\r
incomingMidi.clear();\r
\r
- dispatch (effSetSampleRate, 0, 0, 0, (float) rate);\r
- dispatch (effSetBlockSize, 0, jmax (16, samplesPerBlockExpected), 0, 0);\r
+ dispatch (plugInOpcodeSetSampleRate, 0, 0, 0, (float) rate);\r
+ dispatch (plugInOpcodeSetBlockSize, 0, jmax (16, samplesPerBlockExpected), 0, 0);\r
\r
if (supportsDoublePrecisionProcessing())\r
{\r
- VstInt32 vstPrecision = isUsingDoublePrecision() ? kVstProcessPrecision64\r
- : kVstProcessPrecision32;\r
+ int32 vstPrecision = isUsingDoublePrecision() ? vstProcessingSampleTypeDouble\r
+ : vstProcessingSampleTypeFloat;\r
\r
// if you get an assertion here then your plug-in claims it supports double precision\r
// but returns an error when we try to change the precision\r
- VstIntPtr err = dispatch (effSetProcessPrecision, 0, (VstIntPtr) vstPrecision, 0, 0);\r
+ pointer_sized_int err = dispatch (plugInOpcodeSetSampleFloatType, 0, (pointer_sized_int) vstPrecision, 0, 0);\r
jassert (err > 0);\r
ignoreUnused (err);\r
}\r
\r
- tempBuffer.setSize (jmax (1, effect->numOutputs), samplesPerBlockExpected);\r
+ tempBuffer.setSize (jmax (1, effect->numInputChannels), samplesPerBlockExpected);\r
\r
if (! isPowerOn)\r
setPower (true);\r
setParameter (0, old);\r
}\r
\r
- dispatch (effStartProcess, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeStartProcess, 0, 0, 0, 0);\r
\r
- setLatencySamples (effect->initialDelay);\r
+ setLatencySamples (effect->latency);\r
}\r
}\r
\r
{\r
if (initialised)\r
{\r
- dispatch (effStopProcess, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeStopProcess, 0, 0, 0, 0);\r
setPower (false);\r
}\r
\r
\r
bool supportsDoublePrecisionProcessing() const override\r
{\r
- return ((effect->flags & effFlagsCanReplacing) != 0\r
- && (effect->flags & effFlagsCanDoubleReplacing) != 0);\r
+ return ((effect->flags & vstEffectFlagInplaceAudio) != 0\r
+ && (effect->flags & vstEffectFlagInplaceDoubleAudio) != 0);\r
}\r
\r
//==============================================================================\r
#if JUCE_IOS\r
bool hasEditor() const override { return false; }\r
#else\r
- bool hasEditor() const override { return effect != nullptr && (effect->flags & effFlagsHasEditor) != 0; }\r
+ bool hasEditor() const override { return effect != nullptr && (effect->flags & vstEffectFlagHasEditor) != 0; }\r
#endif\r
\r
AudioProcessorEditor* createEditor() override;\r
{\r
if (isValidChannel (index, true))\r
{\r
- VstPinProperties pinProps;\r
- if (dispatch (effGetInputProperties, index, 0, &pinProps, 0.0f) != 0)\r
- return String (pinProps.label, sizeof (pinProps.label));\r
+ VstPinInfo pinProps;\r
+ if (dispatch (plugInOpcodeGetInputPinProperties, index, 0, &pinProps, 0.0f) != 0)\r
+ return String (pinProps.text, sizeof (pinProps.text));\r
}\r
\r
return String();\r
if (! isValidChannel (index, true))\r
return false;\r
\r
- VstPinProperties pinProps;\r
- if (dispatch (effGetInputProperties, index, 0, &pinProps, 0.0f) != 0)\r
- return (pinProps.flags & kVstPinIsStereo) != 0;\r
+ VstPinInfo pinProps;\r
+ if (dispatch (plugInOpcodeGetInputPinProperties, index, 0, &pinProps, 0.0f) != 0)\r
+ return (pinProps.flags & vstPinInfoFlagIsStereo) != 0;\r
\r
return true;\r
}\r
{\r
if (isValidChannel (index, false))\r
{\r
- VstPinProperties pinProps;\r
- if (dispatch (effGetOutputProperties, index, 0, &pinProps, 0.0f) != 0)\r
- return String (pinProps.label, sizeof (pinProps.label));\r
+ VstPinInfo pinProps;\r
+ if (dispatch (plugInOpcodeGetOutputPinProperties, index, 0, &pinProps, 0.0f) != 0)\r
+ return String (pinProps.text, sizeof (pinProps.text));\r
}\r
\r
return String();\r
if (! isValidChannel (index, false))\r
return false;\r
\r
- VstPinProperties pinProps;\r
- if (dispatch (effGetOutputProperties, index, 0, &pinProps, 0.0f) != 0)\r
- return (pinProps.flags & kVstPinIsStereo) != 0;\r
+ VstPinInfo pinProps;\r
+ if (dispatch (plugInOpcodeGetOutputPinProperties, index, 0, &pinProps, 0.0f) != 0)\r
+ return (pinProps.flags & vstPinInfoFlagIsStereo) != 0;\r
\r
return true;\r
}\r
}\r
\r
//==============================================================================\r
- int getNumParameters() override { return effect != nullptr ? effect->numParams : 0; }\r
+ int getNumParameters() override { return effect != nullptr ? effect->numParameters : 0; }\r
\r
float getParameter (int index) override\r
{\r
- if (effect != nullptr && isPositiveAndBelow (index, (int) effect->numParams))\r
+ if (effect != nullptr && isPositiveAndBelow (index, (int) effect->numParameters))\r
{\r
const ScopedLock sl (lock);\r
- return effect->getParameter (effect, index);\r
+ return effect->getParameterValueFunction (effect, index);\r
}\r
\r
return 0.0f;\r
\r
void setParameter (int index, float newValue) override\r
{\r
- if (effect != nullptr && isPositiveAndBelow (index, (int) effect->numParams))\r
+ if (effect != nullptr && isPositiveAndBelow (index, (int) effect->numParameters))\r
{\r
const ScopedLock sl (lock);\r
\r
- if (effect->getParameter (effect, index) != newValue)\r
- effect->setParameter (effect, index, newValue);\r
+ if (effect->getParameterValueFunction (effect, index) != newValue)\r
+ effect->setParameterValueFunction (effect, index, newValue);\r
}\r
}\r
\r
- const String getParameterName (int index) override { return getTextForOpcode (index, effGetParamName); }\r
- const String getParameterText (int index) override { return getTextForOpcode (index, effGetParamDisplay); }\r
- String getParameterLabel (int index) const override { return getTextForOpcode (index, effGetParamLabel); }\r
+ const String getParameterName (int index) override { return getTextForOpcode (index, plugInOpcodeGetParameterName); }\r
+ const String getParameterText (int index) override { return getTextForOpcode (index, plugInOpcodeGetParameterText); }\r
+ String getParameterLabel (int index) const override { return getTextForOpcode (index, plugInOpcodeGetParameterLabel); }\r
\r
bool isParameterAutomatable (int index) const override\r
{\r
if (effect != nullptr)\r
{\r
- jassert (index >= 0 && index < effect->numParams);\r
- return dispatch (effCanBeAutomated, index, 0, 0, 0) != 0;\r
+ jassert (index >= 0 && index < effect->numParameters);\r
+ return dispatch (plugInOpcodeIsParameterAutomatable, index, 0, 0, 0) != 0;\r
}\r
\r
return false;\r
int getNumPrograms() override { return effect != nullptr ? jmax (0, effect->numPrograms) : 0; }\r
\r
// NB: some plugs return negative numbers from this function.\r
- int getCurrentProgram() override { return (int) dispatch (effGetProgram, 0, 0, 0, 0); }\r
+ int getCurrentProgram() override { return (int) dispatch (plugInOpcodeGetCurrentProgram, 0, 0, 0, 0); }\r
\r
void setCurrentProgram (int newIndex) override\r
{\r
if (getNumPrograms() > 0 && newIndex != getCurrentProgram())\r
- dispatch (effSetProgram, 0, jlimit (0, getNumPrograms() - 1, newIndex), 0, 0);\r
+ dispatch (plugInOpcodeSetCurrentProgram, 0, jlimit (0, getNumPrograms() - 1, newIndex), 0, 0);\r
}\r
\r
const String getProgramName (int index) override\r
{\r
char nm[264] = { 0 };\r
\r
- if (dispatch (effGetProgramNameIndexed, jlimit (0, getNumPrograms(), index), -1, nm, 0) != 0)\r
+ if (dispatch (plugInOpcodeGetProgramName, jlimit (0, getNumPrograms(), index), -1, nm, 0) != 0)\r
return String::fromUTF8 (nm).trim();\r
}\r
}\r
if (index >= 0 && index == getCurrentProgram())\r
{\r
if (getNumPrograms() > 0 && newName != getCurrentProgramName())\r
- dispatch (effSetProgramName, 0, 0, (void*) newName.substring (0, 24).toRawUTF8(), 0.0f);\r
+ dispatch (plugInOpcodeSetCurrentProgramName, 0, 0, (void*) newName.substring (0, 24).toRawUTF8(), 0.0f);\r
}\r
else\r
{\r
//==============================================================================\r
void timerCallback() override\r
{\r
- if (dispatch (effIdle, 0, 0, 0, 0) == 0)\r
+ if (dispatch (plugInOpcodeIdle, 0, 0, 0, 0) == 0)\r
stopTimer();\r
}\r
\r
updateHostDisplay();\r
}\r
\r
- VstIntPtr handleCallback (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt)\r
+ pointer_sized_int handleCallback (int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt)\r
{\r
switch (opcode)\r
{\r
- case audioMasterAutomate: sendParamChangeMessageToListeners (index, opt); break;\r
- case audioMasterProcessEvents: handleMidiFromPlugin ((const VstEvents*) ptr); break;\r
+ case hostOpcodeParameterChanged: sendParamChangeMessageToListeners (index, opt); break;\r
+ case hostOpcodePreAudioProcessingEvents: handleMidiFromPlugin ((const VstEventBlock*) ptr); break;\r
\r
#if JUCE_MSVC\r
#pragma warning (push)\r
#pragma warning (disable: 4311)\r
#endif\r
- case audioMasterGetTime: return (VstIntPtr) &vstHostTime;\r
+ case hostOpcodeGetTimingInfo: return (pointer_sized_int) &vstHostTime;\r
#if JUCE_MSVC\r
#pragma warning (pop)\r
#endif\r
\r
- case audioMasterIdle:\r
+ case hostOpcodeIdle:\r
if (insideVSTCallback == 0 && MessageManager::getInstance()->isThisTheMessageThread())\r
{\r
const IdleCallRecursionPreventer icrp;\r
\r
#if JUCE_MAC\r
if (getActiveEditor() != nullptr)\r
- dispatch (effEditIdle, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeEditorIdle, 0, 0, 0, 0);\r
#endif\r
\r
Timer::callPendingTimersSynchronously();\r
}\r
break;\r
\r
- case audioMasterSizeWindow:\r
+ case hostOpcodeWindowSize:\r
if (AudioProcessorEditor* ed = getActiveEditor())\r
{\r
#if JUCE_LINUX\r
\r
return 1;\r
\r
- case audioMasterUpdateDisplay: triggerAsyncUpdate(); break;\r
- case audioMasterIOChanged: setLatencySamples (effect->initialDelay); break;\r
- case audioMasterNeedIdle: startTimer (50); break;\r
+ case hostOpcodeUpdateView: triggerAsyncUpdate(); break;\r
+ case hostOpcodeIOModified: setLatencySamples (effect->latency); break;\r
+ case hostOpcodeNeedsIdle: startTimer (50); break;\r
\r
- case audioMasterGetSampleRate: return (VstIntPtr) (getSampleRate() > 0 ? getSampleRate() : defaultVSTSampleRateValue);\r
- case audioMasterGetBlockSize: return (VstIntPtr) (getBlockSize() > 0 ? getBlockSize() : defaultVSTBlockSizeValue);\r
- case audioMasterWantMidi: wantsMidiMessages = true; break;\r
- case audioMasterGetDirectory: return getVstDirectory();\r
+ case hostOpcodeGetSampleRate: return (pointer_sized_int) (getSampleRate() > 0 ? getSampleRate() : defaultVSTSampleRateValue);\r
+ case hostOpcodeGetBlockSize: return (pointer_sized_int) (getBlockSize() > 0 ? getBlockSize() : defaultVSTBlockSizeValue);\r
+ case hostOpcodePlugInWantsMidi: wantsMidiMessages = true; break;\r
+ case hostOpcodeGetDirectory: return getVstDirectory();\r
\r
- case audioMasterTempoAt:\r
+ case hostOpcodeTempoAt:\r
if (extraFunctions != nullptr)\r
- return (VstIntPtr) extraFunctions->getTempoAt ((int64) value);\r
+ return (pointer_sized_int) extraFunctions->getTempoAt ((int64) value);\r
\r
break;\r
\r
- case audioMasterGetAutomationState:\r
+ case hostOpcodeGetAutomationState:\r
if (extraFunctions != nullptr)\r
- return (VstIntPtr) extraFunctions->getAutomationState();\r
+ return (pointer_sized_int) extraFunctions->getAutomationState();\r
\r
break;\r
\r
- case audioMasterPinConnected:\r
+ case hostOpcodePinConnected:\r
return isValidChannel (index, value == 0) ? 0 : 1; // (yes, 0 = true)\r
\r
- case audioMasterGetCurrentProcessLevel:\r
+ case hostOpcodeGetCurrentAudioProcessingLevel:\r
return isNonRealtime() ? 4 : 0;\r
\r
- // none of these are handled (yet)..\r
- case audioMasterBeginEdit:\r
- case audioMasterEndEdit:\r
- case audioMasterSetTime:\r
- case audioMasterGetParameterQuantization:\r
- case audioMasterGetInputLatency:\r
- case audioMasterGetOutputLatency:\r
- case audioMasterGetPreviousPlug:\r
- case audioMasterGetNextPlug:\r
- case audioMasterWillReplaceOrAccumulate:\r
- case audioMasterOfflineStart:\r
- case audioMasterOfflineRead:\r
- case audioMasterOfflineWrite:\r
- case audioMasterOfflineGetCurrentPass:\r
- case audioMasterOfflineGetCurrentMetaPass:\r
- case audioMasterVendorSpecific:\r
- case audioMasterSetIcon:\r
- case audioMasterGetLanguage:\r
- case audioMasterOpenWindow:\r
- case audioMasterCloseWindow:\r
+ // none of these are handled (yet)...\r
+ case hostOpcodeSetTime:\r
+ case hostOpcodeGetParameterInterval:\r
+ case hostOpcodeGetInputLatency:\r
+ case hostOpcodeGetOutputLatency:\r
+ case hostOpcodeGetPreviousPlugIn:\r
+ case hostOpcodeGetNextPlugIn:\r
+ case hostOpcodeWillReplace:\r
+ case hostOpcodeOfflineStart:\r
+ case hostOpcodeOfflineReadSource:\r
+ case hostOpcodeOfflineWrite:\r
+ case hostOpcodeOfflineGetCurrentPass:\r
+ case hostOpcodeOfflineGetCurrentMetaPass:\r
+ case hostOpcodeGetOutputSpeakerConfiguration:\r
+ case hostOpcodeManufacturerSpecific:\r
+ case hostOpcodeSetIcon:\r
+ case hostOpcodeGetLanguage:\r
+ case hostOpcodeOpenEditorWindow:\r
+ case hostOpcodeCloseEditorWindow:\r
+ case hostOpcodeParameterChangeGestureBegin:\r
+ case hostOpcodeParameterChangeGestureEnd:\r
break;\r
\r
default:\r
}\r
\r
// handles non plugin-specific callbacks..\r
- static VstIntPtr handleGeneralCallback (VstInt32 opcode, VstInt32 /*index*/, VstIntPtr /*value*/, void *ptr, float /*opt*/)\r
+ static pointer_sized_int handleGeneralCallback (int32 opcode, int32 /*index*/, pointer_sized_int /*value*/, void *ptr, float /*opt*/)\r
{\r
switch (opcode)\r
{\r
- case audioMasterCanDo:\r
+ case hostOpcodeCanHostDo:\r
{\r
static const char* canDos[] = { "supplyIdle",\r
"sendVstEvents",\r
return 0;\r
}\r
\r
- case audioMasterVersion: return 2400;\r
- case audioMasterCurrentId: return shellUIDToCreate;\r
- case audioMasterGetNumAutomatableParameters: return 0;\r
- case audioMasterGetAutomationState: return 1;\r
- case audioMasterGetVendorVersion: return 0x0101;\r
+ case hostOpcodeVstVersion: return 2400;\r
+ case hostOpcodeCurrentId: return shellUIDToCreate;\r
+ case hostOpcodeGetNumberOfAutomatableParameters: return 0;\r
+ case hostOpcodeGetAutomationState: return 1;\r
+ case hostOpcodeGetManufacturerVersion: return 0x0101;\r
\r
- case audioMasterGetVendorString:\r
- case audioMasterGetProductString:\r
+ case hostOpcodeGetManufacturerName:\r
+ case hostOpcodeGetProductName:\r
{\r
String hostName ("Juce VST Host");\r
\r
if (JUCEApplicationBase* app = JUCEApplicationBase::getInstance())\r
hostName = app->getApplicationName();\r
\r
- hostName.copyToUTF8 ((char*) ptr, (size_t) jmin (kVstMaxVendorStrLen, kVstMaxProductStrLen) - 1);\r
+ hostName.copyToUTF8 ((char*) ptr, (size_t) jmin (vstMaxManufacturerStringLength, vstMaxPlugInNameStringLength) - 1);\r
break;\r
}\r
\r
- case audioMasterGetSampleRate: return (VstIntPtr) defaultVSTSampleRateValue;\r
- case audioMasterGetBlockSize: return (VstIntPtr) defaultVSTBlockSizeValue;\r
- case audioMasterSetOutputSampleRate: return 0;\r
+ case hostOpcodeGetSampleRate: return (pointer_sized_int) defaultVSTSampleRateValue;\r
+ case hostOpcodeGetBlockSize: return (pointer_sized_int) defaultVSTBlockSizeValue;\r
+ case hostOpcodeSetOutputSampleRate: return 0;\r
\r
default:\r
DBG ("*** Unhandled VST Callback: " + String ((int) opcode));\r
}\r
\r
//==============================================================================\r
- VstIntPtr dispatch (const int opcode, const int index, const VstIntPtr value, void* const ptr, float opt) const\r
+ pointer_sized_int dispatch (const int opcode, const int index, const pointer_sized_int value, void* const ptr, float opt) const\r
{\r
- VstIntPtr result = 0;\r
+ pointer_sized_int result = 0;\r
\r
if (effect != nullptr)\r
{\r
UseResFile (module->resFileId);\r
#endif\r
\r
- result = effect->dispatcher (effect, opcode, index, value, ptr, opt);\r
+ result = effect->dispatchFunction (effect, opcode, index, value, ptr, opt);\r
\r
#if JUCE_MAC\r
const ResFileRefNum newResFile = CurResFile();\r
set->fxID = fxbSwap (getUID());\r
set->fxVersion = fxbSwap (getVersionNumber());\r
set->numPrograms = fxbSwap (numPrograms);\r
- set->chunkSize = fxbSwap ((VstInt32) chunk.getSize());\r
+ set->chunkSize = fxbSwap ((int32) chunk.getSize());\r
\r
chunk.copyTo (set->chunk, 0, chunk.getSize());\r
}\r
set->fxID = fxbSwap (getUID());\r
set->fxVersion = fxbSwap (getVersionNumber());\r
set->numPrograms = fxbSwap (numPrograms);\r
- set->chunkSize = fxbSwap ((VstInt32) chunk.getSize());\r
+ set->chunkSize = fxbSwap ((int32) chunk.getSize());\r
\r
getCurrentProgramName().copyToUTF8 (set->name, sizeof (set->name) - 1);\r
chunk.copyTo (set->chunk, 0, chunk.getSize());\r
return true;\r
}\r
\r
- bool usesChunks() const noexcept { return effect != nullptr && (effect->flags & effFlagsProgramChunks) != 0; }\r
+ bool usesChunks() const noexcept { return effect != nullptr && (effect->flags & vstEffectFlagDataInChunks) != 0; }\r
\r
bool getChunkData (MemoryBlock& mb, bool isPreset, int maxSizeMB) const\r
{\r
if (usesChunks())\r
{\r
void* data = nullptr;\r
- const size_t bytes = (size_t) dispatch (effGetChunk, isPreset ? 1 : 0, 0, &data, 0.0f);\r
+ const size_t bytes = (size_t) dispatch (plugInOpcodeGetData, isPreset ? 1 : 0, 0, &data, 0.0f);\r
\r
if (data != nullptr && bytes <= (size_t) maxSizeMB * 1024 * 1024)\r
{\r
{\r
if (size > 0 && usesChunks())\r
{\r
- dispatch (effSetChunk, isPreset ? 1 : 0, size, (void*) data, 0.0f);\r
+ dispatch (plugInOpcodeSetData, isPreset ? 1 : 0, size, (void*) data, 0.0f);\r
\r
if (! isPreset)\r
updateStoredProgramNames();\r
return false;\r
}\r
\r
- AEffect* effect;\r
+ VstEffectInterface* effect;\r
ModuleHandle::Ptr module;\r
\r
ScopedPointer<VSTPluginFormat::ExtraFunctions> extraFunctions;\r
CriticalSection midiInLock;\r
MidiBuffer incomingMidi;\r
VSTMidiEventList midiEventsToSend;\r
- VstTimeInfo vstHostTime;\r
+ VstTimingInformation vstHostTime;\r
\r
//==============================================================================\r
template <typename FloatType>\r
if (currentPlayHead->getCurrentPosition (position))\r
{\r
\r
- vstHostTime.samplePos = (double) position.timeInSamples;\r
- vstHostTime.tempo = position.bpm;\r
- vstHostTime.timeSigNumerator = position.timeSigNumerator;\r
- vstHostTime.timeSigDenominator = position.timeSigDenominator;\r
- vstHostTime.ppqPos = position.ppqPosition;\r
- vstHostTime.barStartPos = position.ppqPositionOfLastBarStart;\r
- vstHostTime.flags |= kVstTempoValid | kVstTimeSigValid | kVstPpqPosValid | kVstBarsValid;\r
-\r
- VstInt32 newTransportFlags = 0;\r
- if (position.isPlaying) newTransportFlags |= kVstTransportPlaying;\r
- if (position.isRecording) newTransportFlags |= kVstTransportRecording;\r
-\r
- if (newTransportFlags != (vstHostTime.flags & (kVstTransportPlaying | kVstTransportRecording)))\r
- vstHostTime.flags = (vstHostTime.flags & ~(kVstTransportPlaying | kVstTransportRecording)) | newTransportFlags | kVstTransportChanged;\r
+ vstHostTime.samplePosition = (double) position.timeInSamples;\r
+ vstHostTime.tempoBPM = position.bpm;\r
+ vstHostTime.timeSignatureNumerator = position.timeSigNumerator;\r
+ vstHostTime.timeSignatureDenominator = position.timeSigDenominator;\r
+ vstHostTime.musicalPosition = position.ppqPosition;\r
+ vstHostTime.lastBarPosition = position.ppqPositionOfLastBarStart;\r
+ vstHostTime.flags |= vstTimingInfoFlagTempoValid\r
+ | vstTimingInfoFlagTimeSignatureValid\r
+ | vstTimingInfoFlagMusicalPositionValid\r
+ | vstTimingInfoFlagLastBarPositionValid;\r
+\r
+ int32 newTransportFlags = 0;\r
+ if (position.isPlaying) newTransportFlags |= vstTimingInfoFlagCurrentlyPlaying;\r
+ if (position.isRecording) newTransportFlags |= vstTimingInfoFlagCurrentlyRecording;\r
+\r
+ if (newTransportFlags != (vstHostTime.flags & (vstTimingInfoFlagCurrentlyPlaying\r
+ | vstTimingInfoFlagCurrentlyRecording)))\r
+ vstHostTime.flags = (vstHostTime.flags & ~(vstTimingInfoFlagCurrentlyPlaying | vstTimingInfoFlagCurrentlyRecording)) | newTransportFlags | vstTimingInfoFlagTransportChanged;\r
else\r
- vstHostTime.flags &= ~kVstTransportChanged;\r
+ vstHostTime.flags &= ~vstTimingInfoFlagTransportChanged;\r
\r
switch (position.frameRate)\r
{\r
\r
if (position.isLooping)\r
{\r
- vstHostTime.cycleStartPos = position.ppqLoopStart;\r
- vstHostTime.cycleEndPos = position.ppqLoopEnd;\r
- vstHostTime.flags |= (kVstCyclePosValid | kVstTransportCycleActive);\r
+ vstHostTime.loopStartPosition = position.ppqLoopStart;\r
+ vstHostTime.loopEndPosition = position.ppqLoopEnd;\r
+ vstHostTime.flags |= (vstTimingInfoFlagLoopPositionValid | vstTimingInfoFlagLoopActive);\r
}\r
else\r
{\r
- vstHostTime.flags &= ~(kVstCyclePosValid | kVstTransportCycleActive);\r
+ vstHostTime.flags &= ~(vstTimingInfoFlagLoopPositionValid | vstTimingInfoFlagLoopActive);\r
}\r
}\r
}\r
\r
- vstHostTime.nanoSeconds = getVSTHostTimeNanoseconds();\r
+ vstHostTime.systemTimeNanoseconds = getVSTHostTimeNanoseconds();\r
\r
if (wantsMidiMessages)\r
{\r
jlimit (0, numSamples - 1, samplePosition));\r
}\r
\r
- effect->dispatcher (effect, effProcessEvents, 0, 0, midiEventsToSend.events, 0);\r
+ effect->dispatchFunction (effect, plugInOpcodePreAudioProcessingEvents, 0, 0, midiEventsToSend.events, 0);\r
}\r
\r
_clearfp();\r
}\r
\r
//==============================================================================\r
- inline void invokeProcessFunction (AudioBuffer<float>& buffer, VstInt32 sampleFrames)\r
+ inline void invokeProcessFunction (AudioBuffer<float>& buffer, int32 sampleFrames)\r
{\r
- if ((effect->flags & effFlagsCanReplacing) != 0)\r
+ if ((effect->flags & vstEffectFlagInplaceAudio) != 0)\r
{\r
- effect->processReplacing (effect, buffer.getArrayOfWritePointers(), buffer.getArrayOfWritePointers(), sampleFrames);\r
+ effect->processAudioInplaceFunction (effect, buffer.getArrayOfWritePointers(), buffer.getArrayOfWritePointers(), sampleFrames);\r
}\r
else\r
{\r
- tempBuffer.setSize (effect->numOutputs, sampleFrames);\r
+ tempBuffer.setSize (effect->numOutputChannels, sampleFrames);\r
tempBuffer.clear();\r
\r
- effect->process (effect, buffer.getArrayOfWritePointers(), tempBuffer.getArrayOfWritePointers(), sampleFrames);\r
+ effect->processAudioFunction (effect, buffer.getArrayOfWritePointers(), tempBuffer.getArrayOfWritePointers(), sampleFrames);\r
\r
- for (int i = effect->numOutputs; --i >= 0;)\r
+ for (int i = effect->numOutputChannels; --i >= 0;)\r
buffer.copyFrom (i, 0, tempBuffer.getReadPointer (i), sampleFrames);\r
}\r
}\r
\r
- inline void invokeProcessFunction (AudioBuffer<double>& buffer, VstInt32 sampleFrames)\r
+ inline void invokeProcessFunction (AudioBuffer<double>& buffer, int32 sampleFrames)\r
{\r
- effect->processDoubleReplacing (effect, buffer.getArrayOfWritePointers(), buffer.getArrayOfWritePointers(), sampleFrames);\r
+ effect->processDoubleAudioInplaceFunction (effect, buffer.getArrayOfWritePointers(), buffer.getArrayOfWritePointers(), sampleFrames);\r
}\r
\r
//==============================================================================\r
void setHostTimeFrameRate (long frameRateIndex, double frameRate, double currentTime) noexcept\r
{\r
- vstHostTime.flags |= kVstSmpteValid;\r
- vstHostTime.smpteFrameRate = (VstInt32) frameRateIndex;\r
- vstHostTime.smpteOffset = (VstInt32) (currentTime * 80.0 * frameRate + 0.5);\r
+ vstHostTime.flags |= vstTimingInfoFlagSmpteValid;\r
+ vstHostTime.smpteRate = (int32) frameRateIndex;\r
+ vstHostTime.smpteOffset = (int32) (currentTime * 80.0 * frameRate + 0.5);\r
}\r
\r
bool restoreProgramSettings (const fxProgram* const prog)\r
return false;\r
}\r
\r
- String getTextForOpcode (const int index, const AEffectOpcodes opcode) const\r
+ String getTextForOpcode (const int index, const VstHostToPlugInOpcodes opcode) const\r
{\r
if (effect == nullptr)\r
return String();\r
\r
- jassert (index >= 0 && index < effect->numParams);\r
- char nm [256] = { 0 };\r
+ jassert (index >= 0 && index < effect->numParameters);\r
+ char nm[256] = { 0 };\r
dispatch (opcode, index, 0, nm, 0);\r
return String::createStringFromData (nm, (int) sizeof (nm)).trim();\r
}\r
{\r
{\r
char nm[256] = { 0 };\r
- dispatch (effGetProgramName, 0, 0, nm, 0);\r
+ dispatch (plugInOpcodeGetCurrentProgramName, 0, 0, nm, 0);\r
progName = String::createStringFromData (nm, (int) sizeof (nm)).trim();\r
}\r
\r
char nm[256] = { 0 };\r
\r
// only do this if the plugin can't use indexed names..\r
- if (dispatch (effGetProgramNameIndexed, 0, -1, nm, 0) == 0)\r
+ if (dispatch (plugInOpcodeGetProgramName, 0, -1, nm, 0) == 0)\r
{\r
const int oldProgram = getCurrentProgram();\r
MemoryBlock oldSettings;\r
}\r
}\r
\r
- void handleMidiFromPlugin (const VstEvents* const events)\r
+ void handleMidiFromPlugin (const VstEventBlock* const events)\r
{\r
if (events != nullptr)\r
{\r
setParameter (i, p[i]);\r
}\r
\r
- VstIntPtr getVstDirectory() const\r
+ pointer_sized_int getVstDirectory() const\r
{\r
#if JUCE_MAC\r
- return (VstIntPtr) (void*) &module->parentDirFSSpec;\r
+ return (pointer_sized_int) (void*) &module->parentDirFSSpec;\r
#else\r
- return (VstIntPtr) (pointer_sized_uint) module->fullParentDirectoryPathName.toRawUTF8();\r
+ return (pointer_sized_int) (pointer_sized_uint) module->fullParentDirectoryPathName.toRawUTF8();\r
#endif\r
}\r
\r
//==============================================================================\r
- int getVersionNumber() const noexcept { return effect != nullptr ? effect->version : 0; }\r
+ int getVersionNumber() const noexcept { return effect != nullptr ? effect->plugInVersion : 0; }\r
\r
String getVersion() const\r
{\r
- unsigned int v = (unsigned int) dispatch (effGetVendorVersion, 0, 0, 0, 0);\r
+ unsigned int v = (unsigned int) dispatch (plugInOpcodeGetManufacturerVersion, 0, 0, 0, 0);\r
\r
String s;\r
\r
\r
void setPower (const bool on)\r
{\r
- dispatch (effMainsChanged, 0, on ? 1 : 0, 0, 0);\r
+ dispatch (plugInOpcodeResumeSuspend, 0, on ? 1 : 0, 0, 0);\r
isPowerOn = on;\r
}\r
\r
pluginProc = None;\r
\r
#elif JUCE_MAC\r
+ ignoreUnused (recursiveResize, pluginRefusesToResize, alreadyInside);\r
+\r
#if JUCE_SUPPORT_CARBON\r
if (! plug.usesCocoaNSView)\r
addAndMakeVisible (carbonWrapper = new CarbonWrapperComponent (*this));\r
if (! reentrantGuard)\r
{\r
reentrantGuard = true;\r
- plugin.dispatch (effEditIdle, 0, 0, 0, 0);\r
+ plugin.dispatch (plugInOpcodeEditorIdle, 0, 0, 0, 0);\r
reentrantGuard = false;\r
}\r
\r
activeVSTWindows.add (this);\r
\r
#if JUCE_MAC\r
- dispatch (effEditTop, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeeffEditorTop, 0, 0, 0, 0);\r
#endif\r
}\r
\r
\r
isOpen = true;\r
\r
- ERect* rect = nullptr;\r
- dispatch (effEditGetRect, 0, 0, &rect, 0);\r
- dispatch (effEditOpen, 0, 0, parentWindow, 0);\r
+ VstEditorBounds* rect = nullptr;\r
+ dispatch (plugInOpcodeGetEditorBounds, 0, 0, &rect, 0);\r
+ dispatch (plugInOpcodeOpenEditor, 0, 0, parentWindow, 0);\r
\r
// do this before and after like in the steinberg example\r
- dispatch (effEditGetRect, 0, 0, &rect, 0);\r
- dispatch (effGetProgram, 0, 0, 0, 0); // also in steinberg code\r
+ dispatch (plugInOpcodeGetEditorBounds, 0, 0, &rect, 0);\r
+ dispatch (plugInOpcodeGetCurrentProgram, 0, 0, 0, 0); // also in steinberg code\r
\r
// Install keyboard hooks\r
- pluginWantsKeys = (dispatch (effKeysRequired, 0, 0, 0, 0) == 0);\r
+ pluginWantsKeys = (dispatch (plugInOpcodeKeyboardFocusRequired, 0, 0, 0, 0) == 0);\r
\r
// double-check it's not too tiny\r
int w = 250, h = 150;\r
\r
if (rect != nullptr)\r
{\r
- w = rect->right - rect->left;\r
- h = rect->bottom - rect->top;\r
+ w = rect->rightmost - rect->leftmost;\r
+ h = rect->lower - rect->upper;\r
\r
if (w == 0 || h == 0)\r
{\r
JUCE_VST_LOG ("Opening VST UI: " + plugin.getName());\r
isOpen = true;\r
\r
- ERect* rect = nullptr;\r
- dispatch (effEditGetRect, 0, 0, &rect, 0);\r
- dispatch (effEditOpen, 0, 0, getWindowHandle(), 0);\r
+ VstEditorBounds* rect = nullptr;\r
+ dispatch (plugInOpcodeGetEditorBounds, 0, 0, &rect, 0);\r
+ dispatch (plugInOpcodeOpenEditor, 0, 0, getWindowHandle(), 0);\r
\r
// do this before and after like in the steinberg example\r
- dispatch (effEditGetRect, 0, 0, &rect, 0);\r
- dispatch (effGetProgram, 0, 0, 0, 0); // also in steinberg code\r
+ dispatch (plugInOpcodeGetEditorBounds, 0, 0, &rect, 0);\r
+ dispatch (plugInOpcodeGetCurrentProgram, 0, 0, 0, 0); // also in steinberg code\r
\r
// Install keyboard hooks\r
- pluginWantsKeys = (dispatch (effKeysRequired, 0, 0, 0, 0) == 0);\r
+ pluginWantsKeys = (dispatch (plugInOpcodeKeyboardFocusRequired, 0, 0, 0, 0) == 0);\r
\r
#if JUCE_WINDOWS\r
originalWndProc = 0;\r
\r
if (rect != nullptr)\r
{\r
- const int rw = rect->right - rect->left;\r
- const int rh = rect->bottom - rect->top;\r
+ const int rw = rect->rightmost - rect->leftmost;\r
+ const int rh = rect->lower - rect->upper;\r
\r
if ((rw > 50 && rh > 50 && rw < 2000 && rh < 2000 && rw != w && rh != h)\r
|| ((w == 0 && rw > 0) || (h == 0 && rh > 0)))\r
\r
if (rect != nullptr)\r
{\r
- w = rect->right - rect->left;\r
- h = rect->bottom - rect->top;\r
+ w = rect->rightmost - rect->leftmost;\r
+ h = rect->lower - rect->upper;\r
\r
if (w == 0 || h == 0)\r
{\r
\r
JUCE_VST_LOG ("Closing VST UI: " + plugin.getName());\r
isOpen = false;\r
- dispatch (effEditClose, 0, 0, 0, 0);\r
+ dispatch (plugInOpcodeCloseEditor, 0, 0, 0, 0);\r
stopTimer();\r
\r
#if JUCE_WINDOWS\r
}\r
\r
//==============================================================================\r
- VstIntPtr dispatch (const int opcode, const int index, const int value, void* const ptr, float opt)\r
+ pointer_sized_int dispatch (const int opcode, const int index, const int value, void* const ptr, float opt)\r
{\r
return plugin.dispatch (opcode, index, value, ptr, opt);\r
}\r
if (owner.isOpen)\r
{\r
owner.isOpen = false;\r
- owner.dispatch (effEditClose, 0, 0, 0, 0);\r
- owner.dispatch (effEditSleep, 0, 0, 0, 0);\r
+ owner.dispatch (plugInOpcodeCloseEditor, 0, 0, 0, 0);\r
+ owner.dispatch (plugInOpcodeSleepEditor, 0, 0, 0, 0);\r
}\r
}\r
\r
bool getEmbeddedViewSize (int& w, int& h) override\r
{\r
- ERect* rect = nullptr;\r
- owner.dispatch (effEditGetRect, 0, 0, &rect, 0);\r
- w = rect->right - rect->left;\r
- h = rect->bottom - rect->top;\r
+ VstEditorBounds* rect = nullptr;\r
+ owner.dispatch (plugInOpcodeGetEditorBounds, 0, 0, &rect, 0);\r
+ w = rect->rightmost - rect->leftmost;\r
+ h = rect->lower - rect->upper;\r
return true;\r
}\r
\r
{\r
alreadyInside = true;\r
getTopLevelComponent()->toFront (true);\r
- owner.dispatch (effEditMouse, x, y, 0, 0);\r
+ owner.dispatch (plugInOpcodeGetMouse, x, y, 0, 0);\r
alreadyInside = false;\r
}\r
else\r
if (ComponentPeer* const peer = getPeer())\r
{\r
const Point<int> pos (peer->globalToLocal (getScreenPosition()));\r
- ERect r;\r
- r.left = (VstInt16) pos.getX();\r
- r.top = (VstInt16) pos.getY();\r
- r.right = (VstInt16) (r.left + getWidth());\r
- r.bottom = (VstInt16) (r.top + getHeight());\r
+ VstEditorBounds r;\r
+ r.leftmost = (int16) pos.getX();\r
+ r.upper = (int16) pos.getY();\r
+ r.rightmost = (int16) (r.leftmost + getWidth());\r
+ r.lower = (int16) (r.upper + getHeight());\r
\r
- owner.dispatch (effEditDraw, 0, 0, &r, 0);\r
+ owner.dispatch (plugInOpcodeDrawEditor, 0, 0, &r, 0);\r
}\r
}\r
\r
\r
//==============================================================================\r
// entry point for all callbacks from the plugin\r
-static VstIntPtr VSTCALLBACK audioMaster (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt)\r
+static pointer_sized_int VSTINTERFACECALL audioMaster (VstEffectInterface* effect, int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt)\r
{\r
if (effect != nullptr)\r
- if (VSTPluginInstance* instance = (VSTPluginInstance*) (effect->resvd2))\r
+ if (VSTPluginInstance* instance = (VSTPluginInstance*) (effect->hostSpace2))\r
return instance->handleCallback (opcode, index, value, ptr, opt);\r
\r
return VSTPluginInstance::handleGeneralCallback (opcode, index, value, ptr, opt);\r
// Normal plugin...\r
results.add (new PluginDescription (desc));\r
\r
- instance->dispatch (effOpen, 0, 0, 0, 0);\r
+ instance->dispatch (plugInOpcodeOpen, 0, 0, 0, 0);\r
}\r
else\r
{\r
for (;;)\r
{\r
char shellEffectName [256] = { 0 };\r
- const int uid = (int) instance->dispatch (effShellGetNextPlugin, 0, 0, shellEffectName, 0);\r
+ const int uid = (int) instance->dispatch (plugInOpcodeNextPlugInUniqueID, 0, 0, shellEffectName, 0);\r
\r
if (uid == 0)\r
break;\r
vst->extraFunctions = f;\r
}\r
\r
-VSTPluginFormat::VstIntPtr JUCE_CALLTYPE VSTPluginFormat::dispatcher (AudioPluginInstance* plugin, int32 opcode, int32 index, VstIntPtr value, void* ptr, float opt)\r
+pointer_sized_int JUCE_CALLTYPE VSTPluginFormat::dispatcher (AudioPluginInstance* plugin, int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt)\r
{\r
if (VSTPluginInstance* vst = dynamic_cast<VSTPluginInstance*> (plugin))\r
return vst->dispatch (opcode, index, value, ptr, opt);\r
static void setExtraFunctions (AudioPluginInstance* plugin, ExtraFunctions* functions);\r
\r
//==============================================================================\r
- #if JUCE_64BIT\r
- typedef int64 VstIntPtr;\r
- #else\r
- typedef int32 VstIntPtr;\r
- #endif\r
-\r
/** This simply calls directly to the VST's AEffect::dispatcher() function. */\r
- static VstIntPtr JUCE_CALLTYPE dispatcher (AudioPluginInstance*, int32, int32, VstIntPtr, void*, float);\r
+ static pointer_sized_int JUCE_CALLTYPE dispatcher (AudioPluginInstance*, int32, int32, pointer_sized_int, void*, float);\r
\r
//==============================================================================\r
String getName() const override { return "VST"; }\r
\r
ID: juce_audio_processors\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE audio processor classes\r
description: Classes for loading and playing VST, AU, or internally-generated audio processors.\r
website: http://www.juce.com/juce\r
\r
//==============================================================================\r
/** Config: JUCE_PLUGINHOST_VST\r
- Enables the VST audio plugin hosting classes. This requires the Steinberg VST SDK to be\r
- installed on your machine.\r
+ Enables the VST audio plugin hosting classes.\r
\r
@see VSTPluginFormat, VST3PluginFormat, AudioPluginFormat, AudioPluginFormatManager, JUCE_PLUGINHOST_AU, JUCE_PLUGINHOST_VST3\r
*/\r
// #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 flags if you're using this module!"\r
#endif\r
\r
-#if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT)\r
+#if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT || JUCE_IOS)\r
#define JUCE_SUPPORT_CARBON 1\r
#endif\r
\r
#endif\r
ignoreUnused (maxOutChannels);\r
\r
- #if ! JucePlugin_IsMidiEffect\r
+ #if JucePlugin_IsMidiEffect\r
+ ignoreUnused (channelConfigs);\r
+ #else\r
#if ! JucePlugin_IsSynth\r
const int numInChannels = jmin (maxInChannels, (int) channelConfigs[0][0]);\r
\r
virtual int getControlParameterIndex (Component&);\r
\r
//==============================================================================\r
- /** Make the editor resizable or fixed.\r
-\r
- @param shouldBeResizable whether it's resizable at all\r
+ /** Marks the host's editor window as resizable\r
+\r
+ @param allowHostToResize whether the editor's parent window can be resized\r
+ by the user or the host. Even if this is false, you\r
+ can still resize your window yourself by calling\r
+ setBounds (for example, when a user clicks on a button\r
+ in your editor to drop out a panel) which will bypass any\r
+ resizable/constraints checks. If you are using\r
+ your own corner resizer than this will also bypass\r
+ any checks.\r
+ @param useBottomRightCornerResizer\r
@see setResizeLimits, isResizable\r
*/\r
- void setResizable (bool shouldBeResizable, bool useBottomRightCornerResizer);\r
+ void setResizable (bool allowHostToResize, bool useBottomRightCornerResizer);\r
\r
- /** Returns true if resizing is enabled.\r
+ /** Returns true if the host is allowed to resize editor's parent window\r
\r
@see setResizable\r
*/\r
\r
AudioBuffer<FloatType> buffer (channels, totalChans, numSamples);\r
\r
- callProcess (buffer, *sharedMidiBuffers.getUnchecked (midiBufferToUse));\r
+ {\r
+ ScopedLock callbackLock (processor->getCallbackLock());\r
+\r
+ if (processor->isSuspended())\r
+ buffer.clear();\r
+ else\r
+ callProcess (buffer, *sharedMidiBuffers.getUnchecked (midiBufferToUse));\r
+ }\r
}\r
\r
void callProcess (AudioBuffer<float>& buffer, MidiBuffer& midiMessages)\r
//==============================================================================\r
AudioProcessorGraph::AudioProcessorGraph()\r
: lastNodeId (0), audioBuffers (new AudioProcessorGraphBufferHelpers),\r
- currentMidiInputBuffer (nullptr)\r
+ currentMidiInputBuffer (nullptr), isPrepared (false)\r
{\r
}\r
\r
\r
Node* const n = new Node (nodeId, newProcessor);\r
nodes.add (n);\r
- triggerAsyncUpdate();\r
+\r
+ if (isPrepared)\r
+ triggerAsyncUpdate();\r
\r
n->setParentGraph (this);\r
return n;\r
if (nodes.getUnchecked(i)->nodeId == nodeId)\r
{\r
nodes.remove (i);\r
- triggerAsyncUpdate();\r
+\r
+ if (isPrepared)\r
+ triggerAsyncUpdate();\r
\r
return true;\r
}\r
GraphRenderingOps::ConnectionSorter sorter;\r
connections.addSorted (sorter, new Connection (sourceNodeId, sourceChannelIndex,\r
destNodeId, destChannelIndex));\r
- triggerAsyncUpdate();\r
+\r
+ if (isPrepared)\r
+ triggerAsyncUpdate();\r
+\r
return true;\r
}\r
\r
void AudioProcessorGraph::removeConnection (const int index)\r
{\r
connections.remove (index);\r
- triggerAsyncUpdate();\r
+\r
+ if (isPrepared)\r
+ triggerAsyncUpdate();\r
}\r
\r
bool AudioProcessorGraph::removeConnection (const uint32 sourceNodeId, const int sourceChannelIndex,\r
\r
clearRenderingSequence();\r
buildRenderingSequence();\r
+\r
+ isPrepared = true;\r
}\r
\r
bool AudioProcessorGraph::supportsDoublePrecisionProcessing() const\r
\r
void AudioProcessorGraph::releaseResources()\r
{\r
+ isPrepared = false;\r
+\r
for (int i = 0; i < nodes.size(); ++i)\r
nodes.getUnchecked(i)->unprepare();\r
\r
MidiBuffer* currentMidiInputBuffer;\r
MidiBuffer currentMidiOutputBuffer;\r
\r
+ bool isPrepared;\r
+\r
void handleAsyncUpdate() override;\r
void clearRenderingSequence();\r
void buildRenderingSequence();\r
@param formatToLookFor this is the type of format that you want to look for\r
@param directoriesToSearch the path to search\r
@param searchRecursively true to search recursively\r
- @param deadMansPedalFile if this isn't File::nonexistent, then it will\r
- be used as a file to store the names of any plugins\r
- that crash during initialisation. If there are\r
- any plugins listed in it, then these will always\r
- be scanned after all other possible files have\r
- been tried - in this way, even if there's a few\r
+ @param deadMansPedalFile if this isn't File(), then it will be used as a file\r
+ to store the names of any plugins that crash during\r
+ initialisation. If there are any plugins listed in it,\r
+ then these will always be scanned after all other possible\r
+ files have been tried - in this way, even if there's a few\r
dodgy plugins in your path, then a couple of rescans\r
will still manage to find all the proper plugins.\r
It's probably best to choose a file in the user's\r
bool allowPluginsWhichRequireAsynchronousInstantiation, int threads,\r
const String& title, const String& text)\r
: owner (plc), formatToScan (format), propertiesToUse (properties),\r
- pathChooserWindow (TRANS("Select folders to scan..."), String::empty, AlertWindow::NoIcon),\r
+ pathChooserWindow (TRANS("Select folders to scan..."), String(), AlertWindow::NoIcon),\r
progressWindow (title, text, AlertWindow::NoIcon),\r
progress (0.0), numThreads (threads), allowAsync (allowPluginsWhichRequireAsynchronousInstantiation),\r
finished (false)\r
+ TRANS ("Are you sure you want to scan the folder \"XYZ\"?")\r
.replace ("XYZ", f.getFullPathName()),\r
TRANS ("Scan"),\r
- String::empty,\r
+ String(),\r
nullptr,\r
ModalCallbackFunction::create (warnAboutStupidPathsCallback, this));\r
return;\r
/** Provides access to the parameter's name. */\r
const String name;\r
\r
-private:\r
- String label;\r
+ /** Provides access to the parameter's label. */\r
+ const String label;\r
\r
+private:\r
String getName (int) const override;\r
String getLabel() const override;\r
\r
: AudioProcessorParameter::getText (v, length);\r
}\r
\r
+ int getNumSteps () const override\r
+ {\r
+ if (range.interval > 0)\r
+ return (static_cast<int> ((range.end - range.start) / range.interval) + 1);\r
+ else\r
+ return AudioProcessor::getDefaultNumParameterSteps ();\r
+ }\r
+\r
void setValue (float newValue) override\r
{\r
newValue = range.snapToLegalValue (range.convertFrom0to1 (newValue));\r
}\r
}\r
\r
+ void beginParameterChange()\r
+ {\r
+ if (AudioProcessorParameter* p = state.getParameter (paramID))\r
+ p->beginChangeGesture();\r
+ }\r
+\r
+ void endParameterChange()\r
+ {\r
+ if (AudioProcessorParameter* p = state.getParameter (paramID))\r
+ p->endChangeGesture();\r
+ }\r
+\r
void handleAsyncUpdate() override\r
{\r
setValue (lastValue);\r
{\r
NormalisableRange<float> range (s.getParameterRange (paramID));\r
slider.setRange (range.start, range.end, range.interval);\r
+ slider.setSkewFactor (range.skew, range.symmetricSkew);\r
\r
if (AudioProcessorParameter* param = state.getParameter (paramID))\r
slider.setDoubleClickReturnValue (true, range.convertFrom0to1 (param->getDefaultValue()));\r
setNewUnnormalisedValue ((float) s->getValue());\r
}\r
\r
- void sliderDragStarted (Slider*) override\r
- {\r
- if (AudioProcessorParameter* p = state.getParameter (paramID))\r
- p->beginChangeGesture();\r
- }\r
-\r
- void sliderDragEnded (Slider*) override\r
- {\r
- if (AudioProcessorParameter* p = state.getParameter (paramID))\r
- p->endChangeGesture();\r
- }\r
+ void sliderDragStarted (Slider*) override { beginParameterChange(); }\r
+ void sliderDragEnded (Slider*) override { endParameterChange(); }\r
\r
Slider& slider;\r
\r
\r
void comboBoxChanged (ComboBox* comboBox) override\r
{\r
+ beginParameterChange();\r
setNewUnnormalisedValue ((float) comboBox->getSelectedId() - 1.0f);\r
+ endParameterChange();\r
}\r
\r
ComboBox& combo;\r
\r
void buttonClicked (Button* b) override\r
{\r
+ beginParameterChange();\r
setNewUnnormalisedValue (b->getToggleState() ? 1.0f : 0.0f);\r
+ endParameterChange();\r
}\r
\r
Button& button;\r
/** An object of this class maintains a connection between a ComboBox and a parameter\r
in an AudioProcessorValueTreeState.\r
\r
- During the lifetime of this SliderAttachment object, it keeps the two things in\r
+ During the lifetime of this ComboBoxAttachment object, it keeps the two things in\r
sync, making it easy to connect a combo box to a parameter. When this object is\r
deleted, the connection is broken. Make sure that your AudioProcessorValueTreeState\r
and ComboBox aren't deleted before this object!\r
/** An object of this class maintains a connection between a Button and a parameter\r
in an AudioProcessorValueTreeState.\r
\r
- During the lifetime of this SliderAttachment object, it keeps the two things in\r
+ During the lifetime of this ButtonAttachment object, it keeps the two things in\r
sync, making it easy to connect a button to a parameter. When this object is\r
deleted, the connection is broken. Make sure that your AudioProcessorValueTreeState\r
and Button aren't deleted before this object!\r
getNextAudioBlock(). The base class provides a basic AudioDeviceManager object\r
and runs audio through the default output device.\r
*/\r
-class AudioAppComponent : public Component,\r
- public AudioSource\r
+class JUCE_API AudioAppComponent : public Component,\r
+ public AudioSource\r
{\r
public:\r
AudioAppComponent();\r
{\r
public:\r
MidiInputSelectorComponentListBox (AudioDeviceManager& dm, const String& noItems)\r
- : ListBox (String::empty, nullptr),\r
+ : ListBox (String(), nullptr),\r
deviceManager (dm),\r
noItemsMessage (noItems)\r
{\r
|| comboBoxThatHasChanged == inputDeviceDropDown)\r
{\r
if (outputDeviceDropDown != nullptr)\r
- config.outputDeviceName = outputDeviceDropDown->getSelectedId() < 0 ? String::empty\r
+ config.outputDeviceName = outputDeviceDropDown->getSelectedId() < 0 ? String()\r
: outputDeviceDropDown->getText();\r
\r
if (inputDeviceDropDown != nullptr)\r
- config.inputDeviceName = inputDeviceDropDown->getSelectedId() < 0 ? String::empty\r
+ config.inputDeviceName = inputDeviceDropDown->getSelectedId() < 0 ? String()\r
: inputDeviceDropDown->getText();\r
\r
if (! type.hasSeparateInputsAndOutputs())\r
{\r
if (AudioIODevice* const device = setup.manager->getCurrentAudioDevice())\r
{\r
- Component modalWindow (String::empty);\r
+ Component modalWindow;\r
modalWindow.setOpaque (true);\r
modalWindow.addToDesktop (0);\r
modalWindow.enterModalState();\r
addAndMakeVisible (outputChanList\r
= new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioOutputType,\r
TRANS ("(no audio output channels found)")));\r
- outputChanLabel = new Label (String::empty, TRANS("Active output channels:"));\r
+ outputChanLabel = new Label (String(), TRANS("Active output channels:"));\r
outputChanLabel->setJustificationType (Justification::centredRight);\r
outputChanLabel->attachToComponent (outputChanList, true);\r
}\r
addAndMakeVisible (inputChanList\r
= new ChannelSelectorListBox (setup, ChannelSelectorListBox::audioInputType,\r
TRANS("(no audio input channels found)")));\r
- inputChanLabel = new Label (String::empty, TRANS("Active input channels:"));\r
+ inputChanLabel = new Label (String(), TRANS("Active input channels:"));\r
inputChanLabel->setJustificationType (Justification::centredRight);\r
inputChanLabel->attachToComponent (inputChanList, true);\r
}\r
{\r
if (outputDeviceDropDown == nullptr)\r
{\r
- outputDeviceDropDown = new ComboBox (String::empty);\r
+ outputDeviceDropDown = new ComboBox (String());\r
outputDeviceDropDown->addListener (this);\r
addAndMakeVisible (outputDeviceDropDown);\r
\r
- outputDeviceLabel = new Label (String::empty,\r
+ outputDeviceLabel = new Label (String(),\r
type.hasSeparateInputsAndOutputs() ? TRANS("Output:")\r
: TRANS("Device:"));\r
outputDeviceLabel->attachToComponent (outputDeviceDropDown, true);\r
{\r
if (inputDeviceDropDown == nullptr)\r
{\r
- inputDeviceDropDown = new ComboBox (String::empty);\r
+ inputDeviceDropDown = new ComboBox (String());\r
inputDeviceDropDown->addListener (this);\r
addAndMakeVisible (inputDeviceDropDown);\r
\r
- inputDeviceLabel = new Label (String::empty, TRANS("Input:"));\r
+ inputDeviceLabel = new Label (String(), TRANS("Input:"));\r
inputDeviceLabel->attachToComponent (inputDeviceDropDown, true);\r
\r
addAndMakeVisible (inputLevelMeter\r
{\r
if (sampleRateDropDown == nullptr)\r
{\r
- addAndMakeVisible (sampleRateDropDown = new ComboBox (String::empty));\r
+ addAndMakeVisible (sampleRateDropDown = new ComboBox (String()));\r
\r
- sampleRateLabel = new Label (String::empty, TRANS("Sample rate:"));\r
+ sampleRateLabel = new Label (String(), TRANS("Sample rate:"));\r
sampleRateLabel->attachToComponent (sampleRateDropDown, true);\r
}\r
else\r
{\r
if (bufferSizeDropDown == nullptr)\r
{\r
- addAndMakeVisible (bufferSizeDropDown = new ComboBox (String::empty));\r
+ addAndMakeVisible (bufferSizeDropDown = new ComboBox (String()));\r
\r
- bufferSizeLabel = new Label (String::empty, TRANS("Audio buffer size:"));\r
+ bufferSizeLabel = new Label (String(), TRANS("Audio buffer size:"));\r
bufferSizeLabel->attachToComponent (bufferSizeDropDown, true);\r
}\r
else\r
//==============================================================================\r
ChannelSelectorListBox (const AudioDeviceSetupDetails& setupDetails,\r
const BoxType boxType, const String& noItemsText)\r
- : ListBox (String::empty, nullptr),\r
+ : ListBox (String(), nullptr),\r
setup (setupDetails), type (boxType), noItemsMessage (noItemsText)\r
{\r
refresh();\r
\r
if (types.size() > 1)\r
{\r
- deviceTypeDropDown = new ComboBox (String::empty);\r
+ deviceTypeDropDown = new ComboBox (String());\r
\r
for (int i = 0; i < types.size(); ++i)\r
deviceTypeDropDown->addItem (types.getUnchecked(i)->getTypeName(), i + 1);\r
addAndMakeVisible (deviceTypeDropDown);\r
deviceTypeDropDown->addListener (this);\r
\r
- deviceTypeDropDownLabel = new Label (String::empty, TRANS("Audio device type:"));\r
+ deviceTypeDropDownLabel = new Label (String(), TRANS("Audio device type:"));\r
deviceTypeDropDownLabel->setJustificationType (Justification::centredRight);\r
deviceTypeDropDownLabel->attachToComponent (deviceTypeDropDown, true);\r
}\r
= new MidiInputSelectorComponentListBox (deviceManager,\r
"(" + TRANS("No MIDI inputs available") + ")"));\r
\r
- midiInputsLabel = new Label (String::empty, TRANS ("Active MIDI inputs:"));\r
+ midiInputsLabel = new Label (String(), TRANS ("Active MIDI inputs:"));\r
midiInputsLabel->setJustificationType (Justification::topRight);\r
midiInputsLabel->attachToComponent (midiInputsList, true);\r
\r
\r
if (showMidiOutputSelector)\r
{\r
- addAndMakeVisible (midiOutputSelector = new ComboBox (String::empty));\r
+ addAndMakeVisible (midiOutputSelector = new ComboBox (String()));\r
midiOutputSelector->addListener (this);\r
\r
midiOutputLabel = new Label ("lm", TRANS("MIDI Output:"));\r
real-world app that requires more powerful waveform display, you'll probably want to\r
create your own component instead.\r
*/\r
-class AudioVisualiserComponent : public Component,\r
- private Timer\r
+class JUCE_API AudioVisualiserComponent : public Component,\r
+ private Timer\r
{\r
public:\r
/** Creates a visualiser with the given number of channels. */\r
supported.\r
*/\r
\r
-class BluetoothMidiDevicePairingDialogue\r
+class JUCE_API BluetoothMidiDevicePairingDialogue\r
{\r
public:\r
\r
{\r
public:\r
MidiKeyboardUpDownButton (MidiKeyboardComponent& comp, const int d)\r
- : Button (String::empty), owner (comp), delta (d)\r
+ : Button (String()), owner (comp), delta (d)\r
{\r
}\r
\r
\r
ID: juce_audio_utils\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE extra audio utility classes\r
description: Classes for audio-related GUI and miscellaneous tasks.\r
website: http://www.juce.com/juce\r
\r
ID: juce_box2d\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE wrapper for the Box2D physics engine\r
description: The Box2D physics engine and some utility classes.\r
website: http://www.juce.com/juce\r
{\r
insertPos += indexToInsertAt;\r
const int numberToMove = numUsed - indexToInsertAt;\r
- memmove (insertPos + numberOfElements, insertPos, numberToMove * sizeof (ElementType));\r
+ memmove (insertPos + numberOfElements, insertPos, (size_t) numberToMove * sizeof (ElementType));\r
}\r
else\r
{\r
}\r
\r
//==============================================================================\r
+ /** Removes an element from the array.\r
+\r
+ This will remove the element at a given index, and move back\r
+ all the subsequent elements to close the gap.\r
+ If the index passed in is out-of-range, nothing will happen.\r
+\r
+ @param indexToRemove the index of the element to remove\r
+ @see removeAndReturn, removeFirstMatchingValue, removeAllInstancesOf, removeRange\r
+ */\r
+ void remove (int indexToRemove)\r
+ {\r
+ const ScopedLockType lock (getLock());\r
+\r
+ if (isPositiveAndBelow (indexToRemove, numUsed))\r
+ {\r
+ jassert (data.elements != nullptr);\r
+ removeInternal (indexToRemove);\r
+ }\r
+ }\r
+\r
/** Removes an element from the array.\r
\r
This will remove the element at a given index, and move back\r
@returns the element that has been removed\r
@see removeFirstMatchingValue, removeAllInstancesOf, removeRange\r
*/\r
- ElementType remove (const int indexToRemove)\r
+ ElementType removeAndReturn (const int indexToRemove)\r
{\r
const ScopedLockType lock (getLock());\r
\r
array, behaviour is undefined.\r
\r
@param elementToRemove a pointer to the element to remove\r
- @see removeFirstMatchingValue, removeAllInstancesOf, removeRange\r
+ @see removeFirstMatchingValue, removeAllInstancesOf, removeRange, removeIf\r
*/\r
void remove (const ElementType* elementToRemove)\r
{\r
If the item isn't found, no action is taken.\r
\r
@param valueToRemove the object to try to remove\r
- @see remove, removeRange\r
+ @see remove, removeRange, removeIf\r
*/\r
void removeFirstMatchingValue (ParameterType valueToRemove)\r
{\r
}\r
}\r
\r
- /** Removes an item from the array.\r
+ /** Removes items from the array.\r
\r
This will remove all occurrences of the given element from the array.\r
If no such items are found, no action is taken.\r
\r
@param valueToRemove the object to try to remove\r
- @see remove, removeRange\r
+ @return how many objects were removed.\r
+ @see remove, removeRange, removeIf\r
*/\r
- void removeAllInstancesOf (ParameterType valueToRemove)\r
+ int removeAllInstancesOf (ParameterType valueToRemove)\r
{\r
+ int numRemoved = 0;\r
const ScopedLockType lock (getLock());\r
\r
for (int i = numUsed; --i >= 0;)\r
+ {\r
if (valueToRemove == data.elements[i])\r
+ {\r
removeInternal (i);\r
+ ++numRemoved;\r
+ }\r
+ }\r
+\r
+ return numRemoved;\r
+ }\r
+\r
+ /** Removes items from the array.\r
+\r
+ This will remove all objects from the array that match a condition.\r
+ If no such items are found, no action is taken.\r
+\r
+ @param predicate the condition when to remove an item. Must be a callable\r
+ type that takes an ElementType and returns a bool\r
+\r
+ @return how many objects were removed.\r
+ @see remove, removeRange, removeAllInstancesOf\r
+ */\r
+ template <typename PredicateType>\r
+ int removeIf (PredicateType predicate)\r
+ {\r
+ int numRemoved = 0;\r
+ const ScopedLockType lock (getLock());\r
+\r
+ for (int i = numUsed; --i >= 0;)\r
+ {\r
+ if (predicate (data.elements[i]) == true)\r
+ {\r
+ removeInternal (i);\r
+ ++numRemoved;\r
+ }\r
+ }\r
+\r
+ return numRemoved;\r
}\r
\r
/** Removes a range of elements from the array.\r
\r
@param startIndex the index of the first element to remove\r
@param numberToRemove how many elements should be removed\r
- @see remove, removeFirstMatchingValue, removeAllInstancesOf\r
+ @see remove, removeFirstMatchingValue, removeAllInstancesOf, removeIf\r
*/\r
void removeRange (int startIndex, int numberToRemove)\r
{\r
/** A dummy bail-out checker that always returns false.\r
See the ListenerList notes for more info about bail-out checkers.\r
*/\r
- class DummyBailOutChecker\r
+ struct DummyBailOutChecker\r
{\r
- public:\r
- inline bool shouldBailOut() const noexcept { return false; }\r
+ bool shouldBailOut() const noexcept { return false; }\r
};\r
\r
//==============================================================================\r
==============================================================================\r
*/\r
\r
-struct NamedValueSet::NamedValue\r
-{\r
- NamedValue() noexcept {}\r
- NamedValue (const Identifier& n, const var& v) : name (n), value (v) {}\r
- NamedValue (const NamedValue& other) : name (other.name), value (other.value) {}\r
-\r
- #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS\r
- NamedValue (NamedValue&& other) noexcept\r
- : name (static_cast<Identifier&&> (other.name)),\r
- value (static_cast<var&&> (other.value))\r
- {\r
- }\r
-\r
- NamedValue (Identifier&& n, var&& v) noexcept\r
- : name (static_cast<Identifier&&> (n)),\r
- value (static_cast<var&&> (v))\r
- {\r
- }\r
-\r
- NamedValue& operator= (NamedValue&& other) noexcept\r
- {\r
- name = static_cast<Identifier&&> (other.name);\r
- value = static_cast<var&&> (other.value);\r
- return *this;\r
- }\r
- #endif\r
-\r
- bool operator== (const NamedValue& other) const noexcept { return name == other.name && value == other.value; }\r
- bool operator!= (const NamedValue& other) const noexcept { return ! operator== (other); }\r
-\r
- Identifier name;\r
- var value;\r
-};\r
-\r
//==============================================================================\r
NamedValueSet::NamedValueSet() noexcept\r
{\r
return values.isEmpty();\r
}\r
\r
+static const var& getNullVarRef() noexcept\r
+{\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ return var::null;\r
+ #else\r
+ static var nullVar;\r
+ return nullVar;\r
+ #endif\r
+}\r
+\r
const var& NamedValueSet::operator[] (const Identifier& name) const noexcept\r
{\r
if (const var* v = getVarPointer (name))\r
return *v;\r
\r
- return var::null;\r
+ return getNullVarRef();\r
}\r
\r
var NamedValueSet::getWithDefault (const Identifier& name, const var& defaultReturnValue) const\r
return values.getReference (index).value;\r
\r
jassertfalse;\r
- return var::null;\r
+ return getNullVarRef();\r
}\r
\r
var* NamedValueSet::getVarPointerAt (int index) const noexcept\r
bool operator!= (const NamedValueSet&) const;\r
\r
//==============================================================================\r
+ struct NamedValue\r
+ {\r
+ NamedValue() noexcept {}\r
+ NamedValue (const Identifier& n, const var& v) : name (n), value (v) {}\r
+ NamedValue (const NamedValue& other) : name (other.name), value (other.value) {}\r
+\r
+ #if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS\r
+ NamedValue (NamedValue&& other) noexcept\r
+ : name (static_cast<Identifier&&> (other.name)),\r
+ value (static_cast<var&&> (other.value))\r
+ {\r
+ }\r
+\r
+ NamedValue (Identifier&& n, var&& v) noexcept\r
+ : name (static_cast<Identifier&&> (n)),\r
+ value (static_cast<var&&> (v))\r
+ {\r
+ }\r
+\r
+ NamedValue& operator= (NamedValue&& other) noexcept\r
+ {\r
+ name = static_cast<Identifier&&> (other.name);\r
+ value = static_cast<var&&> (other.value);\r
+ return *this;\r
+ }\r
+ #endif\r
+\r
+ bool operator== (const NamedValue& other) const noexcept { return name == other.name && value == other.value; }\r
+ bool operator!= (const NamedValue& other) const noexcept { return ! operator== (other); }\r
+\r
+ Identifier name;\r
+ var value;\r
+ };\r
+\r
+ NamedValueSet::NamedValue* begin() { return values.begin(); }\r
+ NamedValueSet::NamedValue* end() { return values.end(); }\r
+\r
+ //==============================================================================\r
+\r
/** Returns the total number of values that the set contains. */\r
int size() const noexcept;\r
\r
\r
private:\r
//==============================================================================\r
- struct NamedValue;\r
Array<NamedValue> values;\r
};\r
\r
/** Sets a named property to an XML element.\r
\r
@param keyName the name of the property to set. (This mustn't be an empty string)\r
- @param xml the new element to set it to. If this is zero, the value will be set to\r
- an empty string\r
+ @param xml the new element to set it to. If this is a nullptr, the value will\r
+ be set to an empty string\r
@see getXmlValue\r
*/\r
void setValue (const String& keyName, const XmlElement* xml);\r
var::var (const VariantType& t) noexcept : type (&t) {}\r
var::~var() noexcept { type->cleanUp (value); }\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const var var::null;\r
+#endif\r
\r
//==============================================================================\r
var::var (const var& valueToCopy) : type (valueToCopy.type)\r
if (DynamicObject* const o = getDynamicObject())\r
return o->getProperty (propertyName);\r
\r
- return var::null;\r
+ return getNullVarRef();\r
}\r
\r
const var& var::operator[] (const char* const propertyName) const\r
/** Destructor. */\r
~var() noexcept;\r
\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
/** A static var object that can be used where you need an empty variant object. */\r
static const var null;\r
+ #endif\r
\r
var (const var& valueToCopy);\r
var (int value) noexcept;\r
}\r
#endif\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const File File::nonexistent;\r
+#endif\r
\r
//==============================================================================\r
static String removeEllipsis (const String& path)\r
|| (exists() && newFile.deleteFile() && copyInternal (newFile));\r
}\r
\r
+bool File::replaceFileIn (const File& newFile) const\r
+{\r
+ if (newFile.fullPath == fullPath)\r
+ return true;\r
+\r
+ if (! newFile.exists())\r
+ return moveFileTo (newFile);\r
+\r
+ if (! replaceInternal (newFile))\r
+ return false;\r
+\r
+ deleteFile();\r
+ return true;\r
+}\r
+\r
bool File::copyDirectoryTo (const File& newDirectory) const\r
{\r
if (isDirectory() && newDirectory.createDirectory())\r
}\r
\r
//==============================================================================\r
-MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode)\r
+MemoryMappedFile::MemoryMappedFile (const File& file, MemoryMappedFile::AccessMode mode, bool exclusive)\r
: address (nullptr), range (0, file.getSize()), fileHandle (0)\r
{\r
- openInternal (file, mode);\r
+ openInternal (file, mode, exclusive);\r
}\r
\r
-MemoryMappedFile::MemoryMappedFile (const File& file, const Range<int64>& fileRange, AccessMode mode)\r
+MemoryMappedFile::MemoryMappedFile (const File& file, const Range<int64>& fileRange, AccessMode mode, bool exclusive)\r
: address (nullptr), range (fileRange.getIntersectionWith (Range<int64> (0, file.getSize()))), fileHandle (0)\r
{\r
- openInternal (file, mode);\r
+ openInternal (file, mode, exclusive);\r
}\r
\r
\r
const File home (File::getSpecialLocation (File::userHomeDirectory));\r
const File temp (File::getSpecialLocation (File::tempDirectory));\r
\r
- expect (! File::nonexistent.exists());\r
- expect (! File::nonexistent.existsAsFile());\r
- expect (! File::nonexistent.isDirectory());\r
+ expect (! File().exists());\r
+ expect (! File().existsAsFile());\r
+ expect (! File().isDirectory());\r
#if ! JUCE_WINDOWS\r
expect (File("/").isDirectory());\r
#endif\r
/** Creates an (invalid) file object.\r
\r
The file is initially set to an empty path, so getFullPathName() will return\r
- an empty string, and comparing the file to File::nonexistent will return\r
- true.\r
+ an empty string.\r
\r
You can use its operator= method to point it at a proper file.\r
*/\r
#endif\r
\r
//==============================================================================\r
- /** This static constant is used for referring to an 'invalid' file. */\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ /** This static constant is used for referring to an 'invalid' file.\r
+ Bear in mind that you should avoid this kind of static variable, and always prefer\r
+ to use File() or {} if you need a default-constructed File object.\r
+ */\r
static const File nonexistent;\r
+ #endif\r
\r
//==============================================================================\r
/** Checks whether the file actually exists.\r
*/\r
bool copyFileTo (const File& targetLocation) const;\r
\r
+ /** Replaces a file.\r
+\r
+ Replace the file in the given location, assuming the replaced files identity.\r
+ Depending on the file system this will preserve file attributes such as\r
+ creation date, short file name, etc.\r
+\r
+ If replacement succeeds the original file is deleted.\r
+\r
+ @returns true if the operation succeeds\r
+ */\r
+ bool replaceFileIn (const File& targetLocation) const;\r
+\r
/** Copies a directory.\r
\r
Tries to copy an entire directory, recursively.\r
Result createDirectoryInternal (const String&) const;\r
bool copyInternal (const File&) const;\r
bool moveInternal (const File&) const;\r
+ bool replaceInternal (const File&) const;\r
bool setFileTimesInternal (int64 m, int64 a, int64 c) const;\r
void getFileTimesInternal (int64& m, int64& a, int64& c) const;\r
bool setFileReadOnlyInternal (bool) const;\r
will lazily pull the data into memory when blocks are accessed.\r
\r
If the file can't be opened for some reason, the getData() method will return a null pointer.\r
+\r
+ If exclusive is false then other apps can also open the same memory mapped file and use this\r
+ mapping as an effective way of communicating. If exclusive is true then the mapped file will\r
+ be opened exclusively - preventing other apps to access the file which may improve the\r
+ performance of accessing the file.\r
*/\r
- MemoryMappedFile (const File& file, AccessMode mode);\r
+ MemoryMappedFile (const File& file, AccessMode mode, bool exclusive = false);\r
\r
/** Opens a section of a file and maps it to an area of virtual memory.\r
\r
*/\r
MemoryMappedFile (const File& file,\r
const Range<int64>& fileRange,\r
- AccessMode mode);\r
+ AccessMode mode,\r
+ bool exclusive = false);\r
\r
/** Destructor. */\r
~MemoryMappedFile();\r
int fileHandle;\r
#endif\r
\r
- void openInternal (const File&, AccessMode);\r
+ void openInternal (const File&, AccessMode, bool);\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryMappedFile)\r
};\r
// Have a few attempts at overwriting the file before giving up..\r
for (int i = 5; --i >= 0;)\r
{\r
- if (temporaryFile.moveFileTo (targetFile))\r
+ if (temporaryFile.replaceFileIn (targetFile))\r
return true;\r
\r
Thread::sleep (100);\r
beginTest ("JSON");\r
Random r = getRandom();\r
\r
- expect (JSON::parse (String::empty) == var());\r
+ expect (JSON::parse (String()) == var());\r
expect (JSON::parse ("{}").isObject());\r
expect (JSON::parse ("[]").isArray());\r
expect (JSON::parse ("[ 1234 ]")[0].isInt());\r
var getResult (const Scope& s) const override\r
{\r
var arrayVar (object->getResult (s)); // must stay alive for the scope of this method\r
+ var key = index->getResult (s);\r
\r
if (const Array<var>* array = arrayVar.getArray())\r
- return (*array) [static_cast<int> (index->getResult (s))];\r
+ if (key.isInt() || key.isInt64() || key.isDouble())\r
+ return (*array) [static_cast<int> (key)];\r
+\r
+ if (DynamicObject* o = arrayVar.getDynamicObject())\r
+ if (key.isString())\r
+ if (const var* v = getPropertyPointer (o, Identifier (key)))\r
+ return *v;\r
\r
return var::undefined();\r
}\r
void assign (const Scope& s, const var& newValue) const override\r
{\r
var arrayVar (object->getResult (s)); // must stay alive for the scope of this method\r
+ var key = index->getResult (s);\r
\r
if (Array<var>* array = arrayVar.getArray())\r
{\r
- const int i = index->getResult (s);\r
- while (array->size() < i)\r
- array->add (var::undefined());\r
+ if (key.isInt() || key.isInt64() || key.isDouble())\r
+ {\r
+ const int i = key;\r
+ while (array->size() < i)\r
+ array->add (var::undefined());\r
+\r
+ array->set (i, newValue);\r
+ return;\r
+ }\r
+ }\r
\r
- array->set (i, newValue);\r
- return;\r
+ if (DynamicObject* o = arrayVar.getDynamicObject())\r
+ {\r
+ if (key.isString())\r
+ {\r
+ o->setProperty (Identifier (key), newValue);\r
+ return;\r
+ }\r
}\r
\r
Expression::assign (s, newValue);\r
\r
ID: juce_core\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE core classes\r
description: The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.\r
website: http://www.juce.com/juce\r
OSXFrameworks: Cocoa IOKit\r
iOSFrameworks: Foundation\r
linuxLibs: rt dl pthread\r
+ linuxPackages: libcurl\r
mingwLibs: uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
/** Config: JUCE_USE_CURL\r
Enables http/https support via libcurl (Linux only). Enabling this will add an additional\r
- run-time dynmic dependency to libcurl.\r
+ run-time dynamic dependency to libcurl.\r
\r
If you disable this then https/ssl support will not be available on linux.\r
*/\r
#endif\r
\r
\r
-/* Config: JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
+/** Config: JUCE_CATCH_UNHANDLED_EXCEPTIONS\r
If enabled, this will add some exception-catching code to forward unhandled exceptions\r
to your JUCEApplicationBase::unhandledException() callback.\r
*/\r
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS 1\r
#endif\r
\r
+/** Config: JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ If disabled, this will turn off dangerous static globals like String::empty, var::null, etc\r
+ which can cause nasty order-of-initialisation problems if they are referenced during static\r
+ constructor code.\r
+*/\r
+#ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ #define JUCE_ALLOW_STATIC_NULL_VARIABLES 1\r
+#endif\r
+\r
+\r
#ifndef JUCE_STRING_UTF_TYPE\r
#define JUCE_STRING_UTF_TYPE 8\r
#endif\r
\r
namespace\r
{\r
- inline size_t bitToIndex (const int bit) noexcept { return (size_t) (bit >> 5); }\r
- inline uint32 bitToMask (const int bit) noexcept { return (uint32) 1 << (bit & 31); }\r
+ inline uint32 bitToMask (const int bit) noexcept { return (uint32) 1 << (bit & 31); }\r
+ inline size_t bitToIndex (const int bit) noexcept { return (size_t) (bit >> 5); }\r
+ inline size_t sizeNeededToHold (int highestBit) noexcept { return (size_t) (highestBit >> 5) + 1; }\r
+\r
+ inline int highestBitInInt (uint32 n) noexcept\r
+ {\r
+ jassert (n != 0); // (the built-in functions may not work for n = 0)\r
+\r
+ #if JUCE_GCC || JUCE_CLANG\r
+ return 31 - __builtin_clz (n);\r
+ #elif JUCE_MSVC\r
+ unsigned long highest;\r
+ _BitScanReverse (&highest, n);\r
+ return (int) highest;\r
+ #else\r
+ n |= (n >> 1);\r
+ n |= (n >> 2);\r
+ n |= (n >> 4);\r
+ n |= (n >> 8);\r
+ n |= (n >> 16);\r
+ return countBitsInInt32 (n >> 1);\r
+ #endif\r
+ }\r
}\r
\r
//==============================================================================\r
BigInteger::BigInteger()\r
- : numValues (4),\r
+ : allocatedSize (numPreallocatedInts),\r
highestBit (-1),\r
negative (false)\r
{\r
- values.calloc (numValues + 1);\r
+ for (int i = 0; i < numPreallocatedInts; ++i)\r
+ preallocated[i] = 0;\r
}\r
\r
BigInteger::BigInteger (const int32 value)\r
- : numValues (4),\r
+ : allocatedSize (numPreallocatedInts),\r
highestBit (31),\r
negative (value < 0)\r
{\r
- values.calloc (numValues + 1);\r
- values[0] = (uint32) std::abs (value);\r
+ preallocated[0] = (uint32) std::abs (value);\r
+\r
+ for (int i = 1; i < numPreallocatedInts; ++i)\r
+ preallocated[i] = 0;\r
+\r
highestBit = getHighestBit();\r
}\r
\r
BigInteger::BigInteger (const uint32 value)\r
- : numValues (4),\r
+ : allocatedSize (numPreallocatedInts),\r
highestBit (31),\r
negative (false)\r
{\r
- values.calloc (numValues + 1);\r
- values[0] = value;\r
+ preallocated[0] = value;\r
+\r
+ for (int i = 1; i < numPreallocatedInts; ++i)\r
+ preallocated[i] = 0;\r
+\r
highestBit = getHighestBit();\r
}\r
\r
BigInteger::BigInteger (int64 value)\r
- : numValues (4),\r
+ : allocatedSize (numPreallocatedInts),\r
highestBit (63),\r
negative (value < 0)\r
{\r
- values.calloc (numValues + 1);\r
-\r
if (value < 0)\r
value = -value;\r
\r
- values[0] = (uint32) value;\r
- values[1] = (uint32) (value >> 32);\r
+ preallocated[0] = (uint32) value;\r
+ preallocated[1] = (uint32) (value >> 32);\r
+\r
+ for (int i = 2; i < numPreallocatedInts; ++i)\r
+ preallocated[i] = 0;\r
+\r
highestBit = getHighestBit();\r
}\r
\r
BigInteger::BigInteger (const BigInteger& other)\r
- : numValues ((size_t) jmax ((size_t) 4, bitToIndex (other.highestBit) + 1)),\r
+ : allocatedSize (other.allocatedSize),\r
highestBit (other.getHighestBit()),\r
negative (other.negative)\r
{\r
- values.malloc (numValues + 1);\r
- memcpy (values, other.values, sizeof (uint32) * (numValues + 1));\r
+ if (allocatedSize > numPreallocatedInts)\r
+ heapAllocation.malloc (allocatedSize);\r
+\r
+ memcpy (getValues(), other.getValues(), sizeof (uint32) * allocatedSize);\r
}\r
\r
#if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS\r
BigInteger::BigInteger (BigInteger&& other) noexcept\r
- : values (static_cast<HeapBlock<uint32>&&> (other.values)),\r
- numValues (other.numValues),\r
+ : heapAllocation (static_cast<HeapBlock<uint32>&&> (other.heapAllocation)),\r
+ allocatedSize (other.allocatedSize),\r
highestBit (other.highestBit),\r
negative (other.negative)\r
{\r
+ memcpy (preallocated, other.preallocated, sizeof (preallocated));\r
}\r
\r
BigInteger& BigInteger::operator= (BigInteger&& other) noexcept\r
{\r
- values = static_cast<HeapBlock<uint32>&&> (other.values);\r
- numValues = other.numValues;\r
+ heapAllocation = static_cast<HeapBlock<uint32>&&> (other.heapAllocation);\r
+ memcpy (preallocated, other.preallocated, sizeof (preallocated));\r
+ allocatedSize = other.allocatedSize;\r
highestBit = other.highestBit;\r
negative = other.negative;\r
return *this;\r
\r
void BigInteger::swapWith (BigInteger& other) noexcept\r
{\r
- values.swapWith (other.values);\r
- std::swap (numValues, other.numValues);\r
+ for (int i = 0; i < numPreallocatedInts; ++i)\r
+ std::swap (preallocated[i], other.preallocated[i]);\r
+\r
+ heapAllocation.swapWith (other.heapAllocation);\r
+ std::swap (allocatedSize, other.allocatedSize);\r
std::swap (highestBit, other.highestBit);\r
std::swap (negative, other.negative);\r
}\r
if (this != &other)\r
{\r
highestBit = other.getHighestBit();\r
- jassert (other.numValues >= 4);\r
- numValues = (size_t) jmax ((size_t) 4, bitToIndex (highestBit) + 1);\r
+ allocatedSize = (size_t) jmax ((size_t) numPreallocatedInts, sizeNeededToHold (highestBit));\r
+\r
+ if (allocatedSize <= numPreallocatedInts)\r
+ heapAllocation.free();\r
+ else\r
+ heapAllocation.malloc (allocatedSize);\r
+\r
+ memcpy (getValues(), other.getValues(), sizeof (uint32) * allocatedSize);\r
negative = other.negative;\r
- values.malloc (numValues + 1);\r
- memcpy (values, other.values, sizeof (uint32) * (numValues + 1));\r
}\r
\r
return *this;\r
}\r
\r
-void BigInteger::ensureSize (const size_t numVals)\r
+uint32* BigInteger::getValues() const noexcept\r
{\r
- if (numVals + 2 >= numValues)\r
+ jassert (heapAllocation != nullptr || allocatedSize <= numPreallocatedInts);\r
+\r
+ return heapAllocation != nullptr ? heapAllocation\r
+ : (uint32*) preallocated;\r
+}\r
+\r
+uint32* BigInteger::ensureSize (const size_t numVals)\r
+{\r
+ if (numVals > allocatedSize)\r
{\r
- size_t oldSize = numValues;\r
- numValues = ((numVals + 2) * 3) / 2;\r
- values.realloc (numValues + 1);\r
+ size_t oldSize = allocatedSize;\r
+ allocatedSize = ((numVals + 2) * 3) / 2;\r
+\r
+ if (heapAllocation == nullptr)\r
+ {\r
+ heapAllocation.calloc (allocatedSize);\r
+ memcpy (heapAllocation, preallocated, sizeof (uint32) * numPreallocatedInts);\r
+ }\r
+ else\r
+ {\r
+ heapAllocation.realloc (allocatedSize);\r
\r
- while (oldSize < numValues)\r
- values [oldSize++] = 0;\r
+ for (uint32* values = getValues(); oldSize < allocatedSize; ++oldSize)\r
+ values[oldSize] = 0;\r
+ }\r
}\r
+\r
+ return getValues();\r
}\r
\r
//==============================================================================\r
bool BigInteger::operator[] (const int bit) const noexcept\r
{\r
return bit <= highestBit && bit >= 0\r
- && ((values [bitToIndex (bit)] & bitToMask (bit)) != 0);\r
+ && ((getValues() [bitToIndex (bit)] & bitToMask (bit)) != 0);\r
}\r
\r
int BigInteger::toInteger() const noexcept\r
{\r
- const int n = (int) (values[0] & 0x7fffffff);\r
+ const int n = (int) (getValues()[0] & 0x7fffffff);\r
return negative ? -n : n;\r
}\r
\r
int64 BigInteger::toInt64() const noexcept\r
{\r
+ const uint32* values = getValues();\r
const int64 n = (((int64) (values[1] & 0x7fffffff)) << 32) | values[0];\r
return negative ? -n : n;\r
}\r
{\r
BigInteger r;\r
numBits = jmin (numBits, getHighestBit() + 1 - startBit);\r
- r.ensureSize ((size_t) bitToIndex (numBits));\r
+ uint32* const destValues = r.ensureSize (sizeNeededToHold (numBits));\r
r.highestBit = numBits;\r
\r
- int i = 0;\r
- while (numBits > 0)\r
+ for (int i = 0; numBits > 0;)\r
{\r
- r.values[i++] = getBitRangeAsInt (startBit, (int) jmin (32, numBits));\r
+ destValues[i++] = getBitRangeAsInt (startBit, (int) jmin (32, numBits));\r
numBits -= 32;\r
startBit += 32;\r
}\r
const size_t pos = bitToIndex (startBit);\r
const int offset = startBit & 31;\r
const int endSpace = 32 - numBits;\r
+ const uint32* values = getValues();\r
\r
uint32 n = ((uint32) values [pos]) >> offset;\r
\r
}\r
\r
//==============================================================================\r
-void BigInteger::clear()\r
+void BigInteger::clear() noexcept\r
{\r
- if (numValues > 16)\r
- {\r
- numValues = 4;\r
- values.calloc (numValues + 1);\r
- }\r
- else\r
- {\r
- values.clear (numValues + 1);\r
- }\r
-\r
+ heapAllocation.free();\r
+ allocatedSize = numPreallocatedInts;\r
highestBit = -1;\r
negative = false;\r
+\r
+ for (int i = 0; i < numPreallocatedInts; ++i)\r
+ preallocated[i] = 0;\r
}\r
\r
void BigInteger::setBit (const int bit)\r
{\r
if (bit > highestBit)\r
{\r
- ensureSize (bitToIndex (bit));\r
+ ensureSize (sizeNeededToHold (bit));\r
highestBit = bit;\r
}\r
\r
- values [bitToIndex (bit)] |= bitToMask (bit);\r
+ getValues() [bitToIndex (bit)] |= bitToMask (bit);\r
}\r
}\r
\r
void BigInteger::clearBit (const int bit) noexcept\r
{\r
if (bit >= 0 && bit <= highestBit)\r
- values [bitToIndex (bit)] &= ~bitToMask (bit);\r
+ {\r
+ getValues() [bitToIndex (bit)] &= ~bitToMask (bit);\r
+\r
+ if (bit == highestBit)\r
+ highestBit = getHighestBit();\r
+ }\r
}\r
\r
void BigInteger::setRange (int startBit, int numBits, const bool shouldBeSet)\r
#pragma intrinsic (_BitScanReverse)\r
#endif\r
\r
-inline static int highestBitInInt (uint32 n) noexcept\r
-{\r
- jassert (n != 0); // (the built-in functions may not work for n = 0)\r
-\r
- #if JUCE_GCC || JUCE_CLANG\r
- return 31 - __builtin_clz (n);\r
- #elif JUCE_MSVC\r
- unsigned long highest;\r
- _BitScanReverse (&highest, n);\r
- return (int) highest;\r
- #else\r
- n |= (n >> 1);\r
- n |= (n >> 2);\r
- n |= (n >> 4);\r
- n |= (n >> 8);\r
- n |= (n >> 16);\r
- return countBitsInInt32 (n >> 1);\r
- #endif\r
-}\r
-\r
int BigInteger::countNumberOfSetBits() const noexcept\r
{\r
int total = 0;\r
+ const uint32* values = getValues();\r
\r
- for (int i = (int) bitToIndex (highestBit) + 1; --i >= 0;)\r
+ for (int i = (int) sizeNeededToHold (highestBit); --i >= 0;)\r
total += countNumberOfBits (values[i]);\r
\r
return total;\r
\r
int BigInteger::getHighestBit() const noexcept\r
{\r
- for (int i = (int) bitToIndex (highestBit + 1); i >= 0; --i)\r
- {\r
- const uint32 n = values[i];\r
+ const uint32* values = getValues();\r
\r
- if (n != 0)\r
+ for (int i = (int) bitToIndex (highestBit); i >= 0; --i)\r
+ if (uint32 n = values[i])\r
return highestBitInInt (n) + (i << 5);\r
- }\r
\r
return -1;\r
}\r
\r
int BigInteger::findNextSetBit (int i) const noexcept\r
{\r
+ const uint32* values = getValues();\r
+\r
for (; i <= highestBit; ++i)\r
if ((values [bitToIndex (i)] & bitToMask (i)) != 0)\r
return i;\r
\r
int BigInteger::findNextClearBit (int i) const noexcept\r
{\r
+ const uint32* values = getValues();\r
+\r
for (; i <= highestBit; ++i)\r
if ((values [bitToIndex (i)] & bitToMask (i)) == 0)\r
break;\r
//==============================================================================\r
BigInteger& BigInteger::operator+= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ return operator+= (BigInteger (other));\r
+\r
if (other.isNegative())\r
return operator-= (-other);\r
\r
}\r
else\r
{\r
- if (other.highestBit > highestBit)\r
- highestBit = other.highestBit;\r
-\r
- ++highestBit;\r
-\r
- const size_t numInts = bitToIndex (highestBit) + 1;\r
- ensureSize (numInts);\r
+ highestBit = jmax (highestBit, other.highestBit) + 1;\r
\r
+ const size_t numInts = sizeNeededToHold (highestBit);\r
+ uint32* const values = ensureSize (numInts);\r
+ const uint32* const otherValues = other.getValues();\r
int64 remainder = 0;\r
\r
- for (size_t i = 0; i <= numInts; ++i)\r
+ for (size_t i = 0; i < numInts; ++i)\r
{\r
- if (i < numValues)\r
- remainder += values[i];\r
+ remainder += values[i];\r
\r
- if (i < other.numValues)\r
- remainder += other.values[i];\r
+ if (i < other.allocatedSize)\r
+ remainder += otherValues[i];\r
\r
values[i] = (uint32) remainder;\r
remainder >>= 32;\r
\r
BigInteger& BigInteger::operator-= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ {\r
+ clear();\r
+ return *this;\r
+ }\r
+\r
if (other.isNegative())\r
return operator+= (-other);\r
\r
- if (! isNegative())\r
- {\r
- if (compareAbsolute (other) < 0)\r
- {\r
- BigInteger temp (other);\r
- swapWith (temp);\r
- *this -= temp;\r
- negate();\r
- return *this;\r
- }\r
- }\r
- else\r
+ if (isNegative())\r
{\r
negate();\r
*this += other;\r
return *this;\r
}\r
\r
- const size_t numInts = bitToIndex (highestBit) + 1;\r
- const size_t maxOtherInts = bitToIndex (other.highestBit) + 1;\r
+ if (compareAbsolute (other) < 0)\r
+ {\r
+ BigInteger temp (other);\r
+ swapWith (temp);\r
+ *this -= temp;\r
+ negate();\r
+ return *this;\r
+ }\r
+\r
+ const size_t numInts = sizeNeededToHold (getHighestBit());\r
+ const size_t maxOtherInts = sizeNeededToHold (other.getHighestBit());\r
+ jassert (numInts >= maxOtherInts);\r
+ uint32* const values = getValues();\r
+ const uint32* const otherValues = other.getValues();\r
int64 amountToSubtract = 0;\r
\r
- for (size_t i = 0; i <= numInts; ++i)\r
+ for (size_t i = 0; i < numInts; ++i)\r
{\r
- if (i <= maxOtherInts)\r
- amountToSubtract += (int64) other.values[i];\r
+ if (i < maxOtherInts)\r
+ amountToSubtract += (int64) otherValues[i];\r
\r
if (values[i] >= amountToSubtract)\r
{\r
}\r
}\r
\r
+ highestBit = getHighestBit();\r
return *this;\r
}\r
\r
BigInteger& BigInteger::operator*= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ return operator*= (BigInteger (other));\r
+\r
int n = getHighestBit();\r
int t = other.getHighestBit();\r
\r
\r
BigInteger total;\r
total.highestBit = n + t + 1;\r
+ uint32* const totalValues = total.ensureSize (sizeNeededToHold (total.highestBit) + 1);\r
\r
n >>= 5;\r
t >>= 5;\r
\r
- total.ensureSize ((size_t) (n + t + 2));\r
-\r
BigInteger m (other);\r
m.setNegative (false);\r
\r
+ const uint32* const mValues = m.getValues();\r
+ const uint32* const values = getValues();\r
+\r
for (int i = 0; i <= t; ++i)\r
{\r
uint32 c = 0;\r
\r
for (int j = 0; j <= n; ++j)\r
{\r
- uint64 uv = (uint64) total.values[i + j] + (uint64) values[j] * (uint64) m.values[i] + (uint64) c;\r
- total.values[i + j] = (uint32) uv;\r
+ uint64 uv = (uint64) totalValues[i + j] + (uint64) values[j] * (uint64) mValues[i] + (uint64) c;\r
+ totalValues[i + j] = (uint32) uv;\r
c = uv >> 32;\r
}\r
\r
- total.values[i + n + 1] = c;\r
+ totalValues[i + n + 1] = c;\r
}\r
\r
+ total.highestBit = total.getHighestBit();\r
total.setNegative (wasNegative ^ other.isNegative());\r
swapWith (total);\r
\r
\r
void BigInteger::divideBy (const BigInteger& divisor, BigInteger& remainder)\r
{\r
+ if (this == &divisor)\r
+ return divideBy (BigInteger (divisor), remainder);\r
+\r
jassert (this != &remainder); // (can't handle passing itself in to get the remainder)\r
\r
const int divHB = divisor.getHighestBit();\r
\r
BigInteger& BigInteger::operator|= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ return *this;\r
+\r
// this operation doesn't take into account negative values..\r
jassert (isNegative() == other.isNegative());\r
\r
if (other.highestBit >= 0)\r
{\r
- ensureSize (bitToIndex (other.highestBit));\r
+ uint32* const values = ensureSize (sizeNeededToHold (other.highestBit));\r
+ const uint32* const otherValues = other.getValues();\r
\r
int n = (int) bitToIndex (other.highestBit) + 1;\r
\r
while (--n >= 0)\r
- values[n] |= other.values[n];\r
+ values[n] |= otherValues[n];\r
\r
if (other.highestBit > highestBit)\r
highestBit = other.highestBit;\r
\r
BigInteger& BigInteger::operator&= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ return *this;\r
+\r
// this operation doesn't take into account negative values..\r
jassert (isNegative() == other.isNegative());\r
\r
- int n = (int) numValues;\r
+ uint32* const values = getValues();\r
+ const uint32* const otherValues = other.getValues();\r
+\r
+ int n = (int) allocatedSize;\r
\r
- while (n > (int) other.numValues)\r
+ while (n > (int) other.allocatedSize)\r
values[--n] = 0;\r
\r
while (--n >= 0)\r
- values[n] &= other.values[n];\r
+ values[n] &= otherValues[n];\r
\r
if (other.highestBit < highestBit)\r
highestBit = other.highestBit;\r
\r
BigInteger& BigInteger::operator^= (const BigInteger& other)\r
{\r
+ if (this == &other)\r
+ {\r
+ clear();\r
+ return *this;\r
+ }\r
+\r
// this operation will only work with the absolute values\r
jassert (isNegative() == other.isNegative());\r
\r
if (other.highestBit >= 0)\r
{\r
- ensureSize (bitToIndex (other.highestBit));\r
+ uint32* const values = ensureSize (sizeNeededToHold (other.highestBit));\r
+ const uint32* const otherValues = other.getValues();\r
\r
int n = (int) bitToIndex (other.highestBit) + 1;\r
\r
while (--n >= 0)\r
- values[n] ^= other.values[n];\r
+ values[n] ^= otherValues[n];\r
\r
if (other.highestBit > highestBit)\r
highestBit = other.highestBit;\r
if (h1 > h2) return 1;\r
if (h1 < h2) return -1;\r
\r
- for (int i = (int) bitToIndex (h1) + 1; --i >= 0;)\r
- if (values[i] != other.values[i])\r
- return (values[i] > other.values[i]) ? 1 : -1;\r
+ const uint32* const values = getValues();\r
+ const uint32* const otherValues = other.getValues();\r
+\r
+ for (int i = (int) bitToIndex (h1); i >= 0; --i)\r
+ if (values[i] != otherValues[i])\r
+ return values[i] > otherValues[i] ? 1 : -1;\r
\r
return 0;\r
}\r
{\r
if (startBit > 0)\r
{\r
- for (int i = highestBit + 1; --i >= startBit;)\r
+ for (int i = highestBit; i >= startBit; --i)\r
setBit (i + bits, (*this) [i]);\r
\r
while (--bits >= 0)\r
}\r
else\r
{\r
- ensureSize (bitToIndex (highestBit + bits) + 1);\r
+ uint32* const values = ensureSize (sizeNeededToHold (highestBit + bits));\r
\r
const size_t wordsToMove = bitToIndex (bits);\r
- size_t top = 1 + bitToIndex (highestBit);\r
+ size_t numOriginalInts = bitToIndex (highestBit);\r
highestBit += bits;\r
\r
if (wordsToMove > 0)\r
{\r
- for (int i = (int) top; --i >= 0;)\r
- values [(size_t) i + wordsToMove] = values [i];\r
+ for (int i = (int) numOriginalInts; i >= 0; --i)\r
+ values[(size_t) i + wordsToMove] = values[i];\r
\r
for (size_t j = 0; j < wordsToMove; ++j)\r
- values [j] = 0;\r
+ values[j] = 0;\r
\r
bits &= 31;\r
}\r
{\r
const int invBits = 32 - bits;\r
\r
- for (size_t i = top + 1 + wordsToMove; --i > wordsToMove;)\r
- values[i] = (values[i] << bits) | (values [i - 1] >> invBits);\r
+ for (size_t i = bitToIndex (highestBit); i > wordsToMove; --i)\r
+ values[i] = (values[i] << bits) | (values[i - 1] >> invBits);\r
\r
- values [wordsToMove] = values [wordsToMove] << bits;\r
+ values[wordsToMove] = values[wordsToMove] << bits;\r
}\r
\r
highestBit = getHighestBit();\r
const size_t wordsToMove = bitToIndex (bits);\r
size_t top = 1 + bitToIndex (highestBit) - wordsToMove;\r
highestBit -= bits;\r
+ uint32* const values = getValues();\r
\r
if (wordsToMove > 0)\r
{\r
size_t i;\r
for (i = 0; i < top; ++i)\r
- values [i] = values [i + wordsToMove];\r
+ values[i] = values[i + wordsToMove];\r
\r
for (i = 0; i < wordsToMove; ++i)\r
- values [top + i] = 0;\r
+ values[top + i] = 0;\r
\r
bits &= 31;\r
}\r
if (bits != 0)\r
{\r
const int invBits = 32 - bits;\r
-\r
--top;\r
+\r
for (size_t i = 0; i < top; ++i)\r
- values[i] = (values[i] >> bits) | (values [i + 1] << invBits);\r
+ values[i] = (values[i] >> bits) | (values[i + 1] << invBits);\r
\r
values[top] = (values[top] >> bits);\r
}\r
{\r
const int numBytes = (getHighestBit() + 8) >> 3;\r
MemoryBlock mb ((size_t) numBytes);\r
+ const uint32* const values = getValues();\r
\r
for (int i = 0; i < numBytes; ++i)\r
mb[i] = (char) ((values[i / 4] >> ((i & 3) * 8)) & 0xff);\r
void BigInteger::loadFromMemoryBlock (const MemoryBlock& data)\r
{\r
const size_t numBytes = data.getSize();\r
- numValues = 1 + (numBytes / sizeof (uint32));\r
- values.malloc (numValues + 1);\r
+ const size_t numInts = 1 + (numBytes / sizeof (uint32));\r
+ uint32* const values = ensureSize (numInts);\r
\r
- for (int i = 0; i < (int) numValues - 1; ++i)\r
+ for (int i = 0; i < (int) numInts - 1; ++i)\r
values[i] = (uint32) ByteOrder::littleEndianInt (addBytesToPointer (data.getData(), sizeof (uint32) * (size_t) i));\r
\r
- values[numValues - 1] = 0;\r
- values[numValues] = 0;\r
+ values[numInts - 1] = 0;\r
\r
for (int i = (int) (numBytes & ~3u); i < (int) numBytes; ++i)\r
this->setBitRangeAsInt (i << 3, 8, (uint32) data [i]);\r
highestBit = getHighestBit();\r
}\r
\r
+//==============================================================================\r
+void writeLittleEndianBitsInBuffer (void* buffer, uint32 startBit, uint32 numBits, uint32 value) noexcept\r
+{\r
+ jassert (buffer != nullptr);\r
+ jassert (numBits > 0 && numBits <= 32);\r
+ jassert (numBits == 32 || (value >> numBits) == 0);\r
+\r
+ uint8* data = static_cast<uint8*> (buffer) + startBit / 8;\r
+\r
+ if (const uint32 offset = (startBit & 7))\r
+ {\r
+ const uint32 bitsInByte = 8 - offset;\r
+ const uint8 current = *data;\r
+\r
+ if (bitsInByte >= numBits)\r
+ {\r
+ *data = (uint8) ((current & ~(((1u << numBits) - 1u) << offset)) | (value << offset));\r
+ return;\r
+ }\r
+\r
+ *data++ = current ^ (uint8) (((value << offset) ^ current) & (((1u << bitsInByte) - 1u) << offset));\r
+ numBits -= bitsInByte;\r
+ value >>= bitsInByte;\r
+ }\r
+\r
+ while (numBits >= 8)\r
+ {\r
+ *data++ = (uint8) value;\r
+ value >>= 8;\r
+ numBits -= 8;\r
+ }\r
+\r
+ if (numBits > 0)\r
+ *data = (uint8) ((*data & (0xff << numBits)) | value);\r
+}\r
+\r
+uint32 readLittleEndianBitsInBuffer (const void* buffer, uint32 startBit, uint32 numBits) noexcept\r
+{\r
+ jassert (buffer != nullptr);\r
+ jassert (numBits > 0 && numBits <= 32);\r
+\r
+ uint32 result = 0;\r
+ uint32 bitsRead = 0;\r
+ const uint8* data = static_cast<const uint8*> (buffer) + startBit / 8;\r
+\r
+ if (const uint32 offset = (startBit & 7))\r
+ {\r
+ const uint32 bitsInByte = 8 - offset;\r
+ result = (*data >> offset);\r
+\r
+ if (bitsInByte >= numBits)\r
+ return result & ((1u << numBits) - 1u);\r
+\r
+ numBits -= bitsInByte;\r
+ bitsRead += bitsInByte;\r
+ ++data;\r
+ }\r
+\r
+ while (numBits >= 8)\r
+ {\r
+ result |= (((uint32) *data++) << bitsRead);\r
+ bitsRead += 8;\r
+ numBits -= 8;\r
+ }\r
+\r
+ if (numBits > 0)\r
+ result |= ((*data & ((1u << numBits) - 1u)) << bitsRead);\r
+\r
+ return result;\r
+}\r
\r
//==============================================================================\r
//==============================================================================\r
\r
void runTest() override\r
{\r
- beginTest ("BigInteger");\r
+ {\r
+ beginTest ("BigInteger");\r
\r
- Random r = getRandom();\r
+ Random r = getRandom();\r
\r
- expect (BigInteger().isZero());\r
- expect (BigInteger(1).isOne());\r
+ expect (BigInteger().isZero());\r
+ expect (BigInteger(1).isOne());\r
+\r
+ for (int j = 10000; --j >= 0;)\r
+ {\r
+ BigInteger b1 (getBigRandom(r)),\r
+ b2 (getBigRandom(r));\r
+\r
+ BigInteger b3 = b1 + b2;\r
+ expect (b3 > b1 && b3 > b2);\r
+ expect (b3 - b1 == b2);\r
+ expect (b3 - b2 == b1);\r
+\r
+ BigInteger b4 = b1 * b2;\r
+ expect (b4 > b1 && b4 > b2);\r
+ expect (b4 / b1 == b2);\r
+ expect (b4 / b2 == b1);\r
+ expect (((b4 << 1) >> 1) == b4);\r
+ expect (((b4 << 10) >> 10) == b4);\r
+ expect (((b4 << 100) >> 100) == b4);\r
+\r
+ // TODO: should add tests for other ops (although they also get pretty well tested in the RSA unit test)\r
+\r
+ BigInteger b5;\r
+ b5.loadFromMemoryBlock (b3.toMemoryBlock());\r
+ expect (b3 == b5);\r
+ }\r
+ }\r
\r
- for (int j = 10000; --j >= 0;)\r
{\r
- BigInteger b1 (getBigRandom(r)),\r
- b2 (getBigRandom(r));\r
+ beginTest ("Bit setting");\r
\r
- BigInteger b3 = b1 + b2;\r
- expect (b3 > b1 && b3 > b2);\r
- expect (b3 - b1 == b2);\r
- expect (b3 - b2 == b1);\r
+ Random r = getRandom();\r
+ static uint8 test[2048];\r
\r
- BigInteger b4 = b1 * b2;\r
- expect (b4 > b1 && b4 > b2);\r
- expect (b4 / b1 == b2);\r
- expect (b4 / b2 == b1);\r
+ for (int j = 100000; --j >= 0;)\r
+ {\r
+ uint32 offset = static_cast<uint32> (r.nextInt (200) + 10);\r
+ uint32 num = static_cast<uint32> (r.nextInt (32) + 1);\r
+ uint32 value = static_cast<uint32> (r.nextInt());\r
+\r
+ if (num < 32)\r
+ value &= ((1u << num) - 1);\r
\r
- // TODO: should add tests for other ops (although they also get pretty well tested in the RSA unit test)\r
+ auto old1 = readLittleEndianBitsInBuffer (test, offset - 6, 6);\r
+ auto old2 = readLittleEndianBitsInBuffer (test, offset + num, 6);\r
+ writeLittleEndianBitsInBuffer (test, offset, num, value);\r
+ auto result = readLittleEndianBitsInBuffer (test, offset, num);\r
\r
- BigInteger b5;\r
- b5.loadFromMemoryBlock (b3.toMemoryBlock());\r
- expect (b3 == b5);\r
+ expect (result == value);\r
+ expect (old1 == readLittleEndianBitsInBuffer (test, offset - 6, 6));\r
+ expect (old2 == readLittleEndianBitsInBuffer (test, offset + num, 6));\r
+ }\r
}\r
}\r
};\r
\r
//==============================================================================\r
/** Resets the value to 0. */\r
- void clear();\r
+ void clear() noexcept;\r
\r
/** Clears a particular bit in the number. */\r
void clearBit (int bitNumber) noexcept;\r
\r
private:\r
//==============================================================================\r
- HeapBlock<uint32> values;\r
- size_t numValues;\r
+ enum { numPreallocatedInts = 4 };\r
+ HeapBlock<uint32> heapAllocation;\r
+ uint32 preallocated[numPreallocatedInts];\r
+ size_t allocatedSize;\r
int highestBit;\r
bool negative;\r
\r
- void ensureSize (size_t);\r
+ uint32* getValues() const noexcept;\r
+ uint32* ensureSize (size_t);\r
void shiftLeft (int bits, int startBit);\r
void shiftRight (int bits, int startBit);\r
\r
return n * n;\r
}\r
\r
+//==============================================================================\r
+/** Writes a number of bits into a memory buffer at a given bit index.\r
+ The buffer is treated as a sequence of 8-bit bytes, and the value is encoded in little-endian order,\r
+ so for example if startBit = 10, and numBits = 11 then the lower 6 bits of the value would be written\r
+ into bits 2-8 of targetBuffer[1], and the upper 5 bits of value into bits 0-5 of targetBuffer[2].\r
+\r
+ @see readLittleEndianBitsInBuffer\r
+*/\r
+void writeLittleEndianBitsInBuffer (void* targetBuffer, uint32 startBit, uint32 numBits, uint32 value) noexcept;\r
+\r
+/** Reads a number of bits from a buffer at a given bit index.\r
+ The buffer is treated as a sequence of 8-bit bytes, and the value is encoded in little-endian order,\r
+ so for example if startBit = 10, and numBits = 11 then the lower 6 bits of the result would be read\r
+ from bits 2-8 of sourceBuffer[1], and the upper 5 bits of the result from bits 0-5 of sourceBuffer[2].\r
+\r
+ @see writeLittleEndianBitsInBuffer\r
+*/\r
+uint32 readLittleEndianBitsInBuffer (const void* sourceBuffer, uint32 startBit, uint32 numBits) noexcept;\r
+\r
\r
//==============================================================================\r
#if JUCE_INTEL || defined (DOXYGEN)\r
{\r
public:\r
/** Creates a continuous range that performs a dummy mapping. */\r
- NormalisableRange() noexcept : start(), end (1), interval(), skew (static_cast<ValueType> (1)) {}\r
+ NormalisableRange() noexcept : start(), end (1), interval(), skew (static_cast<ValueType> (1)), symmetricSkew (false) {}\r
\r
/** Creates a copy of another range. */\r
NormalisableRange (const NormalisableRange& other) noexcept\r
: start (other.start), end (other.end),\r
- interval (other.interval), skew (other.skew)\r
+ interval (other.interval), skew (other.skew),\r
+ symmetricSkew (other.symmetricSkew)\r
{\r
checkInvariants();\r
}\r
end = other.end;\r
interval = other.interval;\r
skew = other.skew;\r
+ symmetricSkew = other.symmetricSkew;\r
checkInvariants();\r
return *this;\r
}\r
NormalisableRange (ValueType rangeStart,\r
ValueType rangeEnd,\r
ValueType intervalValue,\r
- ValueType skewFactor) noexcept\r
- : start (rangeStart), end (rangeEnd),\r
- interval (intervalValue), skew (skewFactor)\r
+ ValueType skewFactor,\r
+ bool useSymmetricSkew = false) noexcept\r
+ : start (rangeStart), end (rangeEnd), interval (intervalValue),\r
+ skew (skewFactor), symmetricSkew (useSymmetricSkew)\r
{\r
checkInvariants();\r
}\r
NormalisableRange (ValueType rangeStart,\r
ValueType rangeEnd,\r
ValueType intervalValue) noexcept\r
- : start (rangeStart), end (rangeEnd),\r
- interval (intervalValue), skew (static_cast<ValueType> (1))\r
+ : start (rangeStart), end (rangeEnd), interval (intervalValue),\r
+ skew (static_cast<ValueType> (1)), symmetricSkew (false)\r
{\r
checkInvariants();\r
}\r
/** Creates a NormalisableRange with a given range, continuous interval, but a dummy skew-factor. */\r
NormalisableRange (ValueType rangeStart,\r
ValueType rangeEnd) noexcept\r
- : start (rangeStart), end (rangeEnd),\r
- interval(), skew (static_cast<ValueType> (1))\r
+ : start (rangeStart), end (rangeEnd), interval(),\r
+ skew (static_cast<ValueType> (1)), symmetricSkew (false)\r
{\r
checkInvariants();\r
}\r
{\r
ValueType proportion = (v - start) / (end - start);\r
\r
- if (skew != static_cast<ValueType> (1))\r
- proportion = std::pow (proportion, skew);\r
+ if (skew == static_cast<ValueType> (1))\r
+ return proportion;\r
\r
- return proportion;\r
+ if (! symmetricSkew)\r
+ return std::pow (proportion, skew);\r
+\r
+ ValueType distanceFromMiddle = static_cast<ValueType> (2) * proportion - static_cast<ValueType> (1);\r
+\r
+ return (static_cast<ValueType> (1) + std::pow (std::abs (distanceFromMiddle), skew)\r
+ * (distanceFromMiddle < static_cast<ValueType> (0) ? static_cast<ValueType> (-1)\r
+ : static_cast<ValueType> (1)))\r
+ / static_cast<ValueType> (2);\r
}\r
\r
/** Uses the properties of this mapping to convert a normalised 0->1 value to\r
*/\r
ValueType convertFrom0to1 (ValueType proportion) const noexcept\r
{\r
- if (skew != static_cast<ValueType> (1) && proportion > ValueType())\r
- proportion = std::exp (std::log (proportion) / skew);\r
+ if (! symmetricSkew)\r
+ {\r
+ if (skew != static_cast<ValueType> (1) && proportion > ValueType())\r
+ proportion = std::exp (std::log (proportion) / skew);\r
+\r
+ return start + (end - start) * proportion;\r
+ }\r
\r
- return start + (end - start) * proportion;\r
+ ValueType distanceFromMiddle = static_cast<ValueType> (2) * proportion - static_cast<ValueType> (1);\r
+\r
+ if (skew != static_cast<ValueType> (1) && distanceFromMiddle != static_cast<ValueType> (0))\r
+ distanceFromMiddle = std::exp (std::log (std::abs (distanceFromMiddle)) / skew)\r
+ * (distanceFromMiddle < static_cast<ValueType> (0) ? static_cast<ValueType> (-1)\r
+ : static_cast<ValueType> (1));\r
+\r
+ return start + (end - start) / static_cast<ValueType> (2) * (static_cast<ValueType> (1) + distanceFromMiddle);\r
}\r
\r
/** Takes a non-normalised value and snaps it based on the interval property of\r
*/\r
ValueType skew;\r
\r
+ /** If true, the skew factor applies from the middle of the slider to each of its ends. */\r
+ bool symmetricSkew;\r
+\r
private:\r
void checkInvariants() const\r
{\r
return Range (start, start + newLength);\r
}\r
\r
+ /** Returns a range which has its start moved down and its end moved up by the\r
+ given amount.\r
+ @returns The returned range will be (start - amount, end + amount)\r
+ */\r
+ Range expanded (ValueType amount) const noexcept\r
+ {\r
+ return Range (start - amount, end + amount);\r
+ }\r
+\r
//==============================================================================\r
/** Adds an amount to the start and end of the range. */\r
inline Range operator+= (const ValueType amountToAdd) noexcept\r
\r
ScopedPointer& operator= (ScopedPointer&& other) noexcept\r
{\r
+ ContainerDeletePolicy<ObjectType>::destroy (object);\r
object = other.object;\r
other.object = nullptr;\r
return *this;\r
SharedObjectType& get() const noexcept { return *sharedObject; }\r
\r
/** Returns the object that this pointer references.\r
- The pointer returned may be zero, of course.\r
+ The pointer returned may be a nullptr, of course.\r
*/\r
SharedObjectType& getObject() const noexcept { return *sharedObject; }\r
\r
#include <comutil.h>\r
#endif\r
\r
+ #ifndef S_FALSE\r
+ #define S_FALSE (1) // (apparently some obscure win32 dev environments don't define this)\r
+ #endif\r
+\r
#undef PACKED\r
\r
#if JUCE_MSVC\r
const int maxRedirects, const String& headers,\r
bool isPost, const String& httpRequest, size_t postSize)\r
{\r
+ curl_version_info_data* data = curl_version_info (CURLVERSION_NOW);\r
+ jassert (data != nullptr);\r
+\r
+ String userAgent = String ("curl/") + data->version;\r
+\r
if (curl_easy_setopt (curl, CURLOPT_URL, address.toRawUTF8()) == CURLE_OK\r
&& curl_easy_setopt (curl, CURLOPT_WRITEDATA, this) == CURLE_OK\r
&& curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, StaticCurlWrite) == CURLE_OK\r
- && curl_easy_setopt (curl, CURLOPT_MAXREDIRS, static_cast<long> (maxRedirects)) == CURLE_OK)\r
+ && curl_easy_setopt (curl, CURLOPT_MAXREDIRS, static_cast<long> (maxRedirects)) == CURLE_OK\r
+ && curl_easy_setopt (curl, CURLOPT_USERAGENT, userAgent.toRawUTF8()) == CURLE_OK\r
+ && curl_easy_setopt (curl, CURLOPT_FOLLOWLOCATION, (maxRedirects > 0 ? 1 : 0)) == CURLE_OK)\r
{\r
if (isPost)\r
{\r
\r
size_t len = size * nmemb;\r
\r
- curlHeaders += String (ptr, len);\r
+ String header (ptr, len);\r
+\r
+ if (! header.contains (":") && header.startsWithIgnoreCase ("HTTP/"))\r
+ curlHeaders.clear();\r
+ else\r
+ curlHeaders += header;\r
+\r
return len;\r
}\r
\r
+\r
//==============================================================================\r
// Static method wrappers\r
static size_t StaticCurlWrite (char* ptr, size_t size, size_t nmemb, void* userdata)\r
\r
case invokedExecutableFile:\r
if (juce_argv != nullptr && juce_argc > 0)\r
- return File (CharPointer_UTF8 (juce_argv[0]));\r
+ return File::getCurrentWorkingDirectory().getChildFile (CharPointer_UTF8 (juce_argv[0]));\r
// deliberate fall-through...\r
\r
case currentExecutableFile:\r
const File exe (juce_getExecutableFile());\r
const File parent (exe.getParentDirectory());\r
\r
- #if JUCE_IOS\r
+ #if JUCE_IOS\r
return parent;\r
- #else\r
+ #else\r
return parent.getFullPathName().endsWithIgnoreCase ("Contents/MacOS")\r
? parent.getParentDirectory().getParentDirectory()\r
: exe;\r
- #endif\r
+ #endif\r
}\r
\r
case hostApplicationPath:\r
\r
~URLConnectionState()\r
{\r
- stop();\r
- [data release];\r
+ signalThreadShouldExit();\r
+\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ isBeingDeleted = true;\r
+ [task cancel];\r
+ DelegateClass::setState (delegate, nullptr);\r
+ }\r
+\r
+ stopThread (10000);\r
+ [task release];\r
[request release];\r
[headers release];\r
[session release];\r
+\r
+ const ScopedLock sl (dataLock);\r
[delegate release];\r
+ [data release];\r
}\r
\r
bool start (URL::OpenStreamProgressCallback* callback, void* context)\r
while (isThreadRunning() && ! initialised)\r
{\r
if (callback != nullptr)\r
- callback (context, (int) latestTotalBytes, (int) [[request HTTPBody] length]);\r
+ if (! callback (context, (int) latestTotalBytes, (int) [[request HTTPBody] length]))\r
+ return false;\r
\r
Thread::sleep (1);\r
}\r
return true;\r
}\r
\r
- void stop()\r
- {\r
- {\r
- const ScopedLock sl (dataLock);\r
- [task cancel];\r
- }\r
-\r
- stopThread (10000);\r
- [task release];\r
- task = nil;\r
- }\r
-\r
int read (char* dest, int numBytes)\r
{\r
int numDone = 0;\r
{\r
{\r
const ScopedLock sl (dataLock);\r
+ if (isBeingDeleted)\r
+ return;\r
+\r
[data setLength: 0];\r
}\r
\r
}\r
}\r
\r
- void didBecomeInvalidWithError (NSError* error)\r
+ void didComplete (NSError* error)\r
{\r
- DBG (nsStringToJuce ([error description])); ignoreUnused (error);\r
- hasFailed = true;\r
+ const ScopedLock sl (dataLock);\r
+ if (isBeingDeleted)\r
+ return;\r
+\r
+ #if JUCE_DEBUG\r
+ if (error != nullptr)\r
+ DBG (nsStringToJuce ([error description]));\r
+ #endif\r
+\r
+ hasFailed = (error != nullptr);\r
initialised = true;\r
signalThreadShouldExit();\r
}\r
void didReceiveData (NSData* newData)\r
{\r
const ScopedLock sl (dataLock);\r
+ if (isBeingDeleted)\r
+ return;\r
+\r
[data appendData: newData];\r
initialised = true;\r
}\r
latestTotalBytes = static_cast<int> (totalBytesWritten);\r
}\r
\r
- void willPerformHTTPRedirection (NSURLRequest* aRequest, void (^completionHandler)(NSURLRequest *))\r
+ void willPerformHTTPRedirection (NSURLRequest* urlRequest, void (^completionHandler)(NSURLRequest *))\r
{\r
- NSURLRequest* newRequest = (numRedirects++ < numRedirectsToFollow ? aRequest : nullptr);\r
- completionHandler (newRequest);\r
+ {\r
+ const ScopedLock sl (dataLock);\r
+ if (isBeingDeleted)\r
+ return;\r
+ }\r
+\r
+ completionHandler (numRedirects++ < numRedirectsToFollow ? urlRequest : nil);\r
}\r
\r
void run() override\r
[task resume];\r
\r
while (! threadShouldExit())\r
- {\r
wait (5);\r
\r
- if (task.state != NSURLSessionTaskStateRunning)\r
- break;\r
- }\r
-\r
hasFinished = true;\r
initialised = true;\r
}\r
NSMutableData* data = nil;\r
NSDictionary* headers = nil;\r
int statusCode = 0;\r
- bool initialised = false, hasFailed = false, hasFinished = false;\r
+ bool initialised = false, hasFailed = false, hasFinished = false, isBeingDeleted = false;\r
const int numRedirectsToFollow;\r
int numRedirects = 0;\r
int64 latestTotalBytes = 0;\r
didSendBodyData, "v@:@@qqq");\r
addMethod (@selector (URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:),\r
willPerformHTTPRedirection, "v@:@@@@@");\r
+\r
+ addMethod (@selector (URLSession:task:didCompleteWithError:), didCompleteWithError, "v@:@@@");\r
+\r
registerClass();\r
}\r
\r
private:\r
static void didReceiveResponse (id self, SEL, NSURLSession*, NSURLSessionDataTask*, NSURLResponse* response, id completionHandler)\r
{\r
- getState (self)->didReceiveResponse (response, completionHandler);\r
+ if (auto state = getState (self)) state->didReceiveResponse (response, completionHandler);\r
}\r
\r
static void didBecomeInvalidWithError (id self, SEL, NSURLSession*, NSError* error)\r
{\r
- getState (self)->didBecomeInvalidWithError (error);\r
+ if (auto state = getState (self)) state->didComplete (error);\r
}\r
\r
static void didReceiveData (id self, SEL, NSURLSession*, NSURLSessionDataTask*, NSData* newData)\r
{\r
- getState (self)->didReceiveData (newData);\r
+ if (auto state = getState (self)) state->didReceiveData (newData);\r
}\r
\r
static void didSendBodyData (id self, SEL, NSURLSession*, NSURLSessionTask*, int64_t, int64_t totalBytesWritten, int64_t)\r
{\r
- getState (self)->didSendBodyData (totalBytesWritten);\r
+ if (auto state = getState (self)) state->didSendBodyData (totalBytesWritten);\r
}\r
\r
static void willPerformHTTPRedirection (id self, SEL, NSURLSession*, NSURLSessionTask*, NSHTTPURLResponse*,\r
NSURLRequest* request, void (^completionHandler)(NSURLRequest *))\r
{\r
- getState (self)->willPerformHTTPRedirection (request, completionHandler);\r
+ if (auto state = getState (self)) state->willPerformHTTPRedirection (request, completionHandler);\r
+ }\r
+\r
+ static void didCompleteWithError (id self, SEL, NSURLConnection*, NSURLSessionTask*, NSError* error)\r
+ {\r
+ if (auto state = getState (self)) state->didComplete (error);\r
}\r
};\r
\r
{\r
stop();\r
[connection release];\r
- [data release];\r
[request release];\r
[headers release];\r
[delegate release];\r
+ [data release];\r
}\r
\r
bool start (URL::OpenStreamProgressCallback* callback, void* context)\r
while (isThreadRunning() && ! initialised)\r
{\r
if (callback != nullptr)\r
- callback (context, latestTotalBytes, (int) [[request HTTPBody] length]);\r
+ if (! callback (context, latestTotalBytes, (int) [[request HTTPBody] length]))\r
+ return false;\r
\r
Thread::sleep (1);\r
}\r
return false;\r
}\r
\r
+bool File::replaceInternal (const File& dest) const\r
+{\r
+ return moveInternal (dest);\r
+}\r
+\r
Result File::createDirectoryInternal (const String& fileName) const\r
{\r
return getResultForReturnValue (mkdir (fileName.toUTF8(), 0777));\r
}\r
\r
//==============================================================================\r
-void MemoryMappedFile::openInternal (const File& file, AccessMode mode)\r
+void MemoryMappedFile::openInternal (const File& file, AccessMode mode, bool exclusive)\r
{\r
jassert (mode == readOnly || mode == readWrite);\r
\r
{\r
void* m = mmap (0, (size_t) range.getLength(),\r
mode == readWrite ? (PROT_READ | PROT_WRITE) : PROT_READ,\r
- MAP_SHARED, fileHandle,\r
+ exclusive ? MAP_PRIVATE : MAP_SHARED, fileHandle,\r
(off_t) range.getStart());\r
\r
if (m != MAP_FAILED)\r
#ifndef JUCE_WIN32_COMSMARTPTR_H_INCLUDED\r
#define JUCE_WIN32_COMSMARTPTR_H_INCLUDED\r
\r
-#if ! (defined (_MSC_VER) || defined (__uuidof))\r
+#if JUCE_MINGW || (! (defined (_MSC_VER) || defined (__uuidof)))\r
+#ifdef __uuidof\r
+ #undef __uuidof\r
+#endif\r
+\r
template<typename Type> struct UUIDGetter { static CLSID get() { jassertfalse; return CLSID(); } };\r
#define __uuidof(x) UUIDGetter<x>::get()\r
+\r
+ template <>\r
+ struct UUIDGetter<::IUnknown>\r
+ {\r
+ static CLSID get()\r
+ {\r
+ GUID g = { 0, 0, 0, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };\r
+ return g;\r
+ }\r
+ };\r
#endif\r
\r
inline GUID uuidFromString (const char* const s) noexcept\r
\r
JUCE_COMRESULT QueryInterface (REFIID refId, void** result)\r
{\r
- if (refId == IID_IUnknown)\r
+ if (refId == __uuidof (IUnknown))\r
return castToType <IUnknown> (result);\r
\r
*result = 0;\r
return MoveFile (fullPath.toWideCharPointer(), dest.getFullPathName().toWideCharPointer()) != 0;\r
}\r
\r
+bool File::replaceInternal (const File& dest) const\r
+{\r
+ void* lpExclude = 0;\r
+ void* lpReserved = 0;\r
+\r
+ return ReplaceFile (dest.getFullPathName().toWideCharPointer(), fullPath.toWideCharPointer(),\r
+ 0, REPLACEFILE_IGNORE_MERGE_ERRORS, lpExclude, lpReserved) != 0;\r
+}\r
+\r
Result File::createDirectoryInternal (const String& fileName) const\r
{\r
return CreateDirectory (fileName.toWideCharPointer(), 0) ? Result::ok()\r
}\r
\r
//==============================================================================\r
-void MemoryMappedFile::openInternal (const File& file, AccessMode mode)\r
+void MemoryMappedFile::openInternal (const File& file, AccessMode mode, bool exclusive)\r
{\r
jassert (mode == readOnly || mode == readWrite);\r
\r
access = FILE_MAP_ALL_ACCESS;\r
}\r
\r
- HANDLE h = CreateFile (file.getFullPathName().toWideCharPointer(), accessMode, FILE_SHARE_READ, 0,\r
+ HANDLE h = CreateFile (file.getFullPathName().toWideCharPointer(), accessMode,\r
+ exclusive ? 0 : (FILE_SHARE_READ | (mode == readWrite ? FILE_SHARE_WRITE : 0)), 0,\r
createType, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, 0);\r
\r
if (h != INVALID_HANDLE_VALUE)\r
#pragma intrinsic (__cpuid)\r
#pragma intrinsic (__rdtsc)\r
\r
+#if JUCE_MINGW\r
+static void callCPUID (int result[4], uint32 type)\r
+{\r
+ uint32 la = result[0], lb = result[1], lc = result[2], ld = result[3];\r
+\r
+ asm ("mov %%ebx, %%esi \n\t"\r
+ "cpuid \n\t"\r
+ "xchg %%esi, %%ebx"\r
+ : "=a" (la), "=S" (lb), "=c" (lc), "=d" (ld) : "a" (type)\r
+ #if JUCE_64BIT\r
+ , "b" (lb), "c" (lc), "d" (ld)\r
+ #endif\r
+ );\r
+\r
+ result[0] = la; result[1] = lb; result[2] = lc; result[3] = ld;\r
+}\r
+#else\r
static void callCPUID (int result[4], int infoType)\r
{\r
__cpuid (result, infoType);\r
}\r
+#endif\r
\r
String SystemStats::getCpuVendor()\r
{\r
return colonPos > 0 ? url.substring (colonPos + 1).getIntValue() : 0;\r
}\r
\r
+URL URL::withNewDomainAndPath (const String& newURL) const\r
+{\r
+ URL u (*this);\r
+ u.url = newURL;\r
+ return u;\r
+}\r
+\r
URL URL::withNewSubPath (const String& newPath) const\r
{\r
const int startOfPath = URLHelpers::findStartOfPath (url);\r
*/\r
int getPort() const;\r
\r
- /** Returns a new version of this URL that uses a different sub-path.\r
+ /** Returns a new version of this URL with a different domain and path.\r
+\r
+ E.g. if the URL is "http://www.xyz.com/foo?x=1" and you call this with\r
+ "abc.com/zzz", it'll return "http://abc.com/zzz?x=1".\r
+ @see withNewSubPath\r
+ */\r
+ URL withNewDomainAndPath (const String& newFullPath) const;\r
+\r
+ /** Returns a new version of this URL with a different sub-path.\r
\r
E.g. if the URL is "http://www.xyz.com/foo?x=1" and you call this with\r
"bar", it'll return "http://www.xyz.com/bar?x=1".\r
+ @see withNewDomainAndPath\r
*/\r
URL withNewSubPath (const String& newPath) const;\r
\r
if the parameter httpRequestCmd is not specified (or empty) then this\r
parameter will determine which HTTP request command will be used\r
(POST or GET).\r
- @param progressCallback if this is non-zero, it lets you supply a callback function\r
+ @param progressCallback if this is not a nullptr, it lets you supply a callback function\r
to keep track of the operation's progress. This can be useful\r
for lengthy POST operations, so that you can provide user feedback.\r
@param progressCallbackContext if a callback is specified, this value will be passed to\r
*/\r
#define JUCE_MAJOR_VERSION 4\r
#define JUCE_MINOR_VERSION 2\r
-#define JUCE_BUILDNUMBER 3\r
+#define JUCE_BUILDNUMBER 4\r
\r
/** Current Juce version number.\r
\r
bundle = bundle.getParentDirectory().getParentDirectory();\r
#endif\r
\r
- if (! bundle.isDirectory())\r
- return false;\r
+ if (bundle.isDirectory())\r
+ return (bundle.getFileExtension() == ".appex");\r
+ #endif\r
\r
- return (bundle.getFileExtension() == ".appex");\r
- #else\r
return false;\r
- #endif\r
}\r
}\r
};\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const String String::empty;\r
+#endif\r
\r
//==============================================================================\r
String::String() noexcept : text (&(emptyString.text))\r
beginTest ("Basics");\r
\r
expect (String().length() == 0);\r
- expect (String() == String::empty);\r
+ expect (String() == String());\r
String s1, s2 ("abcd");\r
expect (s1.isEmpty() && ! s1.isNotEmpty());\r
expect (s2.isNotEmpty() && ! s2.isEmpty());\r
expect (String ("abcdefg", 4) == L"abcd");\r
expect (String ("abcdefg", 4) == String (L"abcdefg", 4));\r
expect (String::charToString ('x') == "x");\r
- expect (String::charToString (0) == String::empty);\r
+ expect (String::charToString (0) == String());\r
expect (s2 + "e" == "abcde" && s2 + 'e' == "abcde");\r
expect (s2 + L'e' == "abcde" && s2 + L"e" == "abcde");\r
expect (s1.equalsIgnoreCase ("abcD") && s1 < "abce" && s1 > "abbb");\r
expect (s1.startsWith ("ab") && s1.startsWith ("abcd") && ! s1.startsWith ("abcde"));\r
expect (s1.startsWithIgnoreCase ("aB") && s1.endsWithIgnoreCase ("CD"));\r
expect (s1.endsWith ("bcd") && ! s1.endsWith ("aabcd"));\r
- expectEquals (s1.indexOf (String::empty), 0);\r
- expectEquals (s1.indexOfIgnoreCase (String::empty), 0);\r
- expect (s1.startsWith (String::empty) && s1.endsWith (String::empty) && s1.contains (String::empty));\r
+ expectEquals (s1.indexOf (String()), 0);\r
+ expectEquals (s1.indexOfIgnoreCase (String()), 0);\r
+ expect (s1.startsWith (String()) && s1.endsWith (String()) && s1.contains (String()));\r
expect (s1.contains ("cd") && s1.contains ("ab") && s1.contains ("abcd"));\r
expect (s1.containsChar ('a'));\r
expect (! s1.containsChar ('x'));\r
}\r
\r
beginTest ("Numeric conversions");\r
- expect (String::empty.getIntValue() == 0);\r
- expect (String::empty.getDoubleValue() == 0.0);\r
- expect (String::empty.getFloatValue() == 0.0f);\r
+ expect (String().getIntValue() == 0);\r
+ expect (String().getDoubleValue() == 0.0);\r
+ expect (String().getFloatValue() == 0.0f);\r
expect (s.getIntValue() == 12345678);\r
expect (s.getLargeIntValue() == (int64) 12345678);\r
expect (s.getDoubleValue() == 12345678.0);\r
expect (s3.containsAnyOf (String (L"zzzFs")));\r
expect (s3.startsWith ("abcd"));\r
expect (s3.startsWithIgnoreCase (String (L"abCD")));\r
- expect (s3.startsWith (String::empty));\r
+ expect (s3.startsWith (String()));\r
expect (s3.startsWithChar ('a'));\r
expect (s3.endsWith (String ("HIJ")));\r
expect (s3.endsWithIgnoreCase (String (L"Hij")));\r
- expect (s3.endsWith (String::empty));\r
+ expect (s3.endsWith (String()));\r
expect (s3.endsWithChar (L'J'));\r
expect (s3.indexOf ("HIJ") == 7);\r
expect (s3.indexOf (String (L"HIJK")) == -1);\r
expect (! String ("xx?y").matchesWildcard ("xx?y?", true));\r
expect (String ("xx?y").matchesWildcard ("xx??", true));\r
\r
- expectEquals (s5.fromFirstOccurrenceOf (String::empty, true, false), s5);\r
+ expectEquals (s5.fromFirstOccurrenceOf (String(), true, false), s5);\r
expectEquals (s5.fromFirstOccurrenceOf ("xword2", true, false), s5.substring (100));\r
expectEquals (s5.fromFirstOccurrenceOf (String (L"word2"), true, false), s5.substring (5));\r
expectEquals (s5.fromFirstOccurrenceOf ("Word2", true, true), s5.substring (5));\r
expectEquals (s5.fromFirstOccurrenceOf ("word2", false, false), s5.getLastCharacters (6));\r
expectEquals (s5.fromFirstOccurrenceOf ("Word2", false, true), s5.getLastCharacters (6));\r
\r
- expectEquals (s5.fromLastOccurrenceOf (String::empty, true, false), s5);\r
+ expectEquals (s5.fromLastOccurrenceOf (String(), true, false), s5);\r
expectEquals (s5.fromLastOccurrenceOf ("wordx", true, false), s5);\r
expectEquals (s5.fromLastOccurrenceOf ("word", true, false), s5.getLastCharacters (5));\r
expectEquals (s5.fromLastOccurrenceOf ("worD", true, true), s5.getLastCharacters (5));\r
expectEquals (s5.fromLastOccurrenceOf ("word", false, false), s5.getLastCharacters (1));\r
expectEquals (s5.fromLastOccurrenceOf ("worD", false, true), s5.getLastCharacters (1));\r
\r
- expect (s5.upToFirstOccurrenceOf (String::empty, true, false).isEmpty());\r
+ expect (s5.upToFirstOccurrenceOf (String(), true, false).isEmpty());\r
expectEquals (s5.upToFirstOccurrenceOf ("word4", true, false), s5);\r
expectEquals (s5.upToFirstOccurrenceOf ("word2", true, false), s5.substring (0, 10));\r
expectEquals (s5.upToFirstOccurrenceOf ("Word2", true, true), s5.substring (0, 10));\r
expectEquals (s5.upToFirstOccurrenceOf ("word2", false, false), s5.substring (0, 5));\r
expectEquals (s5.upToFirstOccurrenceOf ("Word2", false, true), s5.substring (0, 5));\r
\r
- expectEquals (s5.upToLastOccurrenceOf (String::empty, true, false), s5);\r
+ expectEquals (s5.upToLastOccurrenceOf (String(), true, false), s5);\r
expectEquals (s5.upToLastOccurrenceOf ("zword", true, false), s5);\r
expectEquals (s5.upToLastOccurrenceOf ("word", true, false), s5.dropLastCharacters (1));\r
expectEquals (s5.dropLastCharacters(1).upToLastOccurrenceOf ("word", true, false), s5.dropLastCharacters (1));\r
expect (s5.replaceCharacters ("wo", "xy") != s5);\r
expectEquals (s5.replaceCharacters ("wo", "xy").replaceCharacters ("xy", "wo"), s5);\r
expectEquals (s5.retainCharacters ("1wordxya"), String ("wordwordword"));\r
- expect (s5.retainCharacters (String::empty).isEmpty());\r
+ expect (s5.retainCharacters (String()).isEmpty());\r
expect (s5.removeCharacters ("1wordxya") == " 2 3");\r
- expectEquals (s5.removeCharacters (String::empty), s5);\r
+ expectEquals (s5.removeCharacters (String()), s5);\r
expect (s5.initialSectionContainingOnly ("word") == L"word");\r
expect (String ("word").initialSectionContainingOnly ("word") == L"word");\r
expectEquals (s5.initialSectionNotContaining (String ("xyz ")), String ("word"));\r
expectEquals (s.joinIntoString ("-"), String ("4-3-2-1-0"));\r
s.remove (2);\r
expectEquals (s.joinIntoString ("--"), String ("4--3--1--0"));\r
- expectEquals (s.joinIntoString (String::empty), String ("4310"));\r
+ expectEquals (s.joinIntoString (StringRef()), String ("4310"));\r
s.clear();\r
- expectEquals (s.joinIntoString ("x"), String::empty);\r
+ expectEquals (s.joinIntoString ("x"), String());\r
\r
StringArray toks;\r
toks.addTokens ("x,,", ";,", "");\r
~String() noexcept;\r
\r
//==============================================================================\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
/** This is a static empty string object that can be used if you need a reference to one.\r
The value of String::empty is exactly the same as String(), and in almost all cases\r
- it's better to avoid String::empty and just use String() instead, so that the compiler\r
+ it's better to avoid String::empty and just use String() or {} instead, so that the compiler\r
only has to reason about locally-constructed objects, rather than taking into account\r
the fact that you're referencing a global shared static memory address.\r
*/\r
static const String empty;\r
+ #endif\r
\r
/** This is the character encoding type used internally to store the string.\r
\r
if (isPositiveAndBelow (index, strings.size()))\r
return strings.getReference (index);\r
\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
return String::empty;\r
+ #else\r
+ static String empty;\r
+ return empty;\r
+ #endif\r
}\r
\r
String& StringArray::getReference (const int index) noexcept\r
\r
Random r = getRandom();\r
\r
- testDiff (String::empty, String::empty);\r
- testDiff ("x", String::empty);\r
- testDiff (String::empty, "x");\r
+ testDiff (String(), String());\r
+ testDiff ("x", String());\r
+ testDiff (String(), "x");\r
testDiff ("x", "x");\r
testDiff ("x", "y");\r
testDiff ("xxx", "x");\r
methods called to try to interrupt them\r
@param timeOutMilliseconds the length of time this method should wait for all the jobs to finish\r
before giving up and returning false\r
- @param selectedJobsToRemove if this is non-zero, the JobSelector object is asked to decide which\r
- jobs should be removed. If it is zero, all jobs are removed\r
+ @param selectedJobsToRemove if this is not a nullptr, the JobSelector object is asked to decide\r
+ which jobs should be removed. If it is a nullptr, all jobs are removed\r
@returns true if all jobs are successfully stopped and removed; false if the timeout period\r
expires while waiting for one or more jobs to stop\r
*/\r
@param counterName the name used when printing out the statistics\r
@param runsPerPrintout the number of start/stop iterations before calling\r
printStatistics()\r
- @param loggingFile a file to dump the results to - if this is File::nonexistent,\r
+ @param loggingFile a file to dump the results to - if this is File(),\r
the results are just written to the debugger output\r
*/\r
PerformanceCounter (const String& counterName,\r
return attributes.size();\r
}\r
\r
+static const String& getEmptyStringRef() noexcept\r
+{\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ return String::empty;\r
+ #else\r
+ static String empty;\r
+ return empty;\r
+ #endif\r
+}\r
+\r
const String& XmlElement::getAttributeName (const int index) const noexcept\r
{\r
if (const XmlAttributeNode* const att = attributes [index])\r
return att->name.toString();\r
\r
- return String::empty;\r
+ return getEmptyStringRef();\r
}\r
\r
const String& XmlElement::getAttributeValue (const int index) const noexcept\r
if (const XmlAttributeNode* const att = attributes [index])\r
return att->value;\r
\r
- return String::empty;\r
+ return getEmptyStringRef();\r
}\r
\r
XmlElement::XmlAttributeNode* XmlElement::getAttribute (StringRef attributeName) const noexcept\r
if (const XmlAttributeNode* att = getAttribute (attributeName))\r
return att->value;\r
\r
- return String::empty;\r
+ return getEmptyStringRef();\r
}\r
\r
String XmlElement::getStringAttribute (StringRef attributeName, const String& defaultReturnValue) const\r
Also, it's much easier and neater to use this method indirectly via the\r
forEachXmlChildElement macro.\r
\r
- @returns the sibling element that follows this one, or zero if this is the last\r
- element in its parent\r
+ @returns the sibling element that follows this one, or a nullptr if\r
+ this is the last element in its parent\r
\r
@see getNextElement, isTextElement, forEachXmlChildElement\r
*/\r
int getNumEntries() const noexcept;\r
\r
/** Returns a structure that describes one of the entries in the zip file.\r
- This may return zero if the index is out of range.\r
+ This may return a nullptr if the index is out of range.\r
@see ZipFile::ZipEntry\r
*/\r
const ZipEntry* getEntry (int index) const noexcept;\r
/** Creates a stream that can read from one of the zip file's entries.\r
\r
The stream that is returned must be deleted by the caller (and\r
- zero might be returned if a stream can't be opened for some reason).\r
+ a nullptr might be returned if a stream can't be opened for some reason).\r
\r
The stream must not be used after the ZipFile object that created\r
has been deleted.\r
/** Creates a stream that can read from one of the zip file's entries.\r
\r
The stream that is returned must be deleted by the caller (and\r
- zero might be returned if a stream can't be opened for some reason).\r
+ a nullptr might be returned if a stream can't be opened for some reason).\r
\r
The stream must not be used after the ZipFile object that created\r
has been deleted.\r
\r
ID: juce_cryptography\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE cryptography classes\r
description: Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.\r
website: http://www.juce.com/juce\r
\r
ID: juce_data_structures\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE data model helper classes\r
description: Classes for undo/redo management, and smart data structures.\r
website: http://www.juce.com/juce\r
actionSet->actions.add (action.release());\r
newTransaction = false;\r
\r
- clearFutureTransactions();\r
+ moveFutureTransactionsToStash();\r
+ dropOldTransactionsIfTooLarge();\r
sendChangeMessage();\r
return true;\r
}\r
return false;\r
}\r
\r
-void UndoManager::clearFutureTransactions()\r
+void UndoManager::moveFutureTransactionsToStash()\r
+{\r
+ if (nextIndex < transactions.size())\r
+ {\r
+ stashedFutureTransactions.clear();\r
+\r
+ while (nextIndex < transactions.size())\r
+ {\r
+ ActionSet* removed = transactions.removeAndReturn (nextIndex);\r
+ stashedFutureTransactions.add (removed);\r
+ totalUnitsStored -= removed->getTotalSize();\r
+ }\r
+ }\r
+}\r
+\r
+void UndoManager::restoreStashedFutureTransactions()\r
{\r
while (nextIndex < transactions.size())\r
{\r
- totalUnitsStored -= transactions.getLast()->getTotalSize();\r
- transactions.removeLast();\r
+ totalUnitsStored -= transactions.getUnchecked (nextIndex)->getTotalSize();\r
+ transactions.remove (nextIndex);\r
}\r
\r
+ for (int i = 0; i < stashedFutureTransactions.size(); ++i)\r
+ {\r
+ ActionSet* action = stashedFutureTransactions.removeAndReturn (i);\r
+ totalUnitsStored += action->getTotalSize();\r
+ transactions.add (action);\r
+ }\r
+\r
+ stashedFutureTransactions.clearQuick (false);\r
+}\r
+\r
+void UndoManager::dropOldTransactionsIfTooLarge()\r
+{\r
while (nextIndex > 0\r
&& totalUnitsStored > maxNumUnitsToKeep\r
&& transactions.size() > minimumTransactionsToKeep)\r
\r
bool UndoManager::undoCurrentTransactionOnly()\r
{\r
- return newTransaction ? false : undo();\r
+ if ((! newTransaction) && undo())\r
+ {\r
+ restoreStashedFutureTransactions();\r
+ return true;\r
+ }\r
+\r
+ return false;\r
}\r
\r
void UndoManager::getActionsInCurrentTransaction (Array<const UndoableAction*>& actionsFound) const\r
//==============================================================================\r
struct ActionSet;\r
friend struct ContainerDeletePolicy<ActionSet>;\r
- OwnedArray<ActionSet> transactions;\r
+ OwnedArray<ActionSet> transactions, stashedFutureTransactions;\r
String newTransactionName;\r
int totalUnitsStored, maxNumUnitsToKeep, minimumTransactionsToKeep, nextIndex;\r
bool newTransaction, reentrancyCheck;\r
ActionSet* getCurrentSet() const noexcept;\r
ActionSet* getNextSet() const noexcept;\r
- void clearFutureTransactions();\r
+ void moveFutureTransactionsToStash();\r
+ void restoreStashedFutureTransactions();\r
+ void dropOldTransactionsIfTooLarge();\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UndoManager)\r
};\r
If possible, this method should create and return a single action that does the same job as\r
this one followed by the supplied action.\r
\r
- If it's not possible to merge the two actions, the method should return zero.\r
+ If it's not possible to merge the two actions, the method should return a nullptr.\r
*/\r
virtual UndoableAction* createCoalescedAction (UndoableAction* nextAction) { ignoreUnused (nextAction); return nullptr; }\r
};\r
\r
static CachedValueTests cachedValueTests;\r
\r
-#endif
\ No newline at end of file
+#endif\r
{\r
}\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const ValueTree ValueTree::invalid;\r
+#endif\r
\r
ValueTree::ValueTree (const Identifier& type) : object (new ValueTree::SharedObject (type))\r
{\r
ValueTree ValueTree::getSibling (const int delta) const noexcept\r
{\r
if (object == nullptr || object->parent == nullptr)\r
- return invalid;\r
+ return ValueTree();\r
\r
const int index = object->parent->indexOf (*this) + delta;\r
return ValueTree (object->parent->children.getObjectPointer (index));\r
}\r
\r
+static const var& getNullVarRef() noexcept\r
+{\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ return var::null;\r
+ #else\r
+ static var nullVar;\r
+ return nullVar;\r
+ #endif\r
+}\r
+\r
const var& ValueTree::operator[] (const Identifier& name) const noexcept\r
{\r
- return object == nullptr ? var::null : object->properties[name];\r
+ return object == nullptr ? getNullVarRef() : object->properties[name];\r
}\r
\r
const var& ValueTree::getProperty (const Identifier& name) const noexcept\r
{\r
- return object == nullptr ? var::null : object->properties[name];\r
+ return object == nullptr ? getNullVarRef() : object->properties[name];\r
}\r
\r
var ValueTree::getProperty (const Identifier& name, const var& defaultReturnValue) const\r
: static_cast<SharedObject*> (nullptr));\r
}\r
\r
+ValueTree::Iterator::Iterator (const ValueTree& v, bool isEnd) noexcept\r
+ : internal (v.object != nullptr ? (isEnd ? v.object->children.end() : v.object->children.begin()) : nullptr)\r
+{}\r
+\r
+ValueTree::Iterator& ValueTree::Iterator::operator++() noexcept\r
+{\r
+ internal = static_cast<SharedObject**> (internal) + 1;\r
+ return *this;\r
+}\r
+\r
+bool ValueTree::Iterator::operator!= (const Iterator& other) const noexcept\r
+{\r
+ return internal != other.internal;\r
+}\r
+\r
+ValueTree ValueTree::Iterator::operator*() const\r
+{\r
+ return ValueTree (*static_cast<SharedObject**> (internal));\r
+}\r
+\r
+ValueTree::Iterator ValueTree::begin() const noexcept { return Iterator (*this, false); }\r
+ValueTree::Iterator ValueTree::end() const noexcept { return Iterator (*this, true); }\r
+\r
ValueTree ValueTree::getChildWithName (const Identifier& type) const\r
{\r
return object != nullptr ? object->getChildWithName (type) : ValueTree();\r
*/\r
ValueTree getSibling (int delta) const noexcept;\r
\r
+ //==============================================================================\r
+ struct Iterator\r
+ {\r
+ Iterator (const ValueTree&, bool isEnd) noexcept;\r
+ Iterator& operator++() noexcept;\r
+\r
+ bool operator!= (const Iterator&) const noexcept;\r
+ ValueTree operator*() const;\r
+\r
+ private:\r
+ void* internal;\r
+ };\r
+\r
+ /** Returns a start iterator for the children in this tree. */\r
+ Iterator begin() const noexcept;\r
+\r
+ /** Returns an end iterator for the children in this tree. */\r
+ Iterator end() const noexcept;\r
+\r
//==============================================================================\r
/** Creates an XmlElement that holds a complete image of this node and all its children.\r
\r
}\r
}\r
\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
/** An invalid ValueTree that can be used if you need to return one as an error condition, etc.\r
- This invalid object is equivalent to ValueTree created with its default constructor.\r
+ This invalid object is equivalent to ValueTree created with its default constructor, but\r
+ you should always prefer to avoid it and use ValueTree() or {} instead.\r
*/\r
static const ValueTree invalid;\r
+ #endif\r
\r
/** Returns the total number of references to the shared underlying data structure that this\r
ValueTree is using.\r
\r
ID: juce_events\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE message and event handling classes\r
description: Classes for running an application's main event loop and sending/receiving messages, timers, etc.\r
website: http://www.juce.com/juce\r
license: GPL/Commercial\r
\r
dependencies: juce_core\r
- linuxLibs: X11\r
+ linuxPackages: x11\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
}\r
#endif\r
\r
- #if JUCE_WINDOWS && JUCE_STANDALONE_APPLICATION && ! defined (_CONSOLE)\r
+ #if JUCE_WINDOWS && JUCE_STANDALONE_APPLICATION && (! defined (_CONSOLE)) && (! JUCE_MINGW)\r
if (AttachConsole (ATTACH_PARENT_PROCESS) != 0)\r
{\r
// if we've launched a GUI app from cmd.exe or PowerShell, we need this to enable printf etc.\r
- freopen("CON", "w", stdout);\r
- freopen("CON", "w", stderr);\r
- freopen("CON", "r", stdin);\r
+ // However, only reassign stdout, stderr, stdin if they have not been already opened by\r
+ // a redirect or similar.\r
+ FILE* ignore;\r
+\r
+ if (_fileno(stdout) < 0) freopen_s (&ignore, "CONOUT$", "w", stdout);\r
+ if (_fileno(stderr) < 0) freopen_s (&ignore, "CONOUT$", "w", stderr);\r
+ if (_fileno(stdin) < 0) freopen_s (&ignore, "CONIN$", "r", stdin);\r
}\r
#endif\r
\r
//==============================================================================\r
/** Types of rendering quality that can be specified when drawing images.\r
\r
- @see blendImage, Graphics::setImageResamplingQuality\r
+ @see Graphics::setImageResamplingQuality\r
*/\r
enum ResamplingQuality\r
{\r
&& (mat11 == 1.0f);\r
}\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const AffineTransform AffineTransform::identity;\r
+#endif\r
\r
//==============================================================================\r
AffineTransform AffineTransform::followedBy (const AffineTransform& other) const noexcept\r
/** Compares two transforms. */\r
bool operator!= (const AffineTransform& other) const noexcept;\r
\r
- /** A ready-to-use identity transform, which you can use to append other\r
- transformations to.\r
-\r
- e.g. @code\r
- AffineTransform myTransform = AffineTransform().rotated (.5f)\r
- .scaled (2.0f);\r
- @endcode\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
+ /** A ready-to-use identity transform.\r
+ Note that you should always avoid using a static variable like this, and\r
+ prefer AffineTransform() or {} if you need a default-constructed instance.\r
*/\r
static const AffineTransform identity;\r
+ #endif\r
\r
//==============================================================================\r
/** Transforms a 2D coordinate using this matrix. */\r
\r
/** Creates a copy of another line. */\r
Line (const Line& other) noexcept\r
- : start (other.start),\r
- end (other.end)\r
+ : start (other.start), end (other.end)\r
{\r
}\r
\r
/** Creates a line based on the coordinates of its start and end points. */\r
Line (ValueType startX, ValueType startY, ValueType endX, ValueType endY) noexcept\r
- : start (startX, startY),\r
- end (endX, endY)\r
+ : start (startX, startY), end (endX, endY)\r
{\r
}\r
\r
/** Creates a line from its start and end points. */\r
- Line (const Point<ValueType> startPoint,\r
- const Point<ValueType> endPoint) noexcept\r
- : start (startPoint),\r
- end (endPoint)\r
+ Line (Point<ValueType> startPoint,\r
+ Point<ValueType> endPoint) noexcept\r
+ : start (startPoint), end (endPoint)\r
{\r
}\r
\r
void setEnd (const Point<ValueType> newEnd) noexcept { end = newEnd; }\r
\r
/** Returns a line that is the same as this one, but with the start and end reversed, */\r
- const Line reversed() const noexcept { return Line (end, start); }\r
+ Line reversed() const noexcept { return Line (end, start); }\r
\r
/** Applies an affine transform to the line's start and end points. */\r
void applyTransform (const AffineTransform& transform) noexcept\r
*/\r
typename Point<ValueType>::FloatType getAngle() const noexcept { return start.getAngleToPoint (end); }\r
\r
+ /** Creates a line from a start point, length and angle.\r
+\r
+ This angle is the number of radians clockwise from the 12 o'clock direction,\r
+ where the line's start point is considered to be at the centre.\r
+ */\r
+ static Line fromStartAndAngle (Point<ValueType> startPoint, ValueType length, ValueType angle) noexcept\r
+ {\r
+ return Line (startPoint, startPoint.getPointOnCircumference (length, angle));\r
+ }\r
+\r
+ //==============================================================================\r
/** Casts this line to float coordinates. */\r
Line<float> toFloat() const noexcept { return Line<float> (start.toFloat(), end.toFloat()); }\r
\r
\r
//==============================================================================\r
/** Compares two lines. */\r
- bool operator== (const Line& other) const noexcept { return start == other.start && end == other.end; }\r
+ bool operator== (Line other) const noexcept { return start == other.start && end == other.end; }\r
\r
/** Compares two lines. */\r
- bool operator!= (const Line& other) const noexcept { return start != other.start || end != other.end; }\r
+ bool operator!= (Line other) const noexcept { return start != other.start || end != other.end; }\r
\r
//==============================================================================\r
/** Finds the intersection between two lines.\r
@param line the line to intersect with\r
@returns the point at which the lines intersect, even if this lies beyond the end of the lines\r
*/\r
- Point<ValueType> getIntersection (const Line& line) const noexcept\r
+ Point<ValueType> getIntersection (Line line) const noexcept\r
{\r
Point<ValueType> p;\r
findIntersection (start, end, line.start, line.end, p);\r
don't intersect, the intersection coordinates returned will still\r
be valid\r
*/\r
- bool intersects (const Line& line, Point<ValueType>& intersection) const noexcept\r
+ bool intersects (Line line, Point<ValueType>& intersection) const noexcept\r
{\r
return findIntersection (start, end, line.start, line.end, intersection);\r
}\r
\r
/** Returns true if this line intersects another. */\r
- bool intersects (const Line& other) const noexcept\r
+ bool intersects (Line other) const noexcept\r
{\r
Point<ValueType> ignored;\r
return findIntersection (start, end, other.start, other.end, ignored);\r
@returns the point's distance from the line\r
@see getPositionAlongLineOfNearestPoint\r
*/\r
- ValueType getDistanceFromPoint (const Point<ValueType> targetPoint,\r
+ ValueType getDistanceFromPoint (Point<ValueType> targetPoint,\r
Point<ValueType>& pointOnLine) const noexcept\r
{\r
const Point<ValueType> delta (end - start);\r
turn this number into a position, use getPointAlongLineProportionally().\r
@see getDistanceFromPoint, getPointAlongLineProportionally\r
*/\r
- ValueType findNearestProportionalPositionTo (const Point<ValueType> point) const noexcept\r
+ ValueType findNearestProportionalPositionTo (Point<ValueType> point) const noexcept\r
{\r
const Point<ValueType> delta (end - start);\r
const double length = delta.x * delta.x + delta.y * delta.y;\r
/** Finds the point on this line which is nearest to a given point.\r
@see getDistanceFromPoint, findNearestProportionalPositionTo\r
*/\r
- Point<ValueType> findNearestPointTo (const Point<ValueType> point) const noexcept\r
+ Point<ValueType> findNearestPointTo (Point<ValueType> point) const noexcept\r
{\r
return getPointAlongLineProportionally (findNearestProportionalPositionTo (point));\r
}\r
coordinate of this line at the given x (assuming the line extends infinitely\r
in both directions).\r
*/\r
- bool isPointAbove (const Point<ValueType> point) const noexcept\r
+ bool isPointAbove (Point<ValueType> point) const noexcept\r
{\r
return start.x != end.x\r
&& point.y < ((end.y - start.y)\r
intersection = p1.withX (p3.x + along * d2.x);\r
return along >= 0 && along <= static_cast<ValueType> (1);\r
}\r
- else if (d2.y == 0 && d1.y != 0)\r
+\r
+ if (d2.y == 0 && d1.y != 0)\r
{\r
const ValueType along = (p3.y - p1.y) / d1.y;\r
intersection = p3.withX (p1.x + along * d1.x);\r
return along >= 0 && along <= static_cast<ValueType> (1);\r
}\r
- else if (d1.x == 0 && d2.x != 0)\r
+\r
+ if (d1.x == 0 && d2.x != 0)\r
{\r
const ValueType along = (p1.x - p3.x) / d2.x;\r
intersection = p1.withY (p3.y + along * d2.y);\r
return along >= 0 && along <= static_cast<ValueType> (1);\r
}\r
- else if (d2.x == 0 && d1.x != 0)\r
+\r
+ if (d2.x == 0 && d1.x != 0)\r
{\r
const ValueType along = (p3.x - p1.x) / d1.x;\r
intersection = p3.withY (p1.y + along * d1.y);\r
return r;\r
}\r
\r
+ //==============================================================================\r
+ /** Returns the nearest point to the specified point that lies within this rectangle. */\r
+ Point<ValueType> getConstrainedPoint (Point<ValueType> point) const noexcept\r
+ {\r
+ return Point<ValueType> (jlimit (pos.x, pos.x + w, point.x),\r
+ jlimit (pos.y, pos.y + h, point.y));\r
+ }\r
+\r
+ /** Returns a point within this rectangle, specified as proportional coordinates.\r
+ The relative X and Y values should be between 0 and 1, where 0 is the left or\r
+ top of this rectangle, and 1 is the right or bottom. (Out-of-bounds values\r
+ will return a point outside the rectangle).\r
+ */\r
+ template <typename FloatType>\r
+ Point<ValueType> getRelativePoint (FloatType relativeX, FloatType relativeY) const noexcept\r
+ {\r
+ return Point<ValueType> (pos.x + static_cast<ValueType> (w * relativeX),\r
+ pos.y + static_cast<ValueType> (h * relativeY));\r
+ }\r
+\r
+ /** Returns a proportion of the width of this rectangle. */\r
+ template <typename FloatType>\r
+ ValueType proportionOfWidth (FloatType proportion) const noexcept\r
+ {\r
+ return static_cast<ValueType> (w * proportion);\r
+ }\r
+\r
+ /** Returns a proportion of the height of this rectangle. */\r
+ template <typename FloatType>\r
+ ValueType proportionOfHeight (FloatType proportion) const noexcept\r
+ {\r
+ return static_cast<ValueType> (h * proportion);\r
+ }\r
+\r
+ /** Returns a rectangle based on some proportional coordinates relative to this one.\r
+ So for example getProportion ({ 0.25f, 0.25f, 0.5f, 0.5f }) would return a rectangle\r
+ of half the original size, with the same centre.\r
+ */\r
+ template <typename FloatType>\r
+ Rectangle getProportion (Rectangle<FloatType> proportionalRect) const noexcept\r
+ {\r
+ return Rectangle (pos.x + static_cast<ValueType> (w * proportionalRect.pos.x),\r
+ pos.y + static_cast<ValueType> (h * proportionalRect.pos.y),\r
+ proportionOfWidth (proportionalRect.w),\r
+ proportionOfHeight (proportionalRect.h));\r
+ }\r
+\r
//==============================================================================\r
/** Returns true if the two rectangles are identical. */\r
bool operator== (const Rectangle& other) const noexcept { return pos == other.pos && w == other.w && h == other.h; }\r
&& pos.x + w >= other.pos.x + other.w && pos.y + h >= other.pos.y + other.h;\r
}\r
\r
- /** Returns the nearest point to the specified point that lies within this rectangle. */\r
- Point<ValueType> getConstrainedPoint (Point<ValueType> point) const noexcept\r
- {\r
- return Point<ValueType> (jlimit (pos.x, pos.x + w, point.x),\r
- jlimit (pos.y, pos.y + h, point.y));\r
- }\r
-\r
- /** Returns a point within this rectangle, specified as proportional coordinates.\r
- The relative X and Y values should be between 0 and 1, where 0 is the left or\r
- top of this rectangle, and 1 is the right or bottom. (Out-of-bounds values\r
- will return a point outside the rectangle).\r
- */\r
- Point<ValueType> getRelativePoint (double relativeX, double relativeY) const noexcept\r
- {\r
- return Point<ValueType> (pos.x + static_cast<ValueType> (w * relativeX),\r
- pos.y + static_cast<ValueType> (h * relativeY));\r
- }\r
-\r
/** Returns true if any part of another rectangle overlaps this one. */\r
bool intersects (const Rectangle& other) const noexcept\r
{\r
{\r
}\r
\r
+#if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
const Image Image::null;\r
+#endif\r
\r
int Image::getReferenceCount() const noexcept { return image == nullptr ? 0 : image->getSharedCount(); }\r
int Image::getWidth() const noexcept { return image == nullptr ? 0 : image->width; }\r
*/\r
inline bool isNull() const noexcept { return image == nullptr; }\r
\r
+ #if JUCE_ALLOW_STATIC_NULL_VARIABLES\r
/** A null Image object that can be used when you need to return an invalid image.\r
- This object is the equivalient to an Image created with the default constructor.\r
+ This object is the equivalient to an Image created with the default constructor, and\r
+ you should always prefer to use Image() or {} when you need an empty image object.\r
*/\r
static const Image null;\r
+ #endif\r
\r
//==============================================================================\r
/** Returns the image's width (in pixels). */\r
\r
ID: juce_graphics\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE graphics classes\r
description: Classes for 2D vector graphics, image loading/saving, font handling, etc.\r
website: http://www.juce.com/juce\r
dependencies: juce_events\r
OSXFrameworks: Cocoa QuartzCore\r
iOSFrameworks: CoreGraphics CoreText QuartzCore\r
- linuxLibs: X11 Xinerama Xext freetype\r
+ linuxPackages: x11 xinerama xext freetype2\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
return;\r
}\r
\r
- if (getToggleState() != shouldBeOn) // this test means that if the value is void rather than explicitly set to\r
- isOn = shouldBeOn; // false, it won't be changed unless the required value is true.\r
+ // This test is done so that if the value is void rather than explicitly set to\r
+ // false, the value won't be changed unless the required value is true.\r
+ if (getToggleState() != shouldBeOn)\r
+ {\r
+ isOn = shouldBeOn;\r
+\r
+ if (deletionWatcher == nullptr)\r
+ return;\r
+ }\r
\r
lastToggleState = shouldBeOn;\r
repaint();\r
{\r
const bool wasDown = isDown();\r
const bool wasOver = isOver();\r
- updateState (isMouseOver(), false);\r
+ updateState (isMouseOrTouchOver (e), false);\r
\r
if (wasDown && wasOver && ! triggerOnMouseDown)\r
{\r
}\r
}\r
\r
-void Button::mouseDrag (const MouseEvent&)\r
+void Button::mouseDrag (const MouseEvent& e)\r
{\r
const ButtonState oldState = buttonState;\r
- updateState (isMouseOver(), true);\r
+ updateState (isMouseOrTouchOver (e), true);\r
\r
if (autoRepeatDelay >= 0 && buttonState != oldState && isDown())\r
callbackHelper->startTimer (autoRepeatSpeed);\r
}\r
\r
+bool Button::isMouseOrTouchOver (const MouseEvent& e)\r
+{\r
+ if (e.source.isTouch())\r
+ return getLocalBounds().toFloat().contains (e.position);\r
+\r
+ return isMouseOver();\r
+}\r
+\r
void Button::focusGained (FocusChangeType)\r
{\r
updateState();\r
void sendClickMessage (const ModifierKeys&);\r
void sendStateMessage();\r
\r
+ bool isMouseOrTouchOver (const MouseEvent& e);\r
+\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Button)\r
};\r
\r
}\r
\r
HyperlinkButton::HyperlinkButton()\r
- : Button (String::empty),\r
+ : Button (String()),\r
font (14.0f, Font::underlined),\r
resizeFont (true),\r
justification (Justification::centred)\r
\r
@param name the name to give the component\r
*/\r
- explicit ImageButton (const String& name = String::empty);\r
+ explicit ImageButton (const String& name = String());\r
\r
/** Destructor. */\r
~ImageButton();\r
*/\r
\r
ToggleButton::ToggleButton()\r
- : Button (String::empty)\r
+ : Button (String())\r
{\r
setClickingTogglesState (true);\r
}\r
if (! owner.isOpaque())\r
{\r
lg.setFill (Colours::transparentBlack);\r
- lg.fillRect (imageBounds, true);\r
+ lg.fillRect (compBounds, true);\r
lg.setFill (Colours::black);\r
}\r
\r
}\r
\r
void Component::internalMouseUp (MouseInputSource source, Point<float> relativePos,\r
- Time time, const ModifierKeys oldModifiers)\r
+ Time time, const ModifierKeys oldModifiers, float pressure)\r
{\r
if (flags.mouseDownWasBlocked && isCurrentlyBlockedByAnotherModalComponent())\r
return;\r
repaint();\r
\r
const MouseEvent me (source, relativePos,\r
- oldModifiers, MouseInputSource::invalidPressure, this, this, time,\r
+ oldModifiers, pressure, this, this, time,\r
getLocalPoint (nullptr, source.getLastMouseDownPosition()),\r
source.getLastMouseDownTime(),\r
source.getNumberOfMultipleClicks(),\r
void internalMouseEnter (MouseInputSource, Point<float>, Time);\r
void internalMouseExit (MouseInputSource, Point<float>, Time);\r
void internalMouseDown (MouseInputSource, Point<float>, Time, float);\r
- void internalMouseUp (MouseInputSource, Point<float>, Time, const ModifierKeys oldModifiers);\r
+ void internalMouseUp (MouseInputSource, Point<float>, Time, const ModifierKeys oldModifiers, float);\r
void internalMouseDrag (MouseInputSource, Point<float>, Time, float);\r
void internalMouseMove (MouseInputSource, Point<float>, Time);\r
void internalMouseWheel (MouseInputSource, Point<float>, Time, const MouseWheelDetails&);\r
Desktop::~Desktop()\r
{\r
setScreenSaverEnabled (true);\r
+ animator.cancelAllAnimations (false);\r
\r
jassert (instance == this);\r
instance = nullptr;\r
bounds (other.bounds),\r
cornerSize (other.cornerSize)\r
{\r
+ rebuildPath();\r
}\r
\r
DrawableRectangle::~DrawableRectangle()\r
/** Returns one of the files in the list.\r
\r
@param index should be less than getNumFiles(). If this is out-of-range, the\r
- return value will be File::nonexistent\r
+ return value will be a default File() object\r
@see getNumFiles, getFileInfo\r
*/\r
File getFile (int index) const;\r
const File& initialFileOrDirectory,\r
const FileFilter* fileFilter_,\r
FilePreviewComponent* previewComp_)\r
- : FileFilter (String::empty),\r
+ : FileFilter (String()),\r
fileFilter (fileFilter_),\r
flags (flags_),\r
previewComp (previewComp_),\r
\r
String filename;\r
\r
- if (initialFileOrDirectory == File::nonexistent)\r
+ if (initialFileOrDirectory == File())\r
{\r
currentRoot = File::getCurrentWorkingDirectory();\r
}\r
setRoot (f);\r
\r
if ((flags & canSelectDirectories) != 0 && (flags & doNotClearFileNameOnRootChange) == 0)\r
- filenameBox.setText (String::empty);\r
+ filenameBox.setText (String());\r
}\r
else\r
{\r
rootNames.add (name);\r
}\r
\r
- rootPaths.add (String::empty);\r
- rootNames.add (String::empty);\r
+ rootPaths.add (String());\r
+ rootNames.add (String());\r
\r
rootPaths.add (File::getSpecialLocation (File::userDocumentsDirectory).getFullPathName());\r
rootNames.add (TRANS("Documents"));\r
rootPaths.add (File::getSpecialLocation (File::userDesktopDirectory).getFullPathName());\r
rootNames.add (TRANS("Desktop"));\r
\r
- rootPaths.add (String::empty);\r
- rootNames.add (String::empty);\r
+ rootPaths.add (String());\r
+ rootNames.add (String());\r
\r
Array<File> volumes;\r
File vol ("/Volumes");\r
specify the component's behaviour. The flags must contain either openMode\r
or saveMode, and canSelectFiles and/or canSelectDirectories.\r
@param initialFileOrDirectory The file or directory that should be selected when the component begins.\r
- If this is File::nonexistent, a default directory will be chosen.\r
+ If this is File(), a default directory will be chosen.\r
@param fileFilter an optional filter to use to determine which files are shown.\r
If this is nullptr then all files are displayed. Note that a pointer\r
is kept internally to this object, so make sure that it is not deleted\r
tell the user what's going on\r
@param initialFileOrDirectory the file or directory that should be selected\r
when the dialog box opens. If this parameter is\r
- set to File::nonexistent, a sensible default\r
- directory will be used instead.\r
+ set to File(), a sensible default directory will\r
+ be used instead.\r
@param filePatternsAllowed a set of file patterns to specify which files\r
can be selected - each pattern should be\r
separated by a comma or semi-colon, e.g. "*" or\r
@see browseForFileToOpen, browseForFileToSave, browseForDirectory\r
*/\r
FileChooser (const String& dialogBoxTitle,\r
- const File& initialFileOrDirectory = File::nonexistent,\r
- const String& filePatternsAllowed = String::empty,\r
+ const File& initialFileOrDirectory = File(),\r
+ const String& filePatternsAllowed = String(),\r
bool useOSNativeDialogBox = true,\r
bool treatFilePackagesAsDirectories = false);\r
\r
TRANS("Please enter the name for the folder"),\r
AlertWindow::NoIcon, this);\r
\r
- aw->addTextEditor ("Folder Name", String::empty, String::empty, false);\r
+ aw->addTextEditor ("Folder Name", String(), String(), false);\r
aw->addButton (TRANS("Create Folder"), 1, KeyPress (KeyPress::returnKey));\r
aw->addButton (TRANS("Cancel"), 0, KeyPress (KeyPress::escapeKey));\r
\r
\r
@code\r
{\r
- WildcardFileFilter wildcardFilter ("*.foo", String::empty, "Foo files");\r
+ WildcardFileFilter wildcardFilter ("*.foo", String(), "Foo files");\r
\r
FileBrowserComponent browser (FileBrowserComponent::canSelectFiles,\r
- File::nonexistent,\r
+ File(),\r
&wildcardFilter,\r
nullptr);\r
\r
\r
//==============================================================================\r
FileListComponent::FileListComponent (DirectoryContentsList& listToShow)\r
- : ListBox (String::empty, nullptr),\r
+ : ListBox (String(), nullptr),\r
DirectoryContentsDisplayComponent (listToShow)\r
{\r
setModel (this);\r
repaint();\r
}\r
\r
- if (file != File::nonexistent && icon.isNull() && ! isDirectory)\r
+ if (file != File() && icon.isNull() && ! isDirectory)\r
{\r
updateIcon (true);\r
\r
/** Called to indicate that the user's currently selected file has changed.\r
\r
@param newSelectedFile the newly selected file or directory, which may be\r
- File::nonexistent if none is selected.\r
+ a defualt File() object if none is selected.\r
*/\r
virtual void selectedFileChanged (const File& newSelectedFile) = 0;\r
\r
: addButton ("+"),\r
removeButton ("-"),\r
changeButton (TRANS ("change...")),\r
- upButton (String::empty, DrawableButton::ImageOnButtonBackground),\r
- downButton (String::empty, DrawableButton::ImageOnButtonBackground)\r
+ upButton (String(), DrawableButton::ImageOnButtonBackground),\r
+ downButton (String(), DrawableButton::ImageOnButtonBackground)\r
{\r
listBox.setModel (this);\r
addAndMakeVisible (listBox);\r
{\r
File start (defaultBrowseTarget);\r
\r
- if (start == File::nonexistent)\r
+ if (start == File())\r
start = path [0];\r
\r
- if (start == File::nonexistent)\r
+ if (start == File())\r
start = File::getCurrentWorkingDirectory();\r
\r
#if JUCE_MODAL_LOOPS_PERMITTED\r
\r
void paintItem (Graphics& g, int width, int height) override\r
{\r
- if (file != File::nonexistent)\r
+ if (file != File())\r
{\r
updateIcon (true);\r
\r
if (const FileListTreeItem* const item = dynamic_cast<const FileListTreeItem*> (getSelectedItem (index)))\r
return item->file;\r
\r
- return File::nonexistent;\r
+ return File();\r
}\r
\r
void FileTreeComponent::deselectAllFiles()\r
/** Returns the number of files the user has got selected.\r
@see getSelectedFile\r
*/\r
- int getNumSelectedFiles() const { return TreeView::getNumSelectedItems(); }\r
+ int getNumSelectedFiles() const override { return TreeView::getNumSelectedItems(); }\r
\r
/** Returns one of the files that the user has currently selected.\r
The index should be in the range 0 to (getNumSelectedFiles() - 1).\r
@see getNumSelectedFiles\r
*/\r
- File getSelectedFile (int index = 0) const;\r
+ File getSelectedFile (int index = 0) const override;\r
\r
/** Deselects any files that are currently selected. */\r
- void deselectAllFiles();\r
+ void deselectAllFiles() override;\r
\r
/** Scrolls the list to the top. */\r
- void scrollToTop();\r
+ void scrollToTop() override;\r
\r
/** If the specified file is in the list, it will become the only selected item\r
(and if the file isn't in the list, all other items will be deselected). */\r
- void setSelectedFile (const File&);\r
+ void setSelectedFile (const File&) override;\r
\r
/** Updates the files in the list. */\r
void refresh();\r
\r
File FilenameComponent::getLocationToBrowse()\r
{\r
- return getCurrentFile() == File::nonexistent ? defaultBrowseFile\r
- : getCurrentFile();\r
+ return getCurrentFile() == File() ? defaultBrowseFile\r
+ : getCurrentFile();\r
}\r
\r
void FilenameComponent::buttonClicked (Button*)\r
#include "misc/juce_BubbleComponent.cpp"\r
#include "misc/juce_DropShadower.cpp"\r
\r
+// these classes are C++11-only\r
+#if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS && JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS && JUCE_COMPILER_SUPPORTS_LAMBDAS\r
+ #include "layout/juce_FlexBox.cpp"\r
+#endif\r
+\r
#if JUCE_IOS || JUCE_WINDOWS\r
#include "native/juce_MultiTouchMapper.h"\r
#endif\r
\r
ID: juce_gui_basics\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE GUI core classes\r
description: Basic user-interface components and related classes.\r
website: http://www.juce.com/juce\r
dependencies: juce_events juce_graphics juce_data_structures\r
OSXFrameworks: Cocoa Carbon QuartzCore\r
iOSFrameworks: UIKit\r
- linuxLibs: X11 Xinerama Xext\r
+ linuxPackages: x11 xinerama xext\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
class KeyPressMappingSet;\r
class ApplicationCommandManagerListener;\r
class DrawableButton;\r
+class FlexBox;\r
\r
#include "mouse/juce_MouseCursor.h"\r
#include "mouse/juce_MouseListener.h"\r
#include "lookandfeel/juce_LookAndFeel_V1.h"\r
#include "lookandfeel/juce_LookAndFeel_V3.h"\r
\r
+// these classes are C++11-only\r
+#if JUCE_COMPILER_SUPPORTS_MOVE_SEMANTICS && JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS && JUCE_COMPILER_SUPPORTS_LAMBDAS\r
+#include "layout/juce_FlexItem.h"\r
+#include "layout/juce_FlexBox.h"\r
+#endif\r
+\r
}\r
\r
#endif // JUCE_GUI_BASICS_H_INCLUDED\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2015 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ ------------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+struct FlexBoxLayoutCalculation\r
+{\r
+ using Coord = double;\r
+\r
+ FlexBoxLayoutCalculation (const FlexBox& fb, Coord w, Coord h)\r
+ : owner (fb), parentWidth (w), parentHeight (h), numItems (owner.items.size()),\r
+ isRowDirection (fb.flexDirection == FlexBox::Direction::row\r
+ || fb.flexDirection == FlexBox::Direction::rowReverse),\r
+ containerLineLength (isRowDirection ? parentWidth : parentHeight)\r
+ {\r
+ lineItems.calloc ((size_t) (numItems * numItems));\r
+ lineInfo.calloc ((size_t) numItems);\r
+ }\r
+\r
+ struct ItemWithState\r
+ {\r
+ ItemWithState (FlexItem& source) noexcept : item (&source) {}\r
+\r
+ FlexItem* item;\r
+ Coord lockedWidth = 0, lockedHeight = 0;\r
+ Coord lockedMarginLeft = 0, lockedMarginRight = 0, lockedMarginTop = 0, lockedMarginBottom = 0;\r
+ Coord preferredWidth = 0, preferredHeight = 0;\r
+ bool locked = false;\r
+\r
+ void resetItemLockedSize() noexcept\r
+ {\r
+ lockedWidth = preferredWidth;\r
+ lockedHeight = preferredHeight;\r
+ lockedMarginLeft = getValueOrZeroIfAuto (item->margin.left);\r
+ lockedMarginRight = getValueOrZeroIfAuto (item->margin.right);\r
+ lockedMarginTop = getValueOrZeroIfAuto (item->margin.top);\r
+ lockedMarginBottom = getValueOrZeroIfAuto (item->margin.bottom);\r
+ }\r
+\r
+ void setWidthChecked (Coord newWidth) noexcept\r
+ {\r
+ if (isAssigned (item->maxWidth)) newWidth = jmin (newWidth, static_cast<Coord> (item->maxWidth));\r
+ if (isAssigned (item->minWidth)) newWidth = jmax (newWidth, static_cast<Coord> (item->minWidth));\r
+\r
+ lockedWidth = newWidth;\r
+ }\r
+\r
+ void setHeightChecked (Coord newHeight) noexcept\r
+ {\r
+ if (isAssigned (item->maxHeight)) newHeight = jmin (newHeight, (Coord) item->maxHeight);\r
+ if (isAssigned (item->minHeight)) newHeight = jmax (newHeight, (Coord) item->minHeight);\r
+\r
+ lockedHeight = newHeight;\r
+ }\r
+ };\r
+\r
+ struct RowInfo\r
+ {\r
+ int numItems;\r
+ Coord crossSize, lineY, totalLength;\r
+ };\r
+\r
+ const FlexBox& owner;\r
+ const Coord parentWidth, parentHeight;\r
+ const int numItems;\r
+ const bool isRowDirection;\r
+ const Coord containerLineLength;\r
+\r
+ int numberOfRows = 1;\r
+ Coord containerCrossLength = 0;\r
+\r
+ HeapBlock<ItemWithState*> lineItems;\r
+ HeapBlock<RowInfo> lineInfo;\r
+ Array<ItemWithState> itemStates;\r
+\r
+ ItemWithState& getItem (int x, int y) const noexcept { return *lineItems[y * numItems + x]; }\r
+\r
+ static bool isAuto (Coord value) noexcept { return value == FlexItem::autoValue; }\r
+ static bool isAssigned (Coord value) noexcept { return value != FlexItem::notAssigned; }\r
+ static Coord getValueOrZeroIfAuto (Coord value) noexcept { return isAuto (value) ? Coord() : value; }\r
+\r
+ //==============================================================================\r
+ void createStates()\r
+ {\r
+ itemStates.ensureStorageAllocated (numItems);\r
+\r
+ for (auto& item : owner.items)\r
+ itemStates.add (item);\r
+\r
+ itemStates.sort (*this, true);\r
+\r
+ for (auto& item : itemStates)\r
+ {\r
+ item.preferredWidth = getPreferredWidth (item);\r
+ item.preferredHeight = getPreferredHeight (item);\r
+ }\r
+ }\r
+\r
+ void initialiseItems() noexcept\r
+ {\r
+ if (owner.flexWrap == FlexBox::Wrap::noWrap) // for single-line, all items go in line 1\r
+ {\r
+ lineInfo[0].numItems = numItems;\r
+ int i = 0;\r
+\r
+ for (auto& item : itemStates)\r
+ {\r
+ item.resetItemLockedSize();\r
+ lineItems[i++] = &item;\r
+ }\r
+ }\r
+ else // if multi-line, group the flexbox items into multiple lines\r
+ {\r
+ auto currentLength = containerLineLength;\r
+ int column = 0, row = 0;\r
+\r
+ for (auto& item : itemStates)\r
+ {\r
+ item.resetItemLockedSize();\r
+\r
+ const auto flexitemLength = getItemLength (item);\r
+\r
+ if (flexitemLength > currentLength)\r
+ {\r
+ if (++row >= numItems)\r
+ break;\r
+\r
+ column = 0;\r
+ currentLength = containerLineLength;\r
+ numberOfRows = jmax (numberOfRows, row + 1);\r
+ }\r
+\r
+ currentLength -= flexitemLength;\r
+ lineItems[row * numItems + column] = &item;\r
+ ++column;\r
+ lineInfo[row].numItems = jmax (lineInfo[row].numItems, column);\r
+ }\r
+ }\r
+ }\r
+\r
+ void resolveFlexibleLengths() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ resetRowItems (row);\r
+\r
+ for (int maxLoops = numItems; --maxLoops >= 0;)\r
+ {\r
+ resetUnlockedRowItems (row);\r
+\r
+ if (layoutRowItems (row))\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ void resolveAutoMarginsOnMainAxis() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ Coord allFlexGrow = 0;\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ const auto remainingLength = containerLineLength - lineInfo[row].totalLength;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isRowDirection)\r
+ {\r
+ if (isAuto (item.item->margin.left)) ++allFlexGrow;\r
+ if (isAuto (item.item->margin.right)) ++allFlexGrow;\r
+ }\r
+ else\r
+ {\r
+ if (isAuto (item.item->margin.top)) ++allFlexGrow;\r
+ if (isAuto (item.item->margin.bottom)) ++allFlexGrow;\r
+ }\r
+ }\r
+\r
+ auto changeUnitWidth = remainingLength / allFlexGrow;\r
+\r
+ if (changeUnitWidth > 0)\r
+ {\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isRowDirection)\r
+ {\r
+ if (isAuto (item.item->margin.left)) item.lockedMarginLeft = changeUnitWidth;\r
+ if (isAuto (item.item->margin.right)) item.lockedMarginRight = changeUnitWidth;\r
+ }\r
+ else\r
+ {\r
+ if (isAuto (item.item->margin.top)) item.lockedMarginTop = changeUnitWidth;\r
+ if (isAuto (item.item->margin.bottom)) item.lockedMarginBottom = changeUnitWidth;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void calculateCrossSizesByLine() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ Coord maxSize = 0;\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ maxSize = jmax (maxSize, isRowDirection ? item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom\r
+ : item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight);\r
+ }\r
+\r
+ lineInfo[row].crossSize = maxSize;\r
+ }\r
+ }\r
+\r
+ void calculateCrossSizeOfAllItems() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isAssigned (item.item->maxHeight) && item.lockedHeight > item.item->maxHeight)\r
+ item.lockedHeight = item.item->maxHeight;\r
+\r
+ if (isAssigned (item.item->maxWidth) && item.lockedWidth > item.item->maxWidth)\r
+ item.lockedWidth = item.item->maxWidth;\r
+ }\r
+ }\r
+ }\r
+\r
+ void alignLinesPerAlignContent() noexcept\r
+ {\r
+ containerCrossLength = isRowDirection ? parentHeight : parentWidth;\r
+\r
+ if (owner.alignContent == FlexBox::AlignContent::flexStart)\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ for (int row2 = row; row2 < numberOfRows; ++row2)\r
+ lineInfo[row].lineY = row == 0 ? 0 : lineInfo[row - 1].lineY + lineInfo[row - 1].crossSize;\r
+ }\r
+ else if (owner.alignContent == FlexBox::AlignContent::flexEnd)\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ Coord crossHeights = 0;\r
+\r
+ for (int row2 = row; row2 < numberOfRows; ++row2)\r
+ crossHeights += lineInfo[row2].crossSize;\r
+\r
+ lineInfo[row].lineY = containerCrossLength - crossHeights;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ Coord totalHeight = 0;\r
+\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ totalHeight += lineInfo[row].crossSize;\r
+\r
+ if (owner.alignContent == FlexBox::AlignContent::stretch)\r
+ {\r
+ const auto difference = jmax (Coord(), (containerCrossLength - totalHeight) / numberOfRows);\r
+\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ lineInfo[row].crossSize += difference;\r
+ lineInfo[row].lineY = row == 0 ? 0 : lineInfo[row - 1].lineY + lineInfo[row - 1].crossSize;\r
+ }\r
+ }\r
+ else if (owner.alignContent == FlexBox::AlignContent::center)\r
+ {\r
+ const auto additionalength = (containerCrossLength - totalHeight) / 2;\r
+\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ lineInfo[row].lineY = row == 0 ? additionalength : lineInfo[row - 1].lineY + lineInfo[row - 1].crossSize;\r
+ }\r
+ else if (owner.alignContent == FlexBox::AlignContent::spaceBetween)\r
+ {\r
+ const auto additionalength = numberOfRows <= 1 ? Coord() : jmax (Coord(), (containerCrossLength - totalHeight)\r
+ / static_cast<Coord> (numberOfRows - 1));\r
+ lineInfo[0].lineY = 0;\r
+\r
+ for (int row = 1; row < numberOfRows; ++row)\r
+ lineInfo[row].lineY += additionalength + lineInfo[row - 1].lineY + lineInfo[row - 1].crossSize;\r
+ }\r
+ else if (owner.alignContent == FlexBox::AlignContent::spaceAround)\r
+ {\r
+ const auto additionalength = numberOfRows <= 1 ? Coord() : jmax (Coord(), (containerCrossLength - totalHeight)\r
+ / static_cast<Coord> (2 + (2 * (numberOfRows - 1))));\r
+\r
+ lineInfo[0].lineY = additionalength;\r
+\r
+ for (int row = 1; row < numberOfRows; ++row)\r
+ lineInfo[row].lineY += (2 * additionalength) + lineInfo[row - 1].lineY + lineInfo[row - 1].crossSize;\r
+ }\r
+ }\r
+ }\r
+\r
+ void resolveAutoMarginsOnCrossAxis() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ const auto crossSizeForLine = lineInfo[row].crossSize;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isRowDirection)\r
+ {\r
+ if (isAuto (item.item->margin.top) && isAuto (item.item->margin.bottom))\r
+ item.lockedMarginTop = (crossSizeForLine - item.lockedHeight) / 2;\r
+ else if (isAuto (item.item->margin.top))\r
+ item.lockedMarginTop = crossSizeForLine - item.lockedHeight - item.item->margin.bottom;\r
+ }\r
+ else if (isAuto (item.item->margin.left) && isAuto (item.item->margin.right))\r
+ {\r
+ item.lockedMarginLeft = jmax (Coord(), (crossSizeForLine - item.lockedWidth) / 2);\r
+ }\r
+ else if (isAuto (item.item->margin.top))\r
+ {\r
+ item.lockedMarginLeft = jmax (Coord(), crossSizeForLine - item.lockedHeight - item.item->margin.bottom);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void alignItemsInCrossAxisInLinesPerAlignItems() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ const auto lineSize = lineInfo[row].crossSize;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (item.item->alignSelf == FlexItem::AlignSelf::autoAlign)\r
+ {\r
+ if (owner.alignItems == FlexBox::AlignItems::stretch)\r
+ {\r
+ item.lockedMarginTop = item.item->margin.top;\r
+\r
+ if (isRowDirection)\r
+ item.setHeightChecked (lineSize - item.item->margin.top - item.item->margin.bottom);\r
+ }\r
+ else if (owner.alignItems == FlexBox::AlignItems::flexStart)\r
+ {\r
+ item.lockedMarginTop = item.item->margin.top;\r
+ }\r
+ else if (owner.alignItems == FlexBox::AlignItems::flexEnd)\r
+ {\r
+ item.lockedMarginTop = lineSize - item.lockedHeight - item.item->margin.bottom;\r
+ }\r
+ else if (owner.alignItems == FlexBox::AlignItems::center)\r
+ {\r
+ item.lockedMarginTop = (lineSize - item.lockedHeight - item.item->margin.top - item.item->margin.bottom) / 2;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void alignLinesPerAlignSelf() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ const auto lineSize = lineInfo[row].crossSize;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (! isAuto (item.item->margin.top))\r
+ {\r
+ if (item.item->alignSelf == FlexItem::AlignSelf::flexStart)\r
+ {\r
+ if (isRowDirection)\r
+ item.lockedMarginTop = item.item->margin.top;\r
+ else\r
+ item.lockedMarginLeft = item.item->margin.left;\r
+ }\r
+ else if (item.item->alignSelf == FlexItem::AlignSelf::flexEnd)\r
+ {\r
+ if (isRowDirection)\r
+ item.lockedMarginTop = lineSize - item.lockedHeight - item.item->margin.bottom;\r
+ else\r
+ item.lockedMarginLeft = lineSize - item.lockedWidth - item.item->margin.right;\r
+ }\r
+ else if (item.item->alignSelf == FlexItem::AlignSelf::center)\r
+ {\r
+ if (isRowDirection)\r
+ item.lockedMarginTop = item.item->margin.top + (lineSize - item.lockedHeight - item.item->margin.top - item.item->margin.bottom) / 2;\r
+ else\r
+ item.lockedMarginLeft = item.item->margin.left + (lineSize - item.lockedWidth - item.item->margin.left - item.item->margin.right) / 2;\r
+ }\r
+ else if (item.item->alignSelf == FlexItem::AlignSelf::stretch)\r
+ {\r
+ item.lockedMarginTop = item.item->margin.top;\r
+ item.lockedMarginLeft = item.item->margin.left;\r
+\r
+ if (isRowDirection)\r
+ item.setHeightChecked (isAssigned (item.item->height) ? getPreferredHeight (item)\r
+ : lineSize - item.item->margin.top - item.item->margin.bottom);\r
+ else\r
+ item.setWidthChecked (isAssigned (item.item->width) ? getPreferredWidth (item)\r
+ : lineSize - item.item->margin.left - item.item->margin.right);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void alignItemsByJustifyContent() noexcept\r
+ {\r
+ Coord additionalMarginRight = 0, additionalMarginLeft = 0;\r
+\r
+ recalculateTotalItemLengthPerLineArray();\r
+\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ Coord x = 0;\r
+\r
+ if (owner.justifyContent == FlexBox::JustifyContent::flexEnd)\r
+ {\r
+ x = containerLineLength - lineInfo[row].totalLength;\r
+ }\r
+ else if (owner.justifyContent == FlexBox::JustifyContent::center)\r
+ {\r
+ x = (containerLineLength - lineInfo[row].totalLength) / 2;\r
+ }\r
+ else if (owner.justifyContent == FlexBox::JustifyContent::spaceBetween)\r
+ {\r
+ additionalMarginRight\r
+ = jmax (Coord(), (containerLineLength - lineInfo[row].totalLength) / jmax (1, numColumns - 1));\r
+ }\r
+ else if (owner.justifyContent == FlexBox::JustifyContent::spaceAround)\r
+ {\r
+ additionalMarginLeft = additionalMarginRight\r
+ = jmax (Coord(), (containerLineLength - lineInfo[row].totalLength) / jmax (1, 2 * numColumns));\r
+ }\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isRowDirection)\r
+ {\r
+ item.lockedMarginLeft += additionalMarginLeft;\r
+ item.lockedMarginRight += additionalMarginRight;\r
+ item.item->currentBounds.setPosition ((float) (x + item.lockedMarginLeft), (float) item.lockedMarginTop);\r
+ x += item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight;\r
+ }\r
+ else\r
+ {\r
+ item.lockedMarginTop += additionalMarginLeft;\r
+ item.lockedMarginBottom += additionalMarginRight;\r
+ item.item->currentBounds.setPosition ((float) item.lockedMarginLeft, (float) (x + item.lockedMarginTop));\r
+ x += item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void layoutAllItems() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ const auto lineY = lineInfo[row].lineY;\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (isRowDirection)\r
+ item.item->currentBounds.setY ((float) (lineY + item.lockedMarginTop));\r
+ else\r
+ item.item->currentBounds.setX ((float) (lineY + item.lockedMarginLeft));\r
+\r
+ item.item->currentBounds.setSize ((float) item.lockedWidth,\r
+ (float) item.lockedHeight);\r
+ }\r
+ }\r
+\r
+ reverseLocations();\r
+ reverseWrap();\r
+ }\r
+\r
+ static int compareElements (const ItemWithState& i1, const ItemWithState& i2) noexcept\r
+ {\r
+ return i1.item->order < i2.item->order ? -1 : (i2.item->order < i1.item->order ? 1 : 0);\r
+ }\r
+\r
+private:\r
+ void resetRowItems (const int row) noexcept\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ resetItem (getItem (column, row));\r
+ }\r
+\r
+ void resetUnlockedRowItems (const int row) noexcept\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (! item.locked)\r
+ resetItem (item);\r
+ }\r
+ }\r
+\r
+ void resetItem (ItemWithState& item) noexcept\r
+ {\r
+ item.locked = false;\r
+ item.lockedWidth = getPreferredWidth (item);\r
+ item.lockedHeight = getPreferredHeight (item);\r
+ }\r
+\r
+ bool layoutRowItems (const int row) noexcept\r
+ {\r
+ const auto numColumns = lineInfo[row].numItems;\r
+ auto flexContainerLength = containerLineLength;\r
+ Coord totalItemsLength = 0, totalFlexGrow = 0, totalFlexShrink = 0;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ const auto& item = getItem (column, row);\r
+\r
+ if (item.locked)\r
+ {\r
+ flexContainerLength -= getItemLength (item);\r
+ }\r
+ else\r
+ {\r
+ totalItemsLength += getItemLength (item);\r
+ totalFlexGrow += item.item->flexGrow;\r
+ totalFlexShrink += item.item->flexShrink;\r
+ }\r
+ }\r
+\r
+ Coord changeUnit = 0;\r
+ const auto difference = flexContainerLength - totalItemsLength;\r
+ const bool positiveFlexibility = difference > 0;\r
+\r
+ if (positiveFlexibility)\r
+ {\r
+ if (totalFlexGrow != 0)\r
+ changeUnit = difference / totalFlexGrow;\r
+ }\r
+ else\r
+ {\r
+ if (totalFlexShrink != 0)\r
+ changeUnit = difference / totalFlexShrink;\r
+ }\r
+\r
+ bool ok = true;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ auto& item = getItem (column, row);\r
+\r
+ if (! item.locked)\r
+ if (! addToItemLength (item, (positiveFlexibility ? item.item->flexGrow\r
+ : item.item->flexShrink) * changeUnit, row))\r
+ ok = false;\r
+ }\r
+\r
+ return ok;\r
+ }\r
+\r
+ void recalculateTotalItemLengthPerLineArray() noexcept\r
+ {\r
+ for (int row = 0; row < numberOfRows; ++row)\r
+ {\r
+ lineInfo[row].totalLength = 0;\r
+ const auto numColumns = lineInfo[row].numItems;\r
+\r
+ for (int column = 0; column < numColumns; ++column)\r
+ {\r
+ const auto& item = getItem (column, row);\r
+\r
+ lineInfo[row].totalLength += isRowDirection ? item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight\r
+ : item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom;\r
+ }\r
+ }\r
+ }\r
+\r
+ void reverseLocations() noexcept\r
+ {\r
+ if (owner.flexDirection == FlexBox::Direction::rowReverse)\r
+ {\r
+ for (auto& item : owner.items)\r
+ item.currentBounds.setX ((float) (containerLineLength - item.currentBounds.getRight()));\r
+ }\r
+ else if (owner.flexDirection == FlexBox::Direction::columnReverse)\r
+ {\r
+ for (auto& item : owner.items)\r
+ item.currentBounds.setY ((float) (containerLineLength - item.currentBounds.getBottom()));\r
+ }\r
+ }\r
+\r
+ void reverseWrap() noexcept\r
+ {\r
+ if (owner.flexWrap == FlexBox::Wrap::wrapReverse)\r
+ {\r
+ if (isRowDirection)\r
+ {\r
+ for (auto& item : owner.items)\r
+ item.currentBounds.setY ((float) (containerCrossLength - item.currentBounds.getBottom()));\r
+ }\r
+ else\r
+ {\r
+ for (auto& item : owner.items)\r
+ item.currentBounds.setX ((float) (containerCrossLength - item.currentBounds.getRight()));\r
+ }\r
+ }\r
+ }\r
+\r
+ Coord getItemLength (const ItemWithState& item) const noexcept\r
+ {\r
+ return isRowDirection ? item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight\r
+ : item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom;\r
+ }\r
+\r
+ Coord getItemCrossSize (const ItemWithState& item) const noexcept\r
+ {\r
+ return isRowDirection ? item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom\r
+ : item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight;\r
+ }\r
+\r
+ bool addToItemLength (ItemWithState& item, const Coord length, int row) const noexcept\r
+ {\r
+ bool ok = false;\r
+\r
+ if (isRowDirection)\r
+ {\r
+ const auto prefWidth = getPreferredWidth (item);\r
+\r
+ if (isAssigned (item.item->maxWidth) && item.item->maxWidth < prefWidth + length)\r
+ {\r
+ item.lockedWidth = item.item->maxWidth;\r
+ item.locked = true;\r
+ }\r
+ else if (isAssigned (prefWidth) && item.item->minWidth > prefWidth + length)\r
+ {\r
+ item.lockedWidth = item.item->minWidth;\r
+ item.locked = true;\r
+ }\r
+ else\r
+ {\r
+ ok = true;\r
+ item.lockedWidth = prefWidth + length;\r
+ }\r
+\r
+ lineInfo[row].totalLength += item.lockedWidth + item.lockedMarginLeft + item.lockedMarginRight;\r
+ }\r
+ else\r
+ {\r
+ const auto prefHeight = getPreferredHeight (item);\r
+\r
+ if (isAssigned (item.item->maxHeight) && item.item->maxHeight < prefHeight + length)\r
+ {\r
+ item.lockedHeight = item.item->maxHeight;\r
+ item.locked = true;\r
+ }\r
+ else if (isAssigned (prefHeight) && item.item->minHeight > prefHeight + length)\r
+ {\r
+ item.lockedHeight = item.item->minHeight;\r
+ item.locked = true;\r
+ }\r
+ else\r
+ {\r
+ ok = true;\r
+ item.lockedHeight = prefHeight + length;\r
+ }\r
+\r
+ lineInfo[row].totalLength += item.lockedHeight + item.lockedMarginTop + item.lockedMarginBottom;\r
+ }\r
+\r
+ return ok;\r
+ }\r
+\r
+ Coord getPreferredWidth (const ItemWithState& itemWithState) const noexcept\r
+ {\r
+ const auto& item = *itemWithState.item;\r
+ auto preferredWidth = (item.flexBasis > 0 && isRowDirection)\r
+ ? item.flexBasis\r
+ : (isAssigned (item.width) ? item.width : item.minWidth);\r
+\r
+ if (isAssigned (item.minWidth) && preferredWidth < item.minWidth) return item.minWidth;\r
+ if (isAssigned (item.maxWidth) && preferredWidth > item.maxWidth) return item.maxWidth;\r
+\r
+ return preferredWidth;\r
+ }\r
+\r
+ Coord getPreferredHeight (const ItemWithState& itemWithState) const noexcept\r
+ {\r
+ const auto& item = *itemWithState.item;\r
+ auto preferredHeight = (item.flexBasis > 0 && ! isRowDirection)\r
+ ? item.flexBasis\r
+ : (isAssigned (item.height) ? item.height : item.minHeight);\r
+\r
+ if (isAssigned (item.minHeight) && preferredHeight < item.minHeight) return item.minHeight;\r
+ if (isAssigned (item.maxHeight) && preferredHeight > item.maxHeight) return item.maxHeight;\r
+\r
+ return preferredHeight;\r
+ }\r
+};\r
+\r
+//==============================================================================\r
+FlexBox::FlexBox() noexcept {}\r
+FlexBox::~FlexBox() noexcept {}\r
+\r
+FlexBox::FlexBox (JustifyContent jc) noexcept : justifyContent (jc) {}\r
+\r
+FlexBox::FlexBox (Direction d, Wrap w, AlignContent ac, AlignItems ai, JustifyContent jc) noexcept\r
+ : flexDirection (d), flexWrap (w), alignContent (ac), alignItems (ai), justifyContent (jc)\r
+{}\r
+\r
+void FlexBox::performLayout (Rectangle<float> targetArea)\r
+{\r
+ if (! items.isEmpty())\r
+ {\r
+ FlexBoxLayoutCalculation layout (*this, targetArea.getWidth(), targetArea.getHeight());\r
+\r
+ layout.createStates();\r
+ layout.initialiseItems();\r
+ layout.resolveFlexibleLengths();\r
+ layout.resolveAutoMarginsOnMainAxis();\r
+ layout.calculateCrossSizesByLine();\r
+ layout.calculateCrossSizeOfAllItems();\r
+ layout.alignLinesPerAlignContent();\r
+ layout.resolveAutoMarginsOnCrossAxis();\r
+ layout.alignItemsInCrossAxisInLinesPerAlignItems();\r
+ layout.alignLinesPerAlignSelf();\r
+ layout.alignItemsByJustifyContent();\r
+ layout.layoutAllItems();\r
+\r
+ for (auto& item : items)\r
+ {\r
+ item.currentBounds += targetArea.getPosition();\r
+\r
+ if (auto comp = item.associatedComponent)\r
+ comp->setBounds (item.currentBounds.getSmallestIntegerContainer());\r
+\r
+ if (auto box = item.associatedFlexBox)\r
+ box->performLayout (item.currentBounds);\r
+ }\r
+ }\r
+}\r
+\r
+void FlexBox::performLayout (Rectangle<int> targetArea)\r
+{\r
+ performLayout (targetArea.toFloat());\r
+}\r
+\r
+//==============================================================================\r
+FlexItem::FlexItem() noexcept {}\r
+FlexItem::FlexItem (float w, float h) noexcept : currentBounds (w, h), minWidth (w), minHeight (h) {}\r
+FlexItem::FlexItem (float w, float h, Component& c) noexcept : FlexItem (w, h) { associatedComponent = &c; }\r
+FlexItem::FlexItem (float w, float h, FlexBox& fb) noexcept : FlexItem (w, h) { associatedFlexBox = &fb; }\r
+FlexItem::FlexItem (Component& c) noexcept : associatedComponent (&c) {}\r
+FlexItem::FlexItem (FlexBox& fb) noexcept : associatedFlexBox (&fb) {}\r
+\r
+FlexItem::Margin::Margin() noexcept : left(), right(), top(), bottom() {}\r
+FlexItem::Margin::Margin (float v) noexcept : left (v), right (v), top (v), bottom (v) {}\r
+\r
+//==============================================================================\r
+FlexItem FlexItem::withFlex (float newFlexGrow) const noexcept\r
+{\r
+ auto fi = *this;\r
+ fi.flexGrow = newFlexGrow;\r
+ return fi;\r
+}\r
+\r
+FlexItem FlexItem::withFlex (float newFlexGrow, float newFlexShrink) const noexcept\r
+{\r
+ auto fi = withFlex (newFlexGrow);\r
+ fi.flexShrink = newFlexShrink;\r
+ return fi;\r
+}\r
+\r
+FlexItem FlexItem::withFlex (float newFlexGrow, float newFlexShrink, float newFlexBasis) const noexcept\r
+{\r
+ auto fi = withFlex (newFlexGrow, newFlexShrink);\r
+ fi.flexBasis = newFlexBasis;\r
+ return fi;\r
+}\r
+\r
+FlexItem FlexItem::withWidth (float newWidth) const noexcept { auto fi = *this; fi.width = newWidth; return fi; }\r
+FlexItem FlexItem::withHeight (float newHeight) const noexcept { auto fi = *this; fi.height = newHeight; return fi; }\r
+FlexItem FlexItem::withMargin (Margin m) const noexcept { auto fi = *this; fi.margin = m; return fi; }\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2015 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ ------------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+\r
+/**\r
+ Represents a FlexBox container, which contains and manages the layout of a set\r
+ of FlexItem objects.\r
+\r
+ To use this class, set its parameters appropriately (you can search online for\r
+ more help on exactly how the FlexBox protocol works!), then add your sub-items\r
+ to the items array, and call performLayout().\r
+\r
+ @see FlexItem\r
+*/\r
+class JUCE_API FlexBox\r
+{\r
+public:\r
+ /** Possible values for the flexDirection property. */\r
+ enum class Direction { row, rowReverse, column, columnReverse };\r
+ /** Possible values for the flexWrap property. */\r
+ enum class Wrap { noWrap, wrap, wrapReverse };\r
+ /** Possible values for the alignContent property. */\r
+ enum class AlignContent { stretch, flexStart, flexEnd, center, spaceBetween, spaceAround };\r
+ /** Possible values for the alignItems property. */\r
+ enum class AlignItems { stretch, flexStart, flexEnd, center };\r
+ /** Possible values for the justifyContent property. */\r
+ enum class JustifyContent { flexStart, flexEnd, center, spaceBetween, spaceAround };\r
+\r
+ //==============================================================================\r
+ /** Creates an empty FlexBox container with default parameters. */\r
+ FlexBox() noexcept;\r
+\r
+ /** Creates an empty FlexBox container with these parameters. */\r
+ FlexBox (Direction, Wrap, AlignContent, AlignItems, JustifyContent) noexcept;\r
+\r
+ /** Creates an empty FlexBox container with the given content-justification mode. */\r
+ FlexBox (JustifyContent) noexcept;\r
+\r
+ /** Destructor. */\r
+ ~FlexBox() noexcept;\r
+\r
+ //==============================================================================\r
+ /** Lays-out the box's items within the given rectangle. */\r
+ void performLayout (Rectangle<float> targetArea);\r
+\r
+ /** Lays-out the box's items within the given rectangle. */\r
+ void performLayout (Rectangle<int> targetArea);\r
+\r
+ //==============================================================================\r
+ /** Specifies how flex items are placed in the flex container, and defines the\r
+ direction of the main axis.\r
+ */\r
+ Direction flexDirection = Direction::row;\r
+\r
+ /** Specifies whether items are forced into a single line or can be wrapped onto multiple lines.\r
+ If wrapping is allowed, this property also controls the direction in which lines are stacked.\r
+ */\r
+ Wrap flexWrap = Wrap::noWrap;\r
+\r
+ /** Specifies how a flex container's lines are placed within the flex container when\r
+ there is extra space on the cross-axis.\r
+ This property has no effect on single line layouts.\r
+ */\r
+ AlignContent alignContent = AlignContent::stretch;\r
+\r
+ /** Specifies the alignment of flex items along the cross-axis of each line. */\r
+ AlignItems alignItems = AlignItems::stretch;\r
+\r
+ /** Defines how the container distributes space between and around items along the main-axis.\r
+ The alignment is done after the lengths and auto margins are applied, so that if there is at\r
+ least one flexible element, with flex-grow different from 0, it will have no effect as there\r
+ won't be any available space.\r
+ */\r
+ JustifyContent justifyContent = JustifyContent::flexStart;\r
+\r
+ /** The set of items to lay-out. */\r
+ Array<FlexItem> items;\r
+\r
+private:\r
+ JUCE_LEAK_DETECTOR (FlexBox)\r
+};\r
--- /dev/null
+/*\r
+ ==============================================================================\r
+\r
+ This file is part of the JUCE library.\r
+ Copyright (c) 2015 - ROLI Ltd.\r
+\r
+ Permission is granted to use this software under the terms of either:\r
+ a) the GPL v2 (or any later version)\r
+ b) the Affero GPL v3\r
+\r
+ Details of these licenses can be found at: www.gnu.org/licenses\r
+\r
+ JUCE is distributed in the hope that it will be useful, but WITHOUT ANY\r
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\r
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r
+\r
+ ------------------------------------------------------------------------------\r
+\r
+ To release a closed-source product which uses JUCE, commercial licenses are\r
+ available: visit www.juce.com for more information.\r
+\r
+ ==============================================================================\r
+*/\r
+\r
+\r
+/**\r
+ Describes the properties of an item inside a FlexBox container.\r
+\r
+ @see FlexBox\r
+*/\r
+class JUCE_API FlexItem\r
+{\r
+public:\r
+ //==============================================================================\r
+ /** Creates an item with default parameters, and zero size. */\r
+ FlexItem() noexcept;\r
+\r
+ /** Creates an item with the given size. */\r
+ FlexItem (float width, float height) noexcept;\r
+\r
+ /** Creates an item with the given size and target component. */\r
+ FlexItem (float width, float height, Component& targetComponent) noexcept;\r
+\r
+ /** Creates an item that represents an embedded FlexBox with a given size. */\r
+ FlexItem (float width, float height, FlexBox& flexBoxToControl) noexcept;\r
+\r
+ /** Creates an item with a given target component. */\r
+ FlexItem (Component& componentToControl) noexcept;\r
+\r
+ /** Creates an item that represents an embedded FlexBox. */\r
+ FlexItem (FlexBox& flexBoxToControl) noexcept;\r
+\r
+ //==============================================================================\r
+ /** The item's current bounds. */\r
+ Rectangle<float> currentBounds;\r
+\r
+ /** If this is non-null, it represents a Component whose bounds are controlled by this item. */\r
+ Component* associatedComponent = nullptr;\r
+\r
+ /** If this is non-null, it represents a FlexBox whose bounds are controlled by this item. */\r
+ FlexBox* associatedFlexBox = nullptr;\r
+\r
+ /** Determines the order used to lay out items in their flex container.\r
+ Elements are laid out in ascending order of thus order value. Elements with the same order value\r
+ are laid out in the order in which they appear in the array.\r
+ */\r
+ int order = 0;\r
+\r
+ /** Specifies the flex grow factor of this item.\r
+ This indicates the amount of space inside the flex container the item should take up.\r
+ */\r
+ float flexGrow = 0.0f;\r
+\r
+ /** Specifies the flex shrink factor of the item.\r
+ This indicates the rate at which the item shrinks if there is insufficient space in\r
+ the container.\r
+ */\r
+ float flexShrink = 1.0f;\r
+\r
+ /** Specifies the flex-basis of the item.\r
+ This is the initial main size of a flex item in the direction of flow. It determines the size\r
+ of the content-box unless specified otherwise using box-sizing.\r
+ */\r
+ float flexBasis = 0.0f;\r
+\r
+ /** Possible value for the alignSelf property */\r
+ enum class AlignSelf { autoAlign, flexStart, flexEnd, center, stretch };\r
+\r
+ /** This is the aligh-self property of the item.\r
+ This determines the alignment of the item along the corss-axis (perpendicular to the direction\r
+ of flow).\r
+ */\r
+ AlignSelf alignSelf = AlignSelf::stretch;\r
+\r
+ //==============================================================================\r
+ /** This constant can be used for sizes to indicate that 'auto' mode should be used. */\r
+ static const int autoValue = -2;\r
+ /** This constant can be used for sizes to indicate that no value has been set. */\r
+ static const int notAssigned = -1;\r
+\r
+ float width = (float) notAssigned; /**< The item's width. */\r
+ float minWidth = 0.0f; /**< The item's minimum width */\r
+ float maxWidth = (float) notAssigned; /**< The item's maximum width */\r
+\r
+ float height = (float) notAssigned; /**< The item's height */\r
+ float minHeight = 0.0f; /**< The item's minimum height */\r
+ float maxHeight = (float) notAssigned; /**< The item's maximum height */\r
+\r
+ /** Represents a margin. */\r
+ struct Margin\r
+ {\r
+ Margin() noexcept; /**< Creates a margin of size zero. */\r
+ Margin (float size) noexcept; /**< Creates a margin with this size on all sides. */\r
+\r
+ float left; /**< Left margin size */\r
+ float right; /**< Right margin size */\r
+ float top; /**< Top margin size */\r
+ float bottom; /**< Bottom margin size */\r
+ };\r
+\r
+ /** The margin to leave around this item. */\r
+ Margin margin;\r
+\r
+ //==============================================================================\r
+ /** Returns a copy of this object with a new flex-grow value. */\r
+ FlexItem withFlex (float newFlexGrow) const noexcept;\r
+\r
+ /** Returns a copy of this object with new flex-grow and flex-shrink values. */\r
+ FlexItem withFlex (float newFlexGrow, float newFlexShrink) const noexcept;\r
+\r
+ /** Returns a copy of this object with new flex-grow, flex-shrink and flex-basis values. */\r
+ FlexItem withFlex (float newFlexGrow, float newFlexShrink, float newFlexBasis) const noexcept;\r
+\r
+ /** Returns a copy of this object with a new width. */\r
+ FlexItem withWidth (float newWidth) const noexcept;\r
+\r
+ /** Returns a copy of this object with a new height. */\r
+ FlexItem withHeight (float newHeight) const noexcept;\r
+\r
+ /** Returns a copy of this object with a new margin. */\r
+ FlexItem withMargin (Margin) const noexcept;\r
+};\r
@param componentName the name to give the component\r
@param labelText the text to show at the top of the outline\r
*/\r
- GroupComponent (const String& componentName = String::empty,\r
- const String& labelText = String::empty);\r
+ GroupComponent (const String& componentName = String(),\r
+ const String& labelText = String());\r
\r
/** Destructor. */\r
~GroupComponent();\r
*/\r
\r
MultiDocumentPanelWindow::MultiDocumentPanelWindow (Colour backgroundColour)\r
- : DocumentWindow (String::empty, backgroundColour,\r
+ : DocumentWindow (String(), backgroundColour,\r
DocumentWindow::maximiseButton | DocumentWindow::closeButton, false)\r
{\r
}\r
Remember that when the target component is resized, it'll need to move and\r
resize this component to keep it in place, as this won't happen automatically.\r
\r
- If the constrainer parameter is non-zero, then this object will be used to enforce\r
- limits on the size and position that the component can be stretched to. Make sure\r
- that the constrainer isn't deleted while still in use by this object.\r
+ If the constrainer parameter is not a nullptr, then this object will be used to\r
+ enforce limits on the size and position that the component can be stretched to.\r
+ Make sure that the constrainer isn't deleted while still in use by this object.\r
\r
@see ComponentBoundsConstrainer\r
*/\r
Remember that when the target component is resized, it'll need to move and\r
resize this component to keep it in place, as this won't happen automatically.\r
\r
- If the constrainer parameter is non-zero, then this object will be used to enforce\r
- limits on the size and position that the component can be stretched to. Make sure\r
- that the constrainer isn't deleted while still in use by this object.\r
+ If the constrainer parameter is not a nullptr, then this object will be used to\r
+ enforce limits on the size and position that the component can be stretched to.\r
+ Make sure that the constrainer isn't deleted while still in use by this object.\r
\r
@see ComponentBoundsConstrainer\r
*/\r
String TabbedButtonBar::getCurrentTabName() const\r
{\r
TabInfo* tab = tabs [currentTabIndex];\r
- return tab == nullptr ? String::empty : tab->name;\r
+ return tab == nullptr ? String() : tab->name;\r
}\r
\r
StringArray TabbedButtonBar::getTabNames() const\r
Point<int> Viewport::viewportPosToCompPos (Point<int> pos) const\r
{\r
jassert (contentComp != nullptr);\r
- return Point<int> (jmax (jmin (0, contentHolder.getWidth() - contentComp->getWidth()), jmin (0, -(pos.x))),\r
- jmax (jmin (0, contentHolder.getHeight() - contentComp->getHeight()), jmin (0, -(pos.y))));\r
+\r
+ Rectangle<int> contentBounds = contentHolder.getLocalArea (contentComp, contentComp->getLocalBounds());\r
+ Point<int> p (jmax (jmin (0, contentHolder.getWidth() - contentBounds.getWidth()), jmin (0, -(pos.x))),\r
+ jmax (jmin (0, contentHolder.getHeight() - contentBounds.getHeight()), jmin (0, -(pos.y))));\r
+\r
+\r
+ return p.transformedBy (contentComp->getTransform().inverted());\r
}\r
\r
void Viewport::setViewPosition (const int xPixelsOffset, const int yPixelsOffset)\r
The viewport is initially empty - use the setViewedComponent() method to\r
add a child component for it to manage.\r
*/\r
- explicit Viewport (const String& componentName = String::empty);\r
+ explicit Viewport (const String& componentName = String());\r
\r
/** Destructor. */\r
~Viewport();\r
return options.getParentComponent();\r
}\r
\r
+void LookAndFeel_V2::preparePopupMenuWindow (Component&) {}\r
+\r
//==============================================================================\r
void LookAndFeel_V2::fillTextEditorBackground (Graphics& g, int /*width*/, int /*height*/, TextEditor& textEditor)\r
{\r
\r
Label* LookAndFeel_V2::createComboBoxTextBox (ComboBox&)\r
{\r
- return new Label (String::empty, String::empty);\r
+ return new Label (String(), String());\r
}\r
\r
void LookAndFeel_V2::positionComboBoxText (ComboBox& box, Label& label)\r
\r
Button* LookAndFeel_V2::createSliderButton (Slider&, const bool isIncrement)\r
{\r
- return new TextButton (isIncrement ? "+" : "-", String::empty);\r
+ return new TextButton (isIncrement ? "+" : "-", String());\r
}\r
\r
class LookAndFeel_V2::SliderLabelComp : public Label\r
{\r
public:\r
- SliderLabelComp() : Label (String::empty, String::empty) {}\r
+ SliderLabelComp() : Label (String(), String()) {}\r
\r
void mouseWheelMove (const MouseEvent&, const MouseWheelDetails&) {}\r
};\r
int w, int h, int titleSpaceX, int titleSpaceW,\r
const Image* icon, bool drawTitleTextOnLeft)\r
{\r
+ if (w * h == 0)\r
+ return;\r
+\r
const bool isActive = window.isActiveWindow();\r
\r
g.setGradientFill (ColourGradient (window.getBackgroundColour(),\r
void getIdealPopupMenuItemSize (const String& text, bool isSeparator, int standardMenuItemHeight,\r
int& idealWidth, int& idealHeight) override;\r
int getMenuWindowFlags() override;\r
+ void preparePopupMenuWindow (Component&) override;\r
\r
void drawMenuBarBackground (Graphics&, int width, int height, bool isMouseOverBar, MenuBarComponent&) override;\r
int getMenuBarItemWidth (MenuBarComponent&, int itemIndex, const String& itemText) override;\r
{\r
if (currentPopupIndex != index)\r
{\r
+ if (currentPopupIndex < 0 && index >= 0)\r
+ model->handleMenuBarActivate (true);\r
+ else if (currentPopupIndex >= 0 && index < 0)\r
+ model->handleMenuBarActivate (false);\r
+\r
repaintMenuItem (currentPopupIndex);\r
currentPopupIndex = index;\r
repaintMenuItem (currentPopupIndex);\r
{\r
menuItemsChanged();\r
}\r
+\r
+void MenuBarModel::handleMenuBarActivate (bool isActive)\r
+{\r
+ menuBarActivated (isActive);\r
+ listeners.call (&MenuBarModel::Listener::menuBarActivated, this, isActive);\r
+}\r
+\r
+void MenuBarModel::menuBarActivated (bool) {}\r
+void MenuBarModel::Listener::menuBarActivated (MenuBarModel*, bool) {}\r
*/\r
virtual void menuCommandInvoked (MenuBarModel* menuBarModel,\r
const ApplicationCommandTarget::InvocationInfo& info) = 0;\r
+\r
+ /** Called when the menu bar is first activated or when the user finished interacting\r
+ with the menu bar. */\r
+ virtual void menuBarActivated (MenuBarModel* menuBarModel, bool isActive);\r
};\r
\r
/** Registers a listener for callbacks when the menu items in this model change.\r
virtual void menuItemSelected (int menuItemID,\r
int topLevelMenuIndex) = 0;\r
\r
+ /** This is called when the user starts/stops navigating the maenu bar.\r
+\r
+ @param isActive true when the user starts navigating the menu bar\r
+ */\r
+ virtual void menuBarActivated (bool isActive);\r
+\r
//==============================================================================\r
#if JUCE_MAC || DOXYGEN\r
/** OSX ONLY - Sets the model that is currently being shown as the main\r
*/\r
static void setMacMainMenu (MenuBarModel* newMenuBarModel,\r
const PopupMenu* extraAppleMenuItems = nullptr,\r
- const String& recentItemsMenuName = String::empty);\r
+ const String& recentItemsMenuName = String());\r
\r
/** OSX ONLY - Returns the menu model that is currently being shown as\r
the main menu bar.\r
void applicationCommandListChanged() override;\r
/** @internal */\r
void handleAsyncUpdate() override;\r
-\r
+ /** @internal */\r
+ void handleMenuBarActivate (bool isActive);\r
private:\r
ApplicationCommandManager* manager;\r
ListenerList<Listener> listeners;\r
setLookAndFeel (parent != nullptr ? &(parent->getLookAndFeel())\r
: menu.lookAndFeel.get());\r
\r
- parentComponent = getLookAndFeel().getParentComponentForMenuOptions (options);\r
+ LookAndFeel& lf = getLookAndFeel();\r
+\r
+ parentComponent = lf.getParentComponentForMenuOptions (options);\r
\r
- setOpaque (getLookAndFeel().findColour (PopupMenu::backgroundColourId).isOpaque()\r
+ setOpaque (lf.findColour (PopupMenu::backgroundColourId).isOpaque()\r
|| ! Desktop::canUseSemiTransparentWindows());\r
\r
for (int i = 0; i < menu.items.size(); ++i)\r
{\r
addToDesktop (ComponentPeer::windowIsTemporary\r
| ComponentPeer::windowIgnoresKeyPresses\r
- | getLookAndFeel().getMenuWindowFlags());\r
+ | lf.getMenuWindowFlags());\r
\r
getActiveWindows().add (this);\r
Desktop::getInstance().addGlobalMouseListener (this);\r
}\r
+\r
+ lf.preparePopupMenuWindow (*this);\r
}\r
\r
~MenuWindow()\r
*managerOfChosenCommand = item->commandManager;\r
}\r
\r
- exitModalState (item != nullptr ? item->itemID : 0);\r
+ exitModalState (getResultItemID (item));\r
\r
if (makeInvisible && (deletionChecker != nullptr))\r
setVisible (false);\r
}\r
}\r
\r
+ static int getResultItemID (const PopupMenu::Item* item)\r
+ {\r
+ if (item == nullptr)\r
+ return 0;\r
+\r
+ if (CustomCallback* cc = item->customCallback)\r
+ if (! cc->menuItemTriggered())\r
+ return 0;\r
+\r
+ return item->itemID;\r
+ }\r
+\r
void dismissMenu (const PopupMenu::Item* const item)\r
{\r
if (parent != nullptr)\r
subMenu (createCopyIfNotNull (other.subMenu.get())),\r
image (other.image != nullptr ? other.image->createCopy() : nullptr),\r
customComponent (other.customComponent),\r
+ customCallback (other.customCallback),\r
commandManager (other.commandManager),\r
shortcutKeyDescription (other.shortcutKeyDescription),\r
colour (other.colour),\r
subMenu = createCopyIfNotNull (other.subMenu.get());\r
image = (other.image != nullptr ? other.image->createCopy() : nullptr);\r
customComponent = other.customComponent;\r
+ customCallback = other.customCallback;\r
commandManager = other.commandManager;\r
shortcutKeyDescription = other.shortcutKeyDescription;\r
colour = other.colour;\r
}\r
}\r
\r
+//==============================================================================\r
+PopupMenu::CustomCallback::CustomCallback() {}\r
+PopupMenu::CustomCallback::~CustomCallback() {}\r
+\r
//==============================================================================\r
PopupMenu::MenuItemIterator::MenuItemIterator (const PopupMenu& m) : menu (m), index (0) {}\r
PopupMenu::MenuItemIterator::~MenuItemIterator() {}\r
\r
public:\r
class CustomComponent;\r
+ class CustomCallback;\r
\r
//==============================================================================\r
/** Creates an empty popup menu. */\r
/** A custom component for the item to display, or nullptr if there isn't one. */\r
ReferenceCountedObjectPtr<CustomComponent> customComponent;\r
\r
+ /** A custom callback for the item to use, or nullptr if there isn't one. */\r
+ ReferenceCountedObjectPtr<CustomCallback> customCallback;\r
+\r
/** A command manager to use to automatically invoke the command, or nullptr if none is specified. */\r
ApplicationCommandManager* commandManager;\r
\r
*/\r
void addCommandItem (ApplicationCommandManager* commandManager,\r
CommandID commandID,\r
- const String& displayName = String::empty,\r
+ const String& displayName = String(),\r
Drawable* iconToUse = nullptr);\r
\r
\r
in zero.\r
@param standardItemHeight if this is non-zero, it will be used as the standard\r
height for menu items (apart from custom items)\r
- @param callback if this is non-zero, the menu will be launched asynchronously,\r
- returning immediately, and the callback will receive a\r
- call when the menu is either dismissed or has an item\r
- selected. This object will be owned and deleted by the\r
- system, so make sure that it works safely and that any\r
- pointers that it uses are safely within scope.\r
+ @param callback if this is not a nullptr, the menu will be launched\r
+ asynchronously, returning immediately, and the callback\r
+ will receive a call when the menu is either dismissed or\r
+ has an item selected. This object will be owned and\r
+ deleted by the system, so make sure that it works safely\r
+ and that any pointers that it uses are safely within scope.\r
@see showAt\r
*/\r
int show (int itemIDThatMustBeVisible = 0,\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CustomComponent)\r
};\r
\r
+ //==============================================================================\r
+ /** A user-defined callback that can be used for specific items in a popup menu.\r
+ @see PopupMenu::Item::customCallback\r
+ */\r
+ class JUCE_API CustomCallback : public SingleThreadedReferenceCountedObject\r
+ {\r
+ public:\r
+ CustomCallback();\r
+ ~CustomCallback();\r
+\r
+ /** Callback to indicate this item has been triggered.\r
+ @returns true if the itemID should be sent to the exitModalState method, or\r
+ false if it should send 0, indicating no further action should be taken\r
+ */\r
+ virtual bool menuItemTriggered() = 0;\r
+\r
+ private:\r
+ JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CustomCallback)\r
+ };\r
+\r
//==============================================================================\r
/** This abstract base class is implemented by LookAndFeel classes to provide\r
menu drawing functionality.\r
MenuBarComponent&) = 0;\r
\r
virtual Component* getParentComponentForMenuOptions (const PopupMenu::Options& options) = 0;\r
+\r
+ virtual void preparePopupMenuWindow (Component& newWindow) = 0;\r
};\r
\r
private:\r
void sendMouseUp (Component& comp, Point<float> screenPos, Time time, const ModifierKeys oldMods)\r
{\r
JUCE_MOUSE_EVENT_DBG ("up")\r
- comp.internalMouseUp (MouseInputSource (this), screenPosToLocalPos (comp, screenPos), time, oldMods);\r
+ comp.internalMouseUp (MouseInputSource (this), screenPosToLocalPos (comp, screenPos), time, oldMods, pressure);\r
}\r
\r
void sendMouseWheel (Component& comp, Point<float> screenPos, Time time, const MouseWheelDetails& wheel)\r
\r
for (int i = selectedItems.size(); --i >= 0;)\r
if (! other.isSelected (selectedItems.getReference (i)))\r
- itemDeselected (selectedItems.remove (i));\r
+ itemDeselected (selectedItems.removeAndReturn (i));\r
\r
for (SelectableItemType* i = other.selectedItems.begin(), *e = other.selectedItems.end(); i != e; ++i)\r
{\r
if (i >= 0)\r
{\r
changed();\r
- itemDeselected (selectedItems.remove (i));\r
+ itemDeselected (selectedItems.removeAndReturn (i));\r
}\r
}\r
\r
\r
for (int i = selectedItems.size(); --i >= 0;)\r
{\r
- itemDeselected (selectedItems.remove (i));\r
+ itemDeselected (selectedItems.removeAndReturn (i));\r
i = jmin (i, selectedItems.size());\r
}\r
}\r
return (float) touch.maximumPossibleForce;\r
#endif\r
\r
+ ignoreUnused (touch);\r
return 0.0f;\r
}\r
\r
return (float) touch.force;\r
#endif\r
\r
+ ignoreUnused (touch);\r
return 0.0f;\r
}\r
\r
if (Atoms::isMimeTypeFile (dragAndDropCurrentMimeType))\r
{\r
for (int i = 0; i < lines.size(); ++i)\r
- dragInfo.files.add (URL::removeEscapeChars (lines[i].replace ("file://", String::empty, true)));\r
+ dragInfo.files.add (URL::removeEscapeChars (lines[i].replace ("file://", String(), true)));\r
\r
dragInfo.files.trim();\r
dragInfo.files.removeEmptyStrings();\r
Component* associatedComponent,\r
ModalComponentManager::Callback* callback)\r
{\r
- AlertWindow::showMessageBoxAsync (iconType, title, message, String::empty, associatedComponent, callback);\r
+ AlertWindow::showMessageBoxAsync (iconType, title, message, String(), associatedComponent, callback);\r
}\r
\r
bool JUCE_CALLTYPE NativeMessageBox::showOkCancelBox (AlertWindow::AlertIconType iconType,\r
Component* associatedComponent,\r
ModalComponentManager::Callback* callback)\r
{\r
- return AlertWindow::showOkCancelBox (iconType, title, message, String::empty, String::empty,\r
+ return AlertWindow::showOkCancelBox (iconType, title, message, String(), String(),\r
associatedComponent, callback);\r
}\r
\r
ModalComponentManager::Callback* callback)\r
{\r
return AlertWindow::showYesNoCancelBox (iconType, title, message,\r
- String::empty, String::empty, String::empty,\r
+ String(), String(), String(),\r
associatedComponent, callback);\r
}\r
\r
tempMenu = new TemporaryMainMenuWithStandardCommands();\r
\r
StringArray* filters = new StringArray();\r
- filters->addTokens (filter.replaceCharacters (",:", ";;"), ";", String::empty);\r
+ filters->addTokens (filter.replaceCharacters (",:", ";;"), ";", String());\r
filters->trim();\r
filters->removeEmptyStrings();\r
\r
\r
~JuceMainMenuHandler()\r
{\r
- setMenu (nullptr, nullptr, String::empty);\r
+ setMenu (nullptr, nullptr, String());\r
\r
jassert (instance == this);\r
instance = nullptr;\r
extraAppleMenuItems = createCopyIfNotNull (newExtraAppleMenuItems);\r
}\r
\r
- void addTopLevelMenu (NSMenu* parent, const PopupMenu& child,\r
- const String& name, const int menuId, const int tag)\r
+ void addTopLevelMenu (NSMenu* parent, const PopupMenu& child, const String& name, int menuId, int topLevelIndex)\r
{\r
NSMenuItem* item = [parent addItemWithTitle: juceStringToNS (name)\r
action: nil\r
keyEquivalent: nsEmptyString()];\r
- [item setTag: tag];\r
\r
- NSMenu* sub = createMenu (child, name, menuId, tag, true);\r
+ NSMenu* sub = createMenu (child, name, menuId, topLevelIndex, true);\r
\r
[parent setSubmenu: sub forItem: item];\r
[sub setAutoenablesItems: false];\r
[sub release];\r
}\r
\r
- void updateTopLevelMenu (NSMenuItem* parentItem, const PopupMenu& menuToCopy,\r
- const String& name, const int menuId, const int tag)\r
+ void updateTopLevelMenu (NSMenuItem* parentItem, const PopupMenu& menuToCopy, const String& name, int menuId, int topLevelIndex)\r
{\r
// Note: This method used to update the contents of the existing menu in-place, but that caused\r
// weird side-effects which messed-up keyboard focus when switching between windows. By creating\r
NSMenu* menu = [[NSMenu alloc] initWithTitle: juceStringToNS (name)];\r
\r
for (PopupMenu::MenuItemIterator iter (menuToCopy); iter.next();)\r
- addMenuItem (iter, menu, menuId, tag);\r
+ addMenuItem (iter, menu, menuId, topLevelIndex);\r
\r
[menu setAutoenablesItems: false];\r
[menu update];\r
- [parentItem setTag: tag];\r
[parentItem setSubmenu: menu];\r
[menu release];\r
}\r
\r
void menuCommandInvoked (MenuBarModel*, const ApplicationCommandTarget::InvocationInfo& info)\r
{\r
- if (NSMenuItem* item = findMenuItem ([NSApp mainMenu], info))\r
- flashMenuBar ([item menu]);\r
+ if ((info.commandFlags & ApplicationCommandInfo::dontTriggerVisualFeedback) == 0\r
+ && info.invocationMethod != ApplicationCommandTarget::InvocationInfo::fromKeyPress)\r
+ if (NSMenuItem* item = findMenuItemWithTag ([NSApp mainMenu], info.commandID))\r
+ flashMenuBar ([item menu]);\r
}\r
\r
void updateMenus (NSMenu* menu)\r
(new AsyncMenuUpdater())->post();\r
}\r
\r
- void invoke (const int commandId, ApplicationCommandManager* const commandManager, const int topLevelIndex) const\r
+ void invoke (int commandId, ApplicationCommandManager* commandManager, int topLevelIndex) const\r
{\r
if (currentModel != nullptr)\r
{\r
}\r
}\r
\r
- void invokeDirectly (const int commandId, const int topLevelIndex)\r
+ void invokeDirectly (int commandId, int topLevelIndex)\r
{\r
if (currentModel != nullptr)\r
currentModel->menuItemSelected (commandId, topLevelIndex);\r
ScopedPointer<RecentFilesMenuItem> recent;\r
\r
//==============================================================================\r
- static NSMenuItem* findMenuItem (NSMenu* const menu, const ApplicationCommandTarget::InvocationInfo& info)\r
+ static NSMenuItem* findMenuItemWithTag (NSMenu* const menu, int tag)\r
{\r
for (NSInteger i = [menu numberOfItems]; --i >= 0;)\r
{\r
NSMenuItem* m = [menu itemAtIndex: i];\r
- if ([m tag] == info.commandID)\r
+ if ([m tag] == tag)\r
return m;\r
\r
if (NSMenu* sub = [m submenu])\r
- if (NSMenuItem* found = findMenuItem (sub, info))\r
+ if (NSMenuItem* found = findMenuItemWithTag (sub, tag))\r
return found;\r
}\r
\r
return m;\r
}\r
\r
- class AsyncMenuUpdater : public CallbackMessage\r
+ struct AsyncMenuUpdater : public CallbackMessage\r
{\r
- public:\r
AsyncMenuUpdater() {}\r
\r
void messageCallback() override\r
instance->menuBarItemsChanged (nullptr);\r
}\r
\r
- private:\r
JUCE_DECLARE_NON_COPYABLE (AsyncMenuUpdater)\r
};\r
\r
- class AsyncCommandInvoker : public CallbackMessage\r
+ struct AsyncCommandInvoker : public CallbackMessage\r
{\r
- public:\r
- AsyncCommandInvoker (const int commandId_, const int topLevelIndex_)\r
+ AsyncCommandInvoker (int commandId_, int topLevelIndex_)\r
: commandId (commandId_), topLevelIndex (topLevelIndex_)\r
{}\r
\r
instance->invokeDirectly (commandId, topLevelIndex);\r
}\r
\r
- private:\r
const int commandId, topLevelIndex;\r
-\r
JUCE_DECLARE_NON_COPYABLE (AsyncCommandInvoker)\r
};\r
\r
// This override is also important because it stops the base class\r
// calling ModalComponentManager::bringToFront, which can get\r
// recursive when file dialogs are involved\r
- class SilentDummyModalComp : public Component\r
+ struct SilentDummyModalComp : public Component\r
{\r
- public:\r
SilentDummyModalComp() {}\r
void inputAttemptWhenModal() override {}\r
};\r
{\r
menuHandler->isOpen = isTracking;\r
\r
+ if (MenuBarModel* model = menuHandler->currentModel)\r
+ model->handleMenuBarActivate (isTracking);\r
+\r
if (menuHandler->defferedUpdateRequested && ! isTracking)\r
{\r
menuHandler->defferedUpdateRequested = false;\r
//==============================================================================\r
namespace MouseCursorHelpers\r
{\r
- NSImage* createNSImage (const Image&);\r
- NSImage* createNSImage (const Image& image)\r
+ NSImage* createNSImage (const Image&, float scaleFactor = 1.f);\r
+ NSImage* createNSImage (const Image& image, float scaleFactor)\r
{\r
JUCE_AUTORELEASEPOOL\r
{\r
NSImage* im = [[NSImage alloc] init];\r
- [im setSize: NSMakeSize (image.getWidth(), image.getHeight())];\r
- [im lockFocus];\r
+ const NSSize requiredSize = NSMakeSize (image.getWidth() / scaleFactor, image.getHeight() / scaleFactor);\r
\r
+ [im setSize: requiredSize];\r
CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();\r
- CGImageRef imageRef = juce_createCoreGraphicsImage (image, colourSpace, false);\r
+ CGImageRef imageRef = juce_createCoreGraphicsImage (image, colourSpace, true);\r
CGColorSpaceRelease (colourSpace);\r
\r
- CGContextRef cg = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];\r
- CGContextDrawImage (cg, convertToCGRect (image.getBounds()), imageRef);\r
-\r
+ NSBitmapImageRep* imageRep = [[NSBitmapImageRep alloc] initWithCGImage: imageRef];\r
+ [imageRep setSize: requiredSize];\r
+ [im addRepresentation: imageRep];\r
+ [imageRep release];\r
CGImageRelease (imageRef);\r
- [im unlockFocus];\r
-\r
return im;\r
}\r
}\r
}\r
}\r
\r
+ [originalImage release];\r
+\r
NSDictionary* info = [NSDictionary dictionaryWithContentsOfFile: juceStringToNS (cursorPath + "/info.plist")];\r
\r
const float hotspotX = (float) [[info valueForKey: nsStringLiteral ("hotx")] doubleValue];\r
\r
void* CustomMouseCursorInfo::create() const\r
{\r
- return MouseCursorHelpers::fromNSImage (MouseCursorHelpers::createNSImage (image),\r
+ return MouseCursorHelpers::fromNSImage (MouseCursorHelpers::createNSImage (image, scaleFactor),\r
NSMakePoint (hotspot.x, hotspot.y));\r
}\r
\r
return r;\r
}\r
\r
+#if JUCE_MODULE_AVAILABLE_juce_opengl\r
+void componentPeerAboutToBeRemovedFromScreen (ComponentPeer&);\r
+#endif\r
+\r
//==============================================================================\r
class NSViewComponentPeer : public ComponentPeer,\r
private AsyncUpdater\r
usingCoreGraphics (false),\r
#endif\r
isZooming (false),\r
+ isFirstLiveResize (false),\r
textWasInserted (false),\r
+ isStretchingTop (false), isStretchingLeft (false),\r
+ isStretchingBottom (false), isStretchingRight (false),\r
notificationCenter (nil)\r
{\r
appFocusChangeCallback = appFocusChanged;\r
void setRepresentedFile (const File& file) override\r
{\r
if (! isSharedWindow)\r
- [window setRepresentedFilename: juceStringToNS (file != File::nonexistent\r
+ [window setRepresentedFilename: juceStringToNS (file != File()\r
? file.getFullPathName()\r
- : String::empty)];\r
+ : String())];\r
}\r
\r
void setBounds (const Rectangle<int>& newBounds, bool isNowFullScreen) override\r
void redirectPaste (NSObject*) { handleKeyPress (KeyPress ('v', ModifierKeys (ModifierKeys::commandModifier), 'v')); }\r
void redirectCut (NSObject*) { handleKeyPress (KeyPress ('x', ModifierKeys (ModifierKeys::commandModifier), 'x')); }\r
\r
+ void redirectWillMoveToWindow (NSWindow* newWindow)\r
+ {\r
+ #if JUCE_MODULE_AVAILABLE_juce_opengl\r
+ if ([view window] == window && newWindow == nullptr)\r
+ componentPeerAboutToBeRemovedFromScreen (*this);\r
+ #else\r
+ ignoreUnused (newWindow);\r
+ #endif\r
+ }\r
+\r
void sendMouseEvent (NSEvent* ev)\r
{\r
updateModifiers (ev);\r
\r
void handleAsyncUpdate() override\r
{\r
+ #if JucePlugin_Build_AAX || JucePlugin_Build_RTAS || JucePlugin_Build_AUv3 || JucePlugin_Build_AU || JucePlugin_Build_VST3 || JucePlugin_Build_VST\r
+ const bool shouldThrottle = true;\r
+ #else\r
+ const bool shouldThrottle = areAnyWindowsInLiveResize();\r
+ #endif\r
+\r
// When windows are being resized, artificially throttling high-frequency repaints helps\r
- // to stop the event queue getting clogged, and keeps everything working smoothly\r
- if (areAnyWindowsInLiveResize()\r
+ // to stop the event queue getting clogged, and keeps everything working smoothly.\r
+ // For some reason Logic also needs this throttling to recored parameter events correctly.\r
+ if (shouldThrottle\r
&& Time::getCurrentTime() < lastRepaintTime + RelativeTime::milliseconds (1000 / 30))\r
{\r
triggerAsyncUpdate();\r
for (const Rectangle<float>* i = deferredRepaints.begin(), *e = deferredRepaints.end(); i != e; ++i)\r
[view setNeedsDisplayInRect: makeNSRect (*i)];\r
\r
+ lastRepaintTime = Time::getCurrentTime();\r
deferredRepaints.clear();\r
}\r
\r
\r
void invokePaint (LowLevelGraphicsContext& context)\r
{\r
- lastRepaintTime = Time::getCurrentTime();\r
handlePaint (context);\r
}\r
\r
void liveResizingStart()\r
{\r
if (constrainer != nullptr)\r
+ {\r
constrainer->resizeStart();\r
+ isFirstLiveResize = true;\r
+ }\r
}\r
\r
void liveResizingEnd()\r
const Rectangle<int> screenBounds (Desktop::getInstance().getDisplays().getTotalBounds (true));\r
\r
#if defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6\r
- if ([window inLiveResize])\r
+ const bool inLiveResize = [window inLiveResize];\r
#else\r
- if ([window respondsToSelector: @selector (inLiveResize)]\r
- && [window performSelector: @selector (inLiveResize)])\r
+ const bool inLiveResize = [window respondsToSelector: @selector (inLiveResize)]\r
+ && [window performSelector: @selector (inLiveResize)];\r
#endif\r
+\r
+ if (! inLiveResize || isFirstLiveResize)\r
{\r
- constrainer->checkBounds (pos, original, screenBounds,\r
- false, false, true, true);\r
- }\r
- else\r
- {\r
- constrainer->checkBounds (pos, original, screenBounds,\r
- pos.getY() != original.getY() && pos.getBottom() == original.getBottom(),\r
- pos.getX() != original.getX() && pos.getRight() == original.getRight(),\r
- pos.getY() == original.getY() && pos.getBottom() != original.getBottom(),\r
- pos.getX() == original.getX() && pos.getRight() != original.getRight());\r
+ isFirstLiveResize = false;\r
+\r
+ isStretchingTop = (pos.getY() != original.getY() && pos.getBottom() == original.getBottom());\r
+ isStretchingLeft = (pos.getX() != original.getX() && pos.getRight() == original.getRight());\r
+ isStretchingBottom = (pos.getY() == original.getY() && pos.getBottom() != original.getBottom());\r
+ isStretchingRight = (pos.getX() == original.getX() && pos.getRight() != original.getRight());\r
}\r
\r
- pos = ScalingHelpers::scaledScreenPosToUnscaled (scale, pos);\r
+ constrainer->checkBounds (pos, original, screenBounds,\r
+ isStretchingTop, isStretchingLeft, isStretchingBottom, isStretchingRight);\r
\r
+ pos = ScalingHelpers::scaledScreenPosToUnscaled (scale, pos);\r
r = flippedScreenRect (makeNSRect (pos));\r
}\r
\r
NSWindow* window;\r
NSView* view;\r
bool isSharedWindow, fullScreen;\r
- bool usingCoreGraphics, isZooming, textWasInserted;\r
+ bool usingCoreGraphics, isZooming, isFirstLiveResize, textWasInserted;\r
+ bool isStretchingTop, isStretchingLeft, isStretchingBottom, isStretchingRight;\r
String stringBeingComposed;\r
NSNotificationCenter* notificationCenter;\r
\r
addMethod (@selector (copy:), copy, "v@:@");\r
addMethod (@selector (cut:), cut, "v@:@");\r
\r
+ addMethod (@selector (viewWillMoveToWindow:), willMoveToWindow, "v@:@");\r
+\r
addProtocol (@protocol (NSTextInput));\r
\r
registerClass();\r
static void paste (id self, SEL, NSObject* s) { if (NSViewComponentPeer* p = getOwner (self)) p->redirectPaste (s); }\r
static void cut (id self, SEL, NSObject* s) { if (NSViewComponentPeer* p = getOwner (self)) p->redirectCut (s); }\r
\r
+ static void willMoveToWindow (id self, SEL, NSWindow* window)\r
+ {\r
+ if (NSViewComponentPeer* p = getOwner (self)) p->redirectWillMoveToWindow (window);\r
+ }\r
+\r
static BOOL acceptsFirstMouse (id, SEL, NSEvent*) { return YES; }\r
static BOOL wantsDefaultClipping (id, SEL) { return YES; } // (this is the default, but may want to customise it in future)\r
static BOOL worksWhenModal (id self, SEL) { if (NSViewComponentPeer* p = getOwner (self)) return p->worksWhenModal(); return NO; };\r
\r
// use a modal window as the parent for this dialog box\r
// to block input from other app windows\r
- Component parentWindow (String::empty);\r
+ Component parentWindow;\r
const Rectangle<int> mainMon (Desktop::getInstance().getDisplays().getMainDisplay().userArea);\r
parentWindow.setBounds (mainMon.getX() + mainMon.getWidth() / 4,\r
mainMon.getY() + mainMon.getHeight() / 4,\r
\r
if (isFullScreen() != shouldBeFullScreen)\r
{\r
+ if (constrainer != nullptr)\r
+ constrainer->resizeStart();\r
+\r
fullScreen = shouldBeFullScreen;\r
const WeakReference<Component> deletionChecker (&component);\r
\r
\r
if (deletionChecker != nullptr)\r
handleMovedOrResized();\r
+\r
+ if (constrainer != nullptr)\r
+ constrainer->resizeEnd();\r
}\r
}\r
\r
\r
ownerInfo->dragInfo.clear();\r
\r
- DroppedData textData (dataObject, CF_UNICODETEXT);\r
-\r
- if (SUCCEEDED (textData.error))\r
- {\r
- ownerInfo->dragInfo.text = String (CharPointer_UTF16 ((const WCHAR*) textData.data),\r
- CharPointer_UTF16 ((const WCHAR*) addBytesToPointer (textData.data, textData.dataSize)));\r
- }\r
- else\r
{\r
DroppedData fileData (dataObject, CF_HDROP);\r
\r
ownerInfo->parseFileList (static_cast<const WCHAR*> (names), fileData.dataSize);\r
else\r
ownerInfo->parseFileList (static_cast<const char*> (names), fileData.dataSize);\r
- }\r
- else\r
- {\r
- return fileData.error;\r
+\r
+ return S_OK;\r
}\r
}\r
\r
- return S_OK;\r
+ DroppedData textData (dataObject, CF_UNICODETEXT);\r
+\r
+ if (SUCCEEDED (textData.error))\r
+ {\r
+ ownerInfo->dragInfo.text = String (CharPointer_UTF16 ((const WCHAR*) textData.data),\r
+ CharPointer_UTF16 ((const WCHAR*) addBytesToPointer (textData.data, textData.dataSize)));\r
+ return S_OK;\r
+ }\r
+\r
+ return textData.error;\r
}\r
\r
JUCE_DECLARE_NON_COPYABLE (JuceDropTarget)\r
bool handleTouchInput (const TOUCHINPUT& touch, const bool isDown, const bool isUp)\r
{\r
bool isCancel = false;\r
+\r
const int touchIndex = currentTouches.getIndexOfTouch (touch.dwID);\r
const int64 time = getMouseEventTime();\r
const Point<float> pos (globalToLocal (Point<float> (touch.x / 100.0f,\r
break;\r
\r
case SC_KEYMENU:\r
+ #if ! JUCE_WINDOWS_ALT_KEY_TRIGGERS_MENU\r
+ // This test prevents a press of the ALT key from triggering the ancient top-left window menu.\r
+ // By default we suppress this behaviour because it's unlikely that more than a tiny subset of\r
+ // our users will actually want it, and it causes problems if you're trying to use the ALT key\r
+ // as a modifier for mouse actions. If you really need the old behaviour, then just define\r
+ // JUCE_WINDOWS_ALT_KEY_TRIGGERS_MENU=1 in your app.\r
+ if ((lParam >> 16) <= 0) // Values above zero indicate that a mouse-click triggered the menu\r
+ return 0;\r
+ #endif\r
+\r
// (NB mustn't call sendInputAttemptWhenModalMessage() here because of very obscure\r
// situations that can arise if a modal loop is started from an alt-key keypress).\r
if (hasTitleBar() && h == GetCapture())\r
if (isEmpty())\r
repaint();\r
\r
- propertyHolderComponent->insertSection (-1, new SectionComponent (String::empty, newProperties, true));\r
+ propertyHolderComponent->insertSection (-1, new SectionComponent (String(), newProperties, true));\r
updatePropHolderLayout();\r
}\r
\r
*/\r
const String& getMessageWhenEmpty() const noexcept;\r
\r
+ //==============================================================================\r
+ /** Returns the PropertyPanel's internal Viewport. */\r
+ Viewport& getViewport() noexcept { return viewport; }\r
+\r
//==============================================================================\r
/** @internal */\r
void paint (Graphics&) override;\r
const double rangeMin,\r
const double rangeMax,\r
const double interval,\r
- const double skewFactor)\r
+ const double skewFactor,\r
+ bool symmetricSkew)\r
: PropertyComponent (name)\r
{\r
addAndMakeVisible (slider);\r
\r
slider.setRange (rangeMin, rangeMax, interval);\r
- slider.setSkewFactor (skewFactor);\r
+ slider.setSkewFactor (skewFactor, symmetricSkew);\r
slider.setSliderStyle (Slider::LinearBar);\r
\r
slider.addListener (this);\r
const double rangeMin,\r
const double rangeMax,\r
const double interval,\r
- const double skewFactor)\r
+ const double skewFactor,\r
+ bool symmetricSkew)\r
: PropertyComponent (name)\r
{\r
addAndMakeVisible (slider);\r
\r
slider.setRange (rangeMin, rangeMax, interval);\r
- slider.setSkewFactor (skewFactor);\r
+ slider.setSkewFactor (skewFactor, symmetricSkew);\r
slider.setSliderStyle (Slider::LinearBar);\r
\r
slider.getValueObject().referTo (valueToControl);\r
double rangeMin,\r
double rangeMax,\r
double interval,\r
- double skewFactor = 1.0);\r
+ double skewFactor = 1.0,\r
+ bool symmetricSkew = false);\r
\r
public:\r
//==============================================================================\r
double rangeMin,\r
double rangeMax,\r
double interval,\r
- double skewFactor = 1.0);\r
+ double skewFactor = 1.0,\r
+ bool symmetricSkew = false);\r
\r
/** Destructor. */\r
~SliderPropertyComponent();\r
{\r
public:\r
LabelComp (TextPropertyComponent& tpc, const int charLimit, const bool multiline)\r
- : Label (String::empty, String::empty),\r
+ : Label (String(), String()),\r
owner (tpc),\r
maxChars (charLimit),\r
isMultiline (multiline)\r
//==============================================================================\r
/** Creates a text property component.\r
\r
- The maxNumChars is used to set the length of string allowable, and isMultiLine\r
- sets whether the text editor allows carriage returns.\r
+ @param propertyName The name of the property\r
+ @param maxNumChars If not zero, then this specifies the maximum allowable length of\r
+ the string. If zero, then the string will have no length limit.\r
+ @param isMultiLine isMultiLine sets whether the text editor allows carriage returns.\r
\r
@see TextEditor\r
*/\r
public:\r
/** Creates a text property component.\r
\r
- The maxNumChars is used to set the length of string allowable, and isMultiLine\r
- sets whether the text editor allows carriage returns.\r
+ @param valueToControl The Value that is controlled by the TextPropertyCOmponent\r
+ @param propertyName The name of the property\r
+ @param maxNumChars If not zero, then this specifies the maximum allowable length of\r
+ the string. If zero, then the string will have no length limit.\r
+ @param isMultiLine isMultiLine sets whether the text editor allows carriage returns.\r
\r
@see TextEditor\r
*/\r
menuActive (false),\r
scrollWheelEnabled (false),\r
mouseWheelAccumulator (0),\r
- noChoicesMessage (TRANS("(no choices)"))\r
+ noChoicesMessage (TRANS("(no choices)")),\r
+ labelEditableState (editableUnknown)\r
{\r
setRepaintsOnMouseActivity (true);\r
lookAndFeelChanged();\r
if (label->isEditableOnSingleClick() != isEditable || label->isEditableOnDoubleClick() != isEditable)\r
{\r
label->setEditable (isEditable, isEditable, false);\r
- setWantsKeyboardFocus (! isEditable);\r
+ labelEditableState = (isEditable ? labelIsEditable : labelIsNotEditable);\r
+\r
+ setWantsKeyboardFocus (labelEditableState == labelIsNotEditable);\r
resized();\r
}\r
}\r
if (separatorPending)\r
{\r
separatorPending = false;\r
- items.add (new ItemInfo (String::empty, 0, false, false));\r
+ items.add (new ItemInfo (String(), 0, false, false));\r
}\r
\r
items.add (new ItemInfo (newItemText, newItemId, true, false));\r
if (separatorPending)\r
{\r
separatorPending = false;\r
- items.add (new ItemInfo (String::empty, 0, false, false));\r
+ items.add (new ItemInfo (String(), 0, false, false));\r
}\r
\r
items.add (new ItemInfo (headingName, 0, true, true));\r
if (const ItemInfo* const item = getItemForIndex (index))\r
return item->name;\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
int ComboBox::getItemId (const int index) const noexcept\r
void ComboBox::setSelectedId (const int newItemId, const NotificationType notification)\r
{\r
const ItemInfo* const item = getItemForId (newItemId);\r
- const String newItemText (item != nullptr ? item->name : String::empty);\r
+ const String newItemText (item != nullptr ? item->name : String());\r
\r
if (lastCurrentId != newItemId || label->getText() != newItemText)\r
{\r
}\r
\r
addAndMakeVisible (label);\r
- setWantsKeyboardFocus (! label->isEditable());\r
+\r
+ EditableState newEditableState = (label->isEditable() ? labelIsEditable : labelIsNotEditable);\r
+\r
+ if (newEditableState != labelEditableState)\r
+ {\r
+ labelEditableState = newEditableState;\r
+ setWantsKeyboardFocus (labelEditableState == labelIsNotEditable);\r
+ }\r
\r
label->addListener (this);\r
label->addMouseListener (this, false);\r
\r
@param componentName the name to set for the component (see Component::setName())\r
*/\r
- explicit ComboBox (const String& componentName = String::empty);\r
+ explicit ComboBox (const String& componentName = String());\r
\r
/** Destructor. */\r
~ComboBox();\r
bool isEnabled : 1, isHeading : 1;\r
};\r
\r
+ enum EditableState\r
+ {\r
+ editableUnknown,\r
+ labelIsNotEditable,\r
+ labelIsEditable\r
+ };\r
+\r
OwnedArray<ItemInfo> items;\r
Value currentId;\r
int lastCurrentId;\r
ListenerList<Listener> listeners;\r
ScopedPointer<Label> label;\r
String textWhenNothingSelected, noChoicesMessage;\r
+ EditableState labelEditableState;\r
\r
ItemInfo* getItemForId (int) const noexcept;\r
ItemInfo* getItemForIndex (int) const noexcept;\r
public:\r
//==============================================================================\r
/** Creates an ImageComponent. */\r
- ImageComponent (const String& componentName = String::empty);\r
+ ImageComponent (const String& componentName = String());\r
\r
/** Destructor. */\r
~ImageComponent();\r
@param componentName the name to give the component\r
@param labelText the text to show in the label\r
*/\r
- Label (const String& componentName = String::empty,\r
- const String& labelText = String::empty);\r
+ Label (const String& componentName = String(),\r
+ const String& labelText = String());\r
\r
/** Destructor. */\r
~Label();\r
if (ListBoxModel* m = owner.getModel())\r
return m->getTooltipForRow (row);\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
ScopedPointer<Component> customComponent;\r
return selected;\r
}\r
\r
-void ListBox::selectRangeOfRows (int firstRow, int lastRow)\r
+void ListBox::selectRangeOfRows (int firstRow, int lastRow, bool dontScrollToShowThisRange)\r
{\r
if (multipleSelection && (firstRow != lastRow))\r
{\r
selected.removeRange (Range<int> (lastRow, lastRow + 1));\r
}\r
\r
- selectRowInternal (lastRow, false, false, true);\r
+ selectRowInternal (lastRow, dontScrollToShowThisRange, false, true);\r
}\r
\r
void ListBox::flipRowSelection (const int row)\r
void ListBoxModel::returnKeyPressed (int) {}\r
void ListBoxModel::listWasScrolled() {}\r
var ListBoxModel::getDragSourceDescription (const SparseSet<int>&) { return var(); }\r
-String ListBoxModel::getTooltipForRow (int) { return String::empty; }\r
+String ListBoxModel::getTooltipForRow (int) { return String(); }\r
MouseCursor ListBoxModel::getMouseCursorForRow (int) { return MouseCursor::NormalCursor; }\r
The model pointer passed-in can be null, in which case you can set it later\r
with setModel().\r
*/\r
- ListBox (const String& componentName = String::empty,\r
+ ListBox (const String& componentName = String(),\r
ListBoxModel* model = nullptr);\r
\r
/** Destructor. */\r
This will add these rows to the current selection, so you might need to\r
clear the current selection first with deselectAllRows()\r
\r
- @param firstRow the first row to select (inclusive)\r
- @param lastRow the last row to select (inclusive)\r
+ @param firstRow the first row to select (inclusive)\r
+ @param lastRow the last row to select (inclusive)\r
+ @param dontScrollToShowThisRange if true, the list's position won't change; if false and\r
+ the selected range is off-screen, it'll scroll to make\r
+ sure that the range of rows is on-screen\r
*/\r
void selectRangeOfRows (int firstRow,\r
- int lastRow);\r
+ int lastRow,\r
+ bool dontScrollToShowThisRange = false);\r
\r
/** Deselects a row.\r
If it's not currently selected, this will do nothing.\r
style (sliderStyle),\r
lastCurrentValue (0), lastValueMin (0), lastValueMax (0),\r
minimum (0), maximum (10), interval (0), doubleClickReturnValue (0),\r
- skewFactor (1.0), velocityModeSensitivity (1.0),\r
+ skewFactor (1.0), symmetricSkew (false), velocityModeSensitivity (1.0),\r
velocityModeOffset (0.0), velocityModeThreshold (1),\r
sliderRegionStart (0), sliderRegionSize (1), sliderBeingDragged (-1),\r
pixelsForFullDragExtent (250),\r
void setSkewFactorFromMidPoint (const double sliderValueToShowAtMidPoint)\r
{\r
if (maximum > minimum)\r
- skewFactor = log (0.5) / log ((sliderValueToShowAtMidPoint - minimum)\r
- / (maximum - minimum));\r
+ skewFactor = std::log (0.5) / std::log ((sliderValueToShowAtMidPoint - minimum)\r
+ / (maximum - minimum));\r
}\r
\r
void setIncDecButtonsMode (const IncDecButtonMode mode)\r
\r
void handleVelocityDrag (const MouseEvent& e)\r
{\r
- const float mouseDiff = style == RotaryHorizontalVerticalDrag\r
- ? (e.position.x - mousePosWhenLastDragged.x) + (mousePosWhenLastDragged.y - e.position.y)\r
- : (isHorizontal()\r
- || style == RotaryHorizontalDrag\r
- || (style == IncDecButtons && incDecDragDirectionIsHorizontal()))\r
- ? e.position.x - mousePosWhenLastDragged.x\r
- : e.position.y - mousePosWhenLastDragged.y;\r
+ const bool hasHorizontalStyle =\r
+ (isHorizontal() || style == RotaryHorizontalDrag\r
+ || (style == IncDecButtons && incDecDragDirectionIsHorizontal()));\r
+\r
+ float mouseDiff;\r
+ if (style == RotaryHorizontalVerticalDrag)\r
+ mouseDiff = (e.position.x - mousePosWhenLastDragged.x) + (mousePosWhenLastDragged.y - e.position.y);\r
+ else\r
+ mouseDiff = (hasHorizontalStyle ? e.position.x - mousePosWhenLastDragged.x\r
+ : e.position.y - mousePosWhenLastDragged.y);\r
\r
const double maxSpeed = jmax (200, sliderRegionSize);\r
double speed = jlimit (0.0, maxSpeed, (double) std::abs (mouseDiff));\r
double lastCurrentValue, lastValueMin, lastValueMax;\r
double minimum, maximum, interval, doubleClickReturnValue;\r
double valueWhenLastDragged, valueOnMouseDown, skewFactor, lastAngle;\r
+ bool symmetricSkew;\r
double velocityModeSensitivity, velocityModeOffset, minMaxDiff;\r
int velocityModeThreshold;\r
RotaryParameters rotaryParams;\r
// make sure the values are sensible..\r
jassert (p.startAngleRadians >= 0 && p.endAngleRadians >= 0);\r
jassert (p.startAngleRadians < float_Pi * 4.0f && p.endAngleRadians < float_Pi * 4.0f);\r
- jassert (p.startAngleRadians < p.endAngleRadians);\r
\r
pimpl->rotaryParams = p;\r
}\r
}\r
\r
double Slider::getSkewFactor() const noexcept { return pimpl->skewFactor; }\r
-void Slider::setSkewFactor (const double factor) { pimpl->skewFactor = factor; }\r
+bool Slider::isSymmetricSkew() const noexcept { return pimpl->symmetricSkew; }\r
+\r
+void Slider::setSkewFactor (double factor, bool symmetricSkew)\r
+{\r
+ pimpl->skewFactor = factor;\r
+ pimpl->symmetricSkew = symmetricSkew;\r
+}\r
\r
void Slider::setSkewFactorFromMidPoint (const double sliderValueToShowAtMidPoint)\r
{\r
pimpl->setSkewFactorFromMidPoint (sliderValueToShowAtMidPoint);\r
+ pimpl->symmetricSkew = false;\r
}\r
\r
int Slider::getMouseDragSensitivity() const noexcept { return pimpl->pixelsForFullDragExtent; }\r
{\r
const double skew = getSkewFactor();\r
\r
- if (skew != 1.0 && proportion > 0.0)\r
- proportion = exp (log (proportion) / skew);\r
+ if (! isSymmetricSkew())\r
+ {\r
+ if (skew != 1.0 && proportion > 0.0)\r
+ proportion = std::exp (std::log (proportion) / skew);\r
+\r
+ return getMinimum() + (getMaximum() - getMinimum()) * proportion;\r
+ }\r
+\r
+ double distanceFromMiddle = 2.0 * proportion - 1.0;\r
\r
- return getMinimum() + (getMaximum() - getMinimum()) * proportion;\r
+ if (skew != 1.0 && distanceFromMiddle != 0.0)\r
+ distanceFromMiddle = std::exp (std::log (std::abs (distanceFromMiddle)) / skew)\r
+ * (distanceFromMiddle < 0 ? -1 : 1);\r
+\r
+ return getMinimum() + (getMaximum() - getMinimum()) / 2.0 * (1 + distanceFromMiddle);\r
}\r
\r
double Slider::valueToProportionOfLength (double value)\r
const double n = (value - getMinimum()) / (getMaximum() - getMinimum());\r
const double skew = getSkewFactor();\r
\r
- return skew == 1.0 ? n : pow (n, skew);\r
+ if (skew == 1.0)\r
+ return n;\r
+\r
+ if (! isSymmetricSkew())\r
+ return std::pow (n, skew);\r
+\r
+ double distanceFromMiddle = 2.0 * n - 1.0;\r
+ return (1.0 + std::pow (std::abs (distanceFromMiddle), skew) * (distanceFromMiddle < 0 ? -1 : 1)) / 2.0;\r
}\r
\r
double Slider::snapValue (double attemptedValue, DragMode)\r
slider's length; if the factor is > 1.0, the upper end of the range\r
will be expanded instead. A factor of 1.0 doesn't skew it at all.\r
\r
+ If symmetricSkew is true, the skew factor applies from the middle of the slider\r
+ to each of its ends.\r
+\r
To set the skew position by using a mid-point, use the setSkewFactorFromMidPoint()\r
method instead.\r
\r
- @see getSkewFactor, setSkewFactorFromMidPoint\r
+ @see getSkewFactor, setSkewFactorFromMidPoint, isSymmetricSkew\r
*/\r
- void setSkewFactor (double factor);\r
+ void setSkewFactor (double factor, bool symmetricSkew = false);\r
\r
/** Sets up a skew factor to alter the way values are distributed.\r
\r
This allows you to specify the slider value that should appear in the\r
centre of the slider's visible range.\r
\r
- @see setSkewFactor, getSkewFactor\r
+ @see setSkewFactor, getSkewFactor, isSymmetricSkew\r
*/\r
void setSkewFactorFromMidPoint (double sliderValueToShowAtMidPoint);\r
\r
/** Returns the current skew factor.\r
See setSkewFactor for more info.\r
- @see setSkewFactor, setSkewFactorFromMidPoint\r
+ @see setSkewFactor, setSkewFactorFromMidPoint, isSymmetricSkew\r
*/\r
double getSkewFactor() const noexcept;\r
\r
+ /** Returns the whether the skew is symmetric from the midpoint to both sides.\r
+ See setSkewFactor for more info.\r
+ @see getSkewFactor, setSkewFactor, setSkewFactorFromMidPoint\r
+ */\r
+ bool isSymmetricSkew() const noexcept;\r
+\r
//==============================================================================\r
/** Used by setIncDecButtonsMode().\r
*/\r
if (const ColumnInfo* const ci = getInfoForId (columnId))\r
return ci->name;\r
\r
- return String::empty;\r
+ return String();\r
}\r
\r
void TableHeaderComponent::setColumnName (const int columnId, const String& newName)\r
menuActive (false),\r
valueTextNeedsUpdating (false),\r
consumeEscAndReturnKeys (true),\r
+ styleChanged (false),\r
leftIndent (4),\r
topIndent (4),\r
lastTransactionTime (0),\r
{\r
setOpaque (findColour (backgroundColourId).isOpaque());\r
repaint();\r
+ styleChanged = true;\r
}\r
\r
void TextEditor::lookAndFeelChanged()\r
{\r
const int newLength = newText.length();\r
\r
- if (newLength != getTotalNumChars() || getText() != newText)\r
+ if (newLength != getTotalNumChars() || getText() != newText || styleChanged)\r
{\r
textValue = newText;\r
\r
scrollToMakeSureCursorIsVisible();\r
undoManager.clearUndoHistory();\r
\r
+ styleChanged = false;\r
+\r
repaint();\r
}\r
}\r
bool menuActive;\r
bool valueTextNeedsUpdating;\r
bool consumeEscAndReturnKeys;\r
+ bool styleChanged;\r
\r
UndoManager undoManager;\r
ScopedPointer<CaretComponent> caret;\r
{\r
public:\r
Spacer (const int itemId_, const float fixedSize_, const bool drawBar_)\r
- : ToolbarItemComponent (itemId_, String::empty, false),\r
+ : ToolbarItemComponent (itemId_, String(), false),\r
fixedSize (fixedSize_),\r
drawBar (drawBar_)\r
{\r
if (ToolbarItemComponent* const tc = dynamic_cast<ToolbarItemComponent*> (getChildComponent (i)))\r
{\r
tc->setVisible (false);\r
- const int index = oldIndexes.remove (i);\r
+ const int index = oldIndexes.removeAndReturn (i);\r
owner->addChildComponent (tc, index);\r
--i;\r
}\r
public:\r
CustomiserPanel (ToolbarItemFactory& tbf, Toolbar& bar, int optionFlags)\r
: factory (tbf), toolbar (bar), palette (tbf, bar),\r
- instructions (String::empty, TRANS ("You can drag the items above and drop them onto a toolbar to add them.")\r
- + "\n\n"\r
- + TRANS ("Items on the toolbar can also be dragged around to change their order, or dragged off the edge to delete them.")),\r
+ instructions (String(), TRANS ("You can drag the items above and drop them onto a toolbar to add them.")\r
+ + "\n\n"\r
+ + TRANS ("Items on the toolbar can also be dragged around to change their order, or dragged off the edge to delete them.")),\r
defaultButton (TRANS ("Restore to default set of items"))\r
{\r
addAndMakeVisible (palette);\r
if (rootItem != nullptr)\r
{\r
viewport->getViewedComponent()\r
- ->setSize (jmax (viewport->getMaximumVisibleWidth(), rootItem->totalWidth),\r
+ ->setSize (jmax (viewport->getMaximumVisibleWidth(), rootItem->totalWidth + 50),\r
rootItem->totalHeight - (rootItemVisible ? 0 : rootItem->itemHeight));\r
}\r
else\r
\r
void TreeView::fileDragMove (const StringArray& files, int x, int y)\r
{\r
- handleDrag (files, SourceDetails (String::empty, this, Point<int> (x, y)));\r
+ handleDrag (files, SourceDetails (String(), this, Point<int> (x, y)));\r
}\r
\r
void TreeView::fileDragExit (const StringArray&)\r
\r
void TreeView::filesDropped (const StringArray& files, int x, int y)\r
{\r
- handleDrop (files, SourceDetails (String::empty, this, Point<int> (x, y)));\r
+ handleDrop (files, SourceDetails (String(), this, Point<int> (x, y)));\r
}\r
\r
bool TreeView::isInterestedInDragSource (const SourceDetails& /*dragSourceDetails*/)\r
\r
String TreeViewItem::getUniqueName() const\r
{\r
- return String::empty;\r
+ return String();\r
}\r
\r
void TreeViewItem::itemOpennessChanged (bool)\r
\r
String TreeViewItem::getTooltip()\r
{\r
- return String::empty;\r
+ return String();\r
}\r
\r
void TreeViewItem::ownerViewChanged (TreeView*)\r
{\r
if (parentItem != nullptr && ownerView != nullptr)\r
{\r
+ if (! parentItem->isOpen())\r
+ return parentItem->getRowNumberInTree();\r
+\r
int n = 1 + parentItem->getRowNumberInTree();\r
\r
int ourIndex = parentItem->subItems.indexOf (this);\r
Once you've got a treeview component, you'll need to give it something to\r
display, using the setRootItem() method.\r
*/\r
- TreeView (const String& componentName = String::empty);\r
+ TreeView (const String& componentName = String());\r
\r
/** Destructor. */\r
~TreeView();\r
\r
jassert (alertBox != nullptr); // you have to return one of these!\r
\r
+ alertBox->setAlwaysOnTop (juce_areThereAnyAlwaysOnTopWindows());\r
+\r
#if JUCE_MODAL_LOOPS_PERMITTED\r
if (modal)\r
{\r
.getDisplayContaining (area.getCentre()).userArea);\r
\r
addToDesktop (ComponentPeer::windowIsTemporary);\r
+\r
+ startTimer (100);\r
}\r
+\r
+ creationTime = Time::getCurrentTime();\r
}\r
\r
CallOutBox::~CallOutBox()\r
// if you click on the area that originally popped-up the callout, you expect it\r
// to get rid of the box, but deleting the box here allows the click to pass through and\r
// probably re-trigger it, so we need to dismiss the box asynchronously to consume the click..\r
- dismiss();\r
+\r
+ // For touchscreens, we make sure not to dismiss the CallOutBox immediately,\r
+ // as Windows still sends touch events before the CallOutBox had a chance\r
+ // to really open.\r
+\r
+ RelativeTime elapsed = Time::getCurrentTime() - creationTime;\r
+ if (elapsed.inMilliseconds() > 200)\r
+ dismiss();\r
}\r
else\r
{\r
targetPoint - getPosition().toFloat(),\r
9.0f, arrowSize * 0.7f);\r
}\r
+\r
+void CallOutBox::timerCallback()\r
+{\r
+ toFront (true);\r
+ stopTimer();\r
+}\r
\r
The call-out will resize and position itself when the content changes size.\r
*/\r
-class JUCE_API CallOutBox : public Component\r
+class JUCE_API CallOutBox : public Component,\r
+ private Timer\r
{\r
public:\r
//==============================================================================\r
@param areaToPointTo the area that the call-out's arrow should point towards. If\r
a parentComponent is supplied, then this is relative to that\r
parent; otherwise, it's a global screen coord.\r
- @param parentComponent if non-zero, this is the component to add the call-out to. If\r
- this is a nullptr, the call-out will be added to the desktop.\r
+ @param parentComponent if not a nullptr, this is the component to add the call-out to.\r
+ If this is a nullptr, the call-out will be added to the desktop.\r
*/\r
CallOutBox (Component& contentComponent,\r
const Rectangle<int>& areaToPointTo,\r
@param areaToPointTo the area that the call-out's arrow should point towards. If\r
a parentComponent is supplied, then this is relative to that\r
parent; otherwise, it's a global screen coord.\r
- @param parentComponent if non-zero, this is the component to add the call-out to. If\r
- this is a nullptr, the call-out will be added to the desktop.\r
+ @param parentComponent if not a nullptr, this is the component to add the call-out to.\r
+ If this is a nullptr, the call-out will be added to the desktop.\r
*/\r
static CallOutBox& launchAsynchronously (Component* contentComponent,\r
const Rectangle<int>& areaToPointTo,\r
Image background;\r
bool dismissalMouseClicksAreAlwaysConsumed;\r
\r
+ Time creationTime;\r
+\r
void refreshPath();\r
+ void timerCallback() override;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CallOutBox)\r
};\r
be before calling this method. The component won't\r
be deleted by this call, so you can re-use it or delete\r
it afterwards\r
- @param componentToCentreAround if this is non-zero, it indicates a component that\r
+ @param componentToCentreAround if this is not a nullptr, it indicates a component that\r
you'd like to show this dialog box in front of. See the\r
DocumentWindow::centreAroundComponent() method for more\r
info on this parameter\r
be before calling this method. The component won't\r
be deleted by this call, so you can re-use it or delete\r
it afterwards\r
- @param componentToCentreAround if this is non-zero, it indicates a component that\r
+ @param componentToCentreAround if this is not a nullptr, it indicates a component that\r
you'd like to show this dialog box in front of. See the\r
DocumentWindow::centreAroundComponent() method for more\r
info on this parameter\r
@param menuBarModel this specifies a MenuBarModel that should be used to\r
generate the contents of a menu bar that will be placed\r
just below the title bar, and just above any content\r
- component. If this value is zero, any existing menu bar\r
- will be removed from the component; if non-zero, one will\r
- be added if it's required.\r
+ component. If this value is a nullptr, any existing menu bar\r
+ will be removed from the component; if it is not a nullptr,\r
+ one will be added if it's required.\r
@param menuBarHeight the height of the menu bar component, if one is needed. Pass a value of zero\r
or less to use the look-and-feel's default size.\r
*/\r
const bool askUserForFileIfNotSpecified,\r
const bool showMessageOnFailure)\r
{\r
- if (newFile == File::nonexistent)\r
+ if (newFile == File())\r
{\r
if (askUserForFileIfNotSpecified)\r
return saveAsInteractive (true);\r
//==============================================================================\r
/** Returns the file that this document was last successfully saved or loaded from.\r
\r
- When the document object is created, this will be set to File::nonexistent.\r
+ When the document object is created, this will be set to File().\r
\r
It is changed when one of the load or save methods is used, or when setFile()\r
is used to explicitly set it.\r
This method works very well in conjunction with a RecentlyOpenedFilesList\r
object to manage your recent-files list.\r
\r
- As a default value, it's ok to return File::nonexistent, and the document\r
- object will use a sensible one instead.\r
+ As a default value, it's ok to return File(), and the document object will\r
+ use a sensible one instead.\r
\r
@see RecentlyOpenedFilesList\r
*/\r
\r
ID: juce_gui_extra\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE extended GUI classes\r
description: Miscellaneous GUI classes for specialised tasks.\r
website: http://www.juce.com/juce\r
addAndMakeVisible (hueSelector = new HueSelectorComp (*this, h, gapAroundColourSpaceComponent));\r
}\r
\r
- update();\r
+ update (dontSendNotification);\r
}\r
\r
ColourSelector::~ColourSelector()\r
return ((flags & showAlphaChannel) != 0) ? colour : colour.withAlpha ((uint8) 0xff);\r
}\r
\r
-void ColourSelector::setCurrentColour (Colour c)\r
+void ColourSelector::setCurrentColour (Colour c, NotificationType notification)\r
{\r
if (c != colour)\r
{\r
colour = ((flags & showAlphaChannel) != 0) ? c : c.withAlpha ((uint8) 0xff);\r
\r
updateHSV();\r
- update();\r
+ update (notification);\r
}\r
}\r
\r
{\r
h = newH;\r
colour = Colour (h, s, v, colour.getFloatAlpha());\r
- update();\r
+ update (sendNotification);\r
}\r
}\r
\r
s = newS;\r
v = newV;\r
colour = Colour (h, s, v, colour.getFloatAlpha());\r
- update();\r
+ update (sendNotification);\r
}\r
}\r
\r
colour.getHSB (h, s, v);\r
}\r
\r
-void ColourSelector::update()\r
+void ColourSelector::update (NotificationType notification)\r
{\r
if (sliders[0] != nullptr)\r
{\r
- sliders[0]->setValue ((int) colour.getRed());\r
- sliders[1]->setValue ((int) colour.getGreen());\r
- sliders[2]->setValue ((int) colour.getBlue());\r
- sliders[3]->setValue ((int) colour.getAlpha());\r
+ sliders[0]->setValue ((int) colour.getRed(), notification);\r
+ sliders[1]->setValue ((int) colour.getGreen(), notification);\r
+ sliders[2]->setValue ((int) colour.getBlue(), notification);\r
+ sliders[3]->setValue ((int) colour.getAlpha(), notification);\r
}\r
\r
if (colourSpace != nullptr)\r
if ((flags & showColourAtTop) != 0)\r
repaint (previewArea);\r
\r
- sendChangeMessage();\r
+ if (notification != dontSendNotification)\r
+ sendChangeMessage();\r
+\r
+ if (notification == sendNotificationSync)\r
+ dispatchPendingMessages();\r
}\r
\r
//==============================================================================\r
Colour getCurrentColour() const;\r
\r
/** Changes the colour that is currently being shown. */\r
- void setCurrentColour (Colour newColour);\r
+ void setCurrentColour (Colour newColour, NotificationType notificationType = sendNotification);\r
\r
//==============================================================================\r
/** Tells the selector how many preset colour swatches you want to have on the component.\r
void setHue (float newH);\r
void setSV (float newS, float newV);\r
void updateHSV();\r
- void update();\r
+ void update (NotificationType);\r
void sliderValueChanged (Slider*) override;\r
void paint (Graphics&) override;\r
void resized() override;\r
void paintButton (Graphics& g, bool /*isOver*/, bool /*isDown*/) override\r
{\r
getLookAndFeel().drawKeymapChangeButton (g, getWidth(), getHeight(), *this,\r
- keyNum >= 0 ? getName() : String::empty);\r
+ keyNum >= 0 ? getName() : String());\r
}\r
\r
static void menuCallback (int result, ChangeKeyButton* button)\r
for (int i = 0; i < jmin ((int) maxNumAssignments, keyPresses.size()); ++i)\r
addKeyPressButton (owner.getDescriptionForKeyPress (keyPresses.getReference (i)), i, isReadOnly);\r
\r
- addKeyPressButton (String::empty, -1, isReadOnly);\r
+ addKeyPressButton (String(), -1, isReadOnly);\r
}\r
\r
void addKeyPressButton (const String& desc, const int index, const bool isReadOnly)\r
TRANS("Reset to defaults"),\r
TRANS("Are you sure you want to reset all the key-mappings to their default state?"),\r
TRANS("Reset"),\r
- String::empty,\r
+ String(),\r
&owner,\r
ModalCallbackFunction::forComponent (resetToDefaultsCallback, &owner));\r
}\r
}\r
\r
//==============================================================================\r
-class SliderComp : public Component,\r
- private Slider::Listener\r
+struct SliderComp : public Component,\r
+ private Slider::Listener\r
{\r
-public:\r
SliderComp (LivePropertyEditorBase& e, bool useFloat)\r
: editor (e), isFloat (useFloat)\r
{\r
slider.addListener (this);\r
}\r
\r
- void updateRange()\r
+ virtual void updateRange()\r
{\r
double v = isFloat ? parseDouble (editor.value.getStringValue (false))\r
: (double) parseInt (editor.value.getStringValue (false));\r
slider.setValue (v, dontSendNotification);\r
}\r
\r
-private:\r
- LivePropertyEditorBase& editor;\r
- Slider slider;\r
- bool isFloat;\r
-\r
- void sliderValueChanged (Slider*)\r
+ void sliderValueChanged (Slider*) override\r
{\r
editor.applyNewValue (isFloat ? getAsString ((double) slider.getValue(), editor.wasHex)\r
: getAsString ((int64) slider.getValue(), editor.wasHex));\r
\r
}\r
\r
- void sliderDragStarted (Slider*) {}\r
- void sliderDragEnded (Slider*) { updateRange(); }\r
+ void sliderDragStarted (Slider*) override {}\r
+ void sliderDragEnded (Slider*) override { updateRange(); }\r
\r
- void resized()\r
+ void resized() override\r
{\r
slider.setBounds (getLocalBounds().removeFromTop (25));\r
}\r
+\r
+ LivePropertyEditorBase& editor;\r
+ Slider slider;\r
+ bool isFloat;\r
};\r
\r
+//==============================================================================\r
+struct BoolSliderComp : public SliderComp\r
+{\r
+ BoolSliderComp (LivePropertyEditorBase& e) : SliderComp (e, false) {}\r
+\r
+ void updateRange() override\r
+ {\r
+ slider.setRange (0.0, 1.0, dontSendNotification);\r
+ slider.setValue (editor.value.getStringValue (false) == "true", dontSendNotification);\r
+ }\r
+\r
+ void sliderValueChanged (Slider*) override { editor.applyNewValue (slider.getValue() > 0.5 ? "true" : "false"); }\r
+};\r
\r
Component* createIntegerSlider (LivePropertyEditorBase& editor) { return new SliderComp (editor, false); }\r
Component* createFloatSlider (LivePropertyEditorBase& editor) { return new SliderComp (editor, true); }\r
+Component* createBoolSlider (LivePropertyEditorBase& editor) { return new BoolSliderComp (editor); }\r
\r
}\r
\r
inline void setFromString (uint64& v, const String& s) { v = (uint64) parseInt (s); }\r
inline void setFromString (double& v, const String& s) { v = parseDouble (s); }\r
inline void setFromString (float& v, const String& s) { v = (float) parseDouble (s); }\r
+ inline void setFromString (bool& v, const String& s) { v = (s == "true"); }\r
inline void setFromString (String& v, const String& s) { v = s; }\r
inline void setFromString (Colour& v, const String& s) { v = Colour ((uint32) parseInt (s)); }\r
\r
inline String getAsString (unsigned short v, bool preferHex) { return intToString ((int) v, preferHex); }\r
inline String getAsString (int v, bool preferHex) { return intToString ((int) v, preferHex); }\r
inline String getAsString (unsigned int v, bool preferHex) { return intToString ((int) v, preferHex); }\r
+ inline String getAsString (bool v, bool) { return v ? "true" : "false"; }\r
inline String getAsString (int64 v, bool preferHex) { return intToString ((int64) v, preferHex); }\r
inline String getAsString (uint64 v, bool preferHex) { return intToString ((int64) v, preferHex); }\r
inline String getAsString (Colour v, bool) { return intToString ((int) v.getARGB(), true); }\r
Component* createColourEditor (LivePropertyEditorBase&);\r
Component* createIntegerSlider (LivePropertyEditorBase&);\r
Component* createFloatSlider (LivePropertyEditorBase&);\r
+ Component* createBoolSlider (LivePropertyEditorBase&);\r
\r
template <typename Type> struct CustomEditor { static Component* create (LivePropertyEditorBase&) { return nullptr; } };\r
template<> struct CustomEditor<char> { static Component* create (LivePropertyEditorBase& e) { return createIntegerSlider (e); } };\r
template<> struct CustomEditor<float> { static Component* create (LivePropertyEditorBase& e) { return createFloatSlider (e); } };\r
template<> struct CustomEditor<double> { static Component* create (LivePropertyEditorBase& e) { return createFloatSlider (e); } };\r
template<> struct CustomEditor<Colour> { static Component* create (LivePropertyEditorBase& e) { return createColourEditor (e); } };\r
+ template<> struct CustomEditor<bool> { static Component* create (LivePropertyEditorBase& e) { return createBoolSlider (e); } };\r
\r
template <typename Type>\r
struct LivePropertyEditor : public LivePropertyEditorBase\r
If dontAddNonExistentFiles is true, then each file will be checked and only those\r
that exist will be added.\r
\r
- If filesToAvoid is non-zero, then it is considered to be a zero-terminated array of\r
- pointers to file objects. Any files that appear in this list will not be added to the\r
- menu - the reason for this is that you might have a number of files already open, so\r
- might not want these to be shown in the menu.\r
+ If filesToAvoid is not a nullptr, then it is considered to be a zero-terminated array\r
+ of pointers to file objects. Any files that appear in this list will not be added to\r
+ the menu - the reason for this is that you might have a number of files already open,\r
+ so might not want these to be shown in the menu.\r
\r
It returns the number of items that were added.\r
*/\r
jassert (backgroundImage.isValid());\r
\r
setOpaque (! backgroundImage.hasAlphaChannel());\r
- makeVisible (image.getWidth(), image.getHeight(), useDropShadow);\r
+\r
+ #if JUCE_IOS || JUCE_ANDROID\r
+ const bool useFullScreen = true;\r
+ #else\r
+ const bool useFullScreen = false;\r
+ #endif\r
+\r
+ makeVisible (image.getWidth(), image.getHeight(), useDropShadow, useFullScreen);\r
}\r
\r
SplashScreen::SplashScreen (const String& title, int width, int height, bool useDropShadow)\r
: Component (title),\r
clickCountToDelete (0)\r
{\r
- makeVisible (width, height, useDropShadow);\r
+ makeVisible (width, height, useDropShadow, false);\r
}\r
\r
-void SplashScreen::makeVisible (int w, int h, bool useDropShadow)\r
+void SplashScreen::makeVisible (int w, int h, bool useDropShadow, bool fullscreen)\r
{\r
clickCountToDelete = Desktop::getInstance().getMouseButtonClickCounter();\r
creationTime = Time::getCurrentTime();\r
\r
+ const Rectangle<int> screenSize = Desktop::getInstance().getDisplays().getMainDisplay().userArea;\r
+ const int width = (fullscreen ? screenSize.getWidth() : w);\r
+ const int height = (fullscreen ? screenSize.getHeight() : h);\r
+\r
setAlwaysOnTop (true);\r
setVisible (true);\r
- centreWithSize (w, h);\r
+ centreWithSize (width, height);\r
addToDesktop (useDropShadow ? ComponentPeer::windowHasDropShadow : 0);\r
+\r
+ if (fullscreen)\r
+ getPeer()->setFullScreen (true);\r
+\r
toFront (false);\r
}\r
\r
void SplashScreen::paint (Graphics& g)\r
{\r
g.setOpacity (1.0f);\r
-\r
- g.drawImage (backgroundImage,\r
- 0, 0, getWidth(), getHeight(),\r
- 0, 0, backgroundImage.getWidth(), backgroundImage.getHeight());\r
+ g.drawImage (backgroundImage, getLocalBounds().toFloat(), RectanglePlacement (RectanglePlacement::fillDestination));\r
}\r
\r
void SplashScreen::timerCallback()\r
int clickCountToDelete;\r
\r
void timerCallback() override;\r
- void makeVisible (int w, int h, bool shadow);\r
+ void makeVisible (int w, int h, bool shadow, bool fullscreen);\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SplashScreen)\r
};\r
\r
namespace MouseCursorHelpers\r
{\r
- extern NSImage* createNSImage (const Image&);\r
+ extern NSImage* createNSImage (const Image&, float scaleFactor = 1.f);\r
}\r
\r
extern NSMenu* createNSMenu (const PopupMenu&, const String& name, int topLevelMenuId,\r
\r
extern int64 getMouseEventTime();\r
\r
+#if JUCE_MINGW\r
+ #define JUCE_COMCLASS(name, guid) \\r
+ template<> struct UUIDGetter<::name> { static CLSID get() { return uuidFromString (guid); } };\r
+\r
+ #ifdef __uuidof\r
+ #undef __uuidof\r
+ #endif\r
+\r
+ #define __uuidof(cls) UUIDGetter<::cls>::get()\r
+\r
+#else\r
+ #define JUCE_COMCLASS(name, guid)\r
+#endif\r
+\r
+JUCE_COMCLASS (IOleObject, "00000112-0000-0000-C000-000000000046")\r
+JUCE_COMCLASS (IOleWindow, "00000114-0000-0000-C000-000000000046")\r
+JUCE_COMCLASS (IOleInPlaceSite, "00000119-0000-0000-C000-000000000046")\r
+\r
namespace ActiveXHelpers\r
{\r
//==============================================================================\r
\r
JUCE_COMRESULT QueryInterface (REFIID type, void** result)\r
{\r
- if (type == IID_IOleInPlaceSite)\r
+ if (type == __uuidof (IOleInPlaceSite))\r
{\r
inplaceSite->AddRef();\r
*result = static_cast<IOleInPlaceSite*> (inplaceSite);\r
HWND getHWND (const ActiveXControlComponent* const component)\r
{\r
HWND hwnd = 0;\r
- const IID iid = IID_IOleWindow;\r
+ const IID iid = __uuidof(IOleWindow);\r
\r
if (IOleWindow* const window = (IOleWindow*) component->queryInterface (&iid))\r
{\r
ScopedPointer<Pimpl> newControl (new Pimpl (hwnd, *this));\r
\r
HRESULT hr;\r
- if ((hr = OleCreate (*(const IID*) controlIID, IID_IOleObject, 1 /*OLERENDER_DRAW*/, 0,\r
+ if ((hr = OleCreate (*(const IID*) controlIID, __uuidof (IOleObject), 1 /*OLERENDER_DRAW*/, 0,\r
newControl->clientSite, newControl->storage,\r
(void**) &(newControl->control))) == S_OK)\r
{\r
\r
void SystemTrayIconComponent::hideInfoBubble()\r
{\r
- showInfoBubble (String::empty, String::empty);\r
+ showInfoBubble (String(), String());\r
}\r
\r
void* SystemTrayIconComponent::getNativeHandle() const\r
==============================================================================\r
*/\r
\r
+JUCE_COMCLASS (DWebBrowserEvents2, "34A715A0-6587-11D0-924A-0020AFC7AC4D")\r
+JUCE_COMCLASS (IConnectionPointContainer, "B196B284-BAB4-101A-B69C-00AA00341D07")\r
+JUCE_COMCLASS (IWebBrowser2, "D30C1661-CDAF-11D0-8A3E-00C04FC9E26E")\r
+JUCE_COMCLASS (WebBrowser, "8856F961-340A-11D0-A96B-00C04FD705A2")\r
+\r
class WebBrowserComponent::Pimpl : public ActiveXControlComponent\r
{\r
public:\r
\r
void createBrowser()\r
{\r
- createControl (&CLSID_WebBrowser);\r
- browser = (IWebBrowser2*) queryInterface (&IID_IWebBrowser2);\r
+ CLSID webCLSID = __uuidof (WebBrowser);\r
+ createControl (&webCLSID);\r
+\r
+ GUID iidWebBrowser2 = __uuidof (IWebBrowser2);\r
+ GUID iidConnectionPointContainer = __uuidof (IConnectionPointContainer);\r
+\r
+ browser = (IWebBrowser2*) queryInterface (&iidWebBrowser2);\r
\r
if (IConnectionPointContainer* connectionPointContainer\r
- = (IConnectionPointContainer*) queryInterface (&IID_IConnectionPointContainer))\r
+ = (IConnectionPointContainer*) queryInterface (&iidConnectionPointContainer))\r
{\r
- connectionPointContainer->FindConnectionPoint (DIID_DWebBrowserEvents2, &connectionPoint);\r
+ connectionPointContainer->FindConnectionPoint (__uuidof (DWebBrowserEvents2), &connectionPoint);\r
\r
if (connectionPoint != nullptr)\r
{\r
\r
void WebBrowserComponent::focusGained (FocusChangeType)\r
{\r
- if (IOleObject* oleObject = (IOleObject*) browser->queryInterface (&IID_IOleObject))\r
+ GUID iidOleObject = __uuidof (IOleObject);\r
+ GUID iidOleWindow = __uuidof (IOleWindow);\r
+\r
+ if (IOleObject* oleObject = (IOleObject*) browser->queryInterface (&iidOleObject))\r
{\r
- if (IOleWindow* oleWindow = (IOleWindow*) browser->queryInterface (&IID_IOleWindow))\r
+ if (IOleWindow* oleWindow = (IOleWindow*) browser->queryInterface (&iidOleWindow))\r
{\r
IOleClientSite* oleClientSite = nullptr;\r
\r
\r
ID: juce_opengl\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE OpenGL classes\r
description: Classes for rendering OpenGL in a JUCE window.\r
website: http://www.juce.com/juce\r
{\r
return CGLGetCurrentContext() != 0;\r
}\r
+\r
+//==============================================================================\r
+void componentPeerAboutToBeRemovedFromScreen (ComponentPeer& peer)\r
+{\r
+ Array<Component*> stack;\r
+ stack.add (&peer.getComponent());\r
+\r
+ while (stack.size() != 0)\r
+ {\r
+ Component& comp = *stack.removeAndReturn (0);\r
+\r
+ const int n = comp.getNumChildComponents();\r
+ for (int i = 0; i < n; ++i)\r
+ if (Component* child = comp.getChildComponent (i))\r
+ stack.add (child);\r
+\r
+ if (OpenGLContext* context = OpenGLContext::getContextAttachedTo (comp))\r
+ context->detach();\r
+ }\r
+}\r
\r
ID: juce_osc\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE OSC classes\r
description: Open Sound Control implementation.\r
website: http://www.juce.com/juce\r
namespace juce\r
{\r
#include "marketplace/juce_OnlineUnlockStatus.cpp"\r
+\r
+ #if JUCE_MODULE_AVAILABLE_juce_data_structures\r
#include "marketplace/juce_TracktionMarketplaceStatus.cpp"\r
+ #endif\r
\r
#if JUCE_MODULE_AVAILABLE_juce_gui_extra\r
#include "marketplace/juce_OnlineUnlockForm.cpp"\r
\r
ID: juce_tracktion_marketplace\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE Tracktion marketplace support\r
description: Classes for online product authentication via the Tracktion marketplace.\r
website: http://www.juce.com/juce\r
license: GPL/Commercial\r
\r
- dependencies: juce_data_structures juce_cryptography\r
+ dependencies: juce_cryptography\r
\r
END_JUCE_MODULE_DECLARATION\r
\r
\r
//==============================================================================\r
#include <juce_cryptography/juce_cryptography.h>\r
-#include <juce_data_structures/juce_data_structures.h>\r
+\r
+#if JUCE_MODULE_AVAILABLE_juce_data_structures\r
+ #include <juce_data_structures/juce_data_structures.h>\r
+#endif\r
\r
#if JUCE_MODULE_AVAILABLE_juce_gui_extra\r
#include <juce_gui_extra/juce_gui_extra.h>\r
\r
namespace juce\r
{\r
+ #if JUCE_MODULE_AVAILABLE_juce_data_structures\r
#include "marketplace/juce_OnlineUnlockStatus.h"\r
#include "marketplace/juce_TracktionMarketplaceStatus.h"\r
+ #endif\r
#include "marketplace/juce_KeyFileGeneration.h"\r
\r
#if JUCE_MODULE_AVAILABLE_juce_gui_extra\r
const String& machineNumbers,\r
const RSAKey& privateKey);\r
\r
+ /** Similar to the above key file generation method but with an expiry time.\r
+ You must supply a Time after which this key file should no longer be considered as active.\r
+\r
+ N.B. when an app is unlocked with an expiring key file, OnlineUnlockStatus::isUnlocked will\r
+ still return false. You must then check OnlineUnlockStatus::getExpiryTime to see if this\r
+ expiring key file is still in date and act accordingly.\r
+\r
+ @see OnlineUnlockStatus\r
+ */\r
+ static String JUCE_CALLTYPE generateExpiringKeyFile (const String& appName,\r
+ const String& userEmail,\r
+ const String& userName,\r
+ const String& machineNumbers,\r
+ const Time expiryTime,\r
+ const RSAKey& privateKey);\r
+\r
//==============================================================================\r
/** This is a simple implementation of a key-generator that you could easily wrap in\r
a command-line main() function for use on your server.\r
passwordBox.setInputRestrictions (64);\r
passwordBox.setFont (font);\r
\r
- r.removeFromBottom (30);\r
+ r.removeFromBottom (20);\r
emailBox.setBounds (r.removeFromBottom (boxHeight));\r
emailBox.setInputRestrictions (512);\r
emailBox.setFont (font);\r
\r
- r.removeFromBottom (30);\r
+ r.removeFromBottom (20);\r
\r
message.setBounds (r);\r
\r
\r
struct KeyFileUtils\r
{\r
+ static XmlElement createKeyFileContent (const String& appName,\r
+ const String& userEmail,\r
+ const String& userName,\r
+ const String& machineNumbers,\r
+ const String& machineNumbersAttributeName)\r
+ {\r
+ XmlElement xml ("key");\r
+\r
+ xml.setAttribute ("user", userName);\r
+ xml.setAttribute ("email", userEmail);\r
+ xml.setAttribute (machineNumbersAttributeName, machineNumbers);\r
+ xml.setAttribute ("app", appName);\r
+ xml.setAttribute ("date", String::toHexString (Time::getCurrentTime().toMilliseconds()));\r
+\r
+ return xml;\r
+ }\r
+\r
+ static String createKeyFileComment (const String& appName,\r
+ const String& userEmail,\r
+ const String& userName,\r
+ const String& machineNumbers)\r
+ {\r
+ String comment;\r
+ comment << "Keyfile for " << appName << newLine;\r
+\r
+ if (userName.isNotEmpty())\r
+ comment << "User: " << userName << newLine;\r
+\r
+ comment << "Email: " << userEmail << newLine\r
+ << "Machine numbers: " << machineNumbers << newLine\r
+ << "Created: " << Time::getCurrentTime().toString (true, true);\r
+\r
+ return comment;\r
+ }\r
+\r
+ //==============================================================================\r
static String encryptXML (const XmlElement& xml, RSAKey privateKey)\r
{\r
MemoryOutputStream text;\r
return decryptXML (keyFileText.fromLastOccurrenceOf ("#", false, false).trim(), rsaPublicKey);\r
}\r
\r
- static StringArray getMachineNumbers (XmlElement xml)\r
+ static StringArray getMachineNumbers (XmlElement xml, StringRef attributeName)\r
{\r
StringArray numbers;\r
- numbers.addTokens (xml.getStringAttribute ("mach"), ",; ", StringRef());\r
+ numbers.addTokens (xml.getStringAttribute (attributeName), ",; ", StringRef());\r
numbers.trim();\r
numbers.removeEmptyStrings();\r
return numbers;\r
{\r
String licensee, email, appID;\r
StringArray machineNumbers;\r
+\r
+ bool keyFileExpires;\r
+ Time expiryTime;\r
};\r
\r
static KeyFileData getDataFromKeyFile (XmlElement xml)\r
data.licensee = getLicensee (xml);\r
data.email = getEmail (xml);\r
data.appID = getAppID (xml);\r
- data.machineNumbers.addArray (getMachineNumbers (xml));\r
+\r
+ if (xml.hasAttribute ("expiryTime") && xml.hasAttribute ("expiring_mach"))\r
+ {\r
+ data.keyFileExpires = true;\r
+ data.machineNumbers.addArray (getMachineNumbers (xml, "expiring_mach"));\r
+ data.expiryTime = Time (xml.getStringAttribute ("expiryTime").getHexValue64());\r
+ }\r
+ else\r
+ {\r
+ data.keyFileExpires = false;\r
+ data.machineNumbers.addArray (getMachineNumbers (xml, "mach"));\r
+ }\r
\r
return data;\r
}\r
};\r
\r
//==============================================================================\r
+#if JUCE_MODULE_AVAILABLE_juce_data_structures\r
const char* OnlineUnlockStatus::unlockedProp = "u";\r
+const char* OnlineUnlockStatus::expiryTimeProp = "t";\r
static const char* stateTagName = "REG";\r
static const char* userNameProp = "user";\r
static const char* keyfileDataProp = "key";\r
KeyFileUtils::KeyFileData data;\r
data = KeyFileUtils::getDataFromKeyFile (KeyFileUtils::getXmlFromKeyFile (status[keyfileDataProp], getPublicKey()));\r
\r
- if (! doesProductIDMatch (data.appID))\r
- status.removeProperty (unlockedProp, nullptr);\r
+ if (data.keyFileExpires)\r
+ {\r
+ if (! doesProductIDMatch (data.appID))\r
+ status.removeProperty (expiryTimeProp, nullptr);\r
\r
- if (! machineNumberAllowed (data.machineNumbers, localMachineNums))\r
- status.removeProperty (unlockedProp, nullptr);\r
+ if (! machineNumberAllowed (data.machineNumbers, localMachineNums))\r
+ status.removeProperty (expiryTimeProp, nullptr);\r
+ }\r
+ else\r
+ {\r
+ if (! doesProductIDMatch (data.appID))\r
+ status.removeProperty (unlockedProp, nullptr);\r
+\r
+ if (! machineNumberAllowed (data.machineNumbers, localMachineNums))\r
+ status.removeProperty (unlockedProp, nullptr);\r
+ }\r
}\r
\r
void OnlineUnlockStatus::save()\r
{\r
setUserEmail (data.email);\r
status.setProperty (keyfileDataProp, keyFileContent, nullptr);\r
- status.removeProperty (unlockedProp, nullptr);\r
+ status.removeProperty (data.keyFileExpires ? expiryTimeProp : unlockedProp, nullptr);\r
\r
var actualResult (0), dummyResult (1.0);\r
var v (machineNumberAllowed (data.machineNumbers, getLocalMachineIDs()));\r
dummyResult.swapWith (v);\r
jassert (! dummyResult);\r
\r
+ if (data.keyFileExpires)\r
+ {\r
+ if ((! dummyResult) && actualResult)\r
+ status.setProperty (expiryTimeProp, data.expiryTime.toMilliseconds(), nullptr);\r
+\r
+ return getExpiryTime().toMilliseconds() > 0;\r
+ }\r
+\r
if ((! dummyResult) && actualResult)\r
status.setProperty (unlockedProp, actualResult, nullptr);\r
\r
return handleFailedConnection();\r
}\r
\r
+#endif // JUCE_MODULE_AVAILABLE_juce_data_structures\r
+\r
//==============================================================================\r
String KeyGeneration::generateKeyFile (const String& appName,\r
const String& userEmail,\r
const String& machineNumbers,\r
const RSAKey& privateKey)\r
{\r
- XmlElement xml ("key");\r
+ XmlElement xml (KeyFileUtils::createKeyFileContent (appName, userEmail, userName, machineNumbers, "mach"));\r
+ const String comment (KeyFileUtils::createKeyFileComment (appName, userEmail, userName, machineNumbers));\r
\r
- xml.setAttribute ("user", userName);\r
- xml.setAttribute ("email", userEmail);\r
- xml.setAttribute ("mach", machineNumbers);\r
- xml.setAttribute ("app", appName);\r
- xml.setAttribute ("date", String::toHexString (Time::getCurrentTime().toMilliseconds()));\r
-\r
- String comment;\r
- comment << "Keyfile for " << appName << newLine;\r
+ return KeyFileUtils::createKeyFile (comment, xml, privateKey);\r
+}\r
\r
- if (userName.isNotEmpty())\r
- comment << "User: " << userName << newLine;\r
+String KeyGeneration::generateExpiringKeyFile (const String& appName,\r
+ const String& userEmail,\r
+ const String& userName,\r
+ const String& machineNumbers,\r
+ const Time expiryTime,\r
+ const RSAKey& privateKey)\r
+{\r
+ XmlElement xml (KeyFileUtils::createKeyFileContent (appName, userEmail, userName, machineNumbers, "expiring_mach"));\r
+ xml.setAttribute ("expiryTime", String::toHexString (expiryTime.toMilliseconds()));\r
\r
- comment << "Email: " << userEmail << newLine\r
- << "Machine numbers: " << machineNumbers << newLine\r
- << "Created: " << Time::getCurrentTime().toString (true, true);\r
+ String comment (KeyFileUtils::createKeyFileComment (appName, userEmail, userName, machineNumbers));\r
+ comment << newLine << "Expires: " << expiryTime.toString (true, true);\r
\r
return KeyFileUtils::createKeyFile (comment, xml, privateKey);\r
}\r
changed by a cracker in order to unlock your app, so the more places you call this\r
method, the more hassle it will be for them to find and crack them all.\r
*/\r
- inline var isUnlocked() const { return status[unlockedProp]; }\r
+ inline var isUnlocked() const { return status[unlockedProp]; }\r
+\r
+ /** Returns the Time when the keyfile expires.\r
+\r
+ If a the key file obtained has an expiry time, isUnlocked will return false and this\r
+ will return a non-zero time. The interpretation of this is up to your app but could\r
+ be used for subscription based models or trial periods.\r
+ */\r
+ inline Time getExpiryTime() const { return Time (static_cast<int64> (status[expiryTimeProp])); }\r
\r
/** Optionally allows the app to provide the user's email address if\r
it is known.\r
UnlockResult handleFailedConnection();\r
\r
static const char* unlockedProp;\r
+ static const char* expiryTimeProp;\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OnlineUnlockStatus)\r
};\r
==============================================================================\r
*/\r
\r
-CameraDevice::CameraDevice (const String& nm, int index, int minWidth, int minHeight, int maxWidth, int maxHeight)\r
- : name (nm), pimpl (new Pimpl (name, index, minWidth, minHeight, maxWidth, maxHeight))\r
+CameraDevice::CameraDevice (const String& nm, int index, int minWidth, int minHeight, int maxWidth, int maxHeight,\r
+ bool highQuality)\r
+ : name (nm), pimpl (new Pimpl (name, index, minWidth, minHeight, maxWidth, maxHeight, highQuality))\r
{\r
}\r
\r
\r
CameraDevice* CameraDevice::openDevice (int index,\r
int minWidth, int minHeight,\r
- int maxWidth, int maxHeight)\r
+ int maxWidth, int maxHeight,\r
+ bool highQuality)\r
{\r
ScopedPointer<CameraDevice> d (new CameraDevice (getAvailableDevices() [index], index,\r
- minWidth, minHeight, maxWidth, maxHeight));\r
+ minWidth, minHeight, maxWidth, maxHeight,\r
+ highQuality));\r
\r
if (d->pimpl->openedOk())\r
return d.release();\r
The size constraints allow the method to choose between different resolutions if\r
the camera supports this. If the resolution cam't be specified (e.g. on the Mac)\r
then these will be ignored.\r
+\r
+ On Mac, if highQuality is false, then the camera will be opened in preview mode\r
+ which will allow the OS to drop frames if the computer cannot keep up in processing\r
+ the frames.\r
*/\r
static CameraDevice* openDevice (int deviceIndex,\r
int minWidth = 128, int minHeight = 64,\r
- int maxWidth = 1024, int maxHeight = 768);\r
+ int maxWidth = 1024, int maxHeight = 768,\r
+ bool highQuality = true);\r
\r
//==============================================================================\r
/** Returns the name of this device */\r
friend struct ViewerComponent;\r
\r
CameraDevice (const String& name, int index,\r
- int minWidth, int minHeight, int maxWidth, int maxHeight);\r
+ int minWidth, int minHeight, int maxWidth, int maxHeight, bool highQuality);\r
\r
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CameraDevice)\r
};\r
\r
ID: juce_video\r
vendor: juce\r
- version: 4.2.3\r
+ version: 4.2.4\r
name: JUCE video playback and capture classes\r
description: Classes for playing video and capturing camera input.\r
website: http://www.juce.com/juce\r
\r
struct CameraDevice::Pimpl\r
{\r
- Pimpl (const String&, const int index, int /*minWidth*/, int /*minHeight*/, int /*maxWidth*/, int /*maxHeight*/)\r
+ Pimpl (const String&, const int index, int /*minWidth*/, int /*minHeight*/, int /*maxWidth*/, int /*maxHeight*/,\r
+ bool useHighQuality)\r
: input (nil),\r
audioDevice (nil),\r
audioInput (nil),\r
if (err == nil)\r
{\r
resetFile();\r
+ imageOutput = useHighQuality ? [[QTCaptureDecompressedVideoOutput alloc] init] :\r
+ [[QTCaptureVideoPreviewOutput alloc] init];\r
\r
- imageOutput = [[QTCaptureDecompressedVideoOutput alloc] init];\r
[imageOutput setDelegate: callbackDelegate];\r
\r
if (err == nil)\r
QTCaptureDeviceInput* audioInput;\r
QTCaptureSession* session;\r
QTCaptureMovieFileOutput* fileOutput;\r
- QTCaptureDecompressedVideoOutput* imageOutput;\r
+ QTCaptureOutput* imageOutput;\r
NSObject* callbackDelegate;\r
String openingError;\r
int64 firstPresentationTime, averageTimeOffset;\r
[view setMovie: nil];\r
[theMovie release];\r
movie = 0;\r
- movieFile = File::nonexistent;\r
+ movieFile = File();\r
}\r
\r
bool QuickTimeMovieComponent::isMovieOpen() const\r
{\r
Pimpl (const String&, int index,\r
int minWidth, int minHeight,\r
- int maxWidth, int maxHeight)\r
+ int maxWidth, int maxHeight, bool /*highQuality*/)\r
: isRecording (false),\r
openedSuccessfully (false),\r
imageNeedsFlipping (false),\r
if (wc->isRegistered())\r
{\r
DWORD exstyle = 0;\r
- DWORD type = WS_CHILD;\r
+ DWORD windowType = WS_CHILD;\r
\r
hwnd = CreateWindowEx (exstyle, wc->getWindowClassName(),\r
- L"", type, 0, 0, 0, 0, parentToAddTo, 0,\r
+ L"", windowType, 0, 0, 0, 0, parentToAddTo, 0,\r
(HINSTANCE) Process::getCurrentModuleInstanceHandle(), 0);\r
\r
if (hwnd != 0)\r
pimpl->qtControl->QuickTimeInitialize();\r
pimpl->qtControl->PutSizing (qtMovieFitsControl);\r
\r
- if (movieFile != File::nonexistent)\r
+ if (movieFile != File())\r
loadMovie (movieFile, controllerVisible);\r
}\r
}\r
{\r
const ScopedPointer<InputStream> movieStreamDeleter (movieStream);\r
\r
- movieFile = File::nonexistent;\r
+ movieFile = File();\r
movieLoaded = false;\r
pimpl->qtMovie = 0;\r
controllerVisible = isControllerVisible;\r
void QuickTimeMovieComponent::closeMovie()\r
{\r
stop();\r
- movieFile = File::nonexistent;\r
+ movieFile = File();\r
movieLoaded = false;\r
pimpl->qtMovie = 0;\r
\r
void closeMovie();\r
\r
/** Returns the movie file that is currently open.\r
-\r
- If there isn't one, this returns File::nonexistent\r
+ If there isn't one, this returns File()\r
*/\r
File getCurrentMovieFile() const;\r
\r