| @@ -357,7 +357,7 @@ public final class JuceDemo extends Activity | |||||
| @Override | @Override | ||||
| public void onSurfaceChanged (GL10 unused, int width, int height) | public void onSurfaceChanged (GL10 unused, int width, int height) | ||||
| { | { | ||||
| contextCreated(); | |||||
| contextChangedSize(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -367,6 +367,7 @@ public final class JuceDemo extends Activity | |||||
| } | } | ||||
| private native void contextCreated(); | private native void contextCreated(); | ||||
| private native void contextChangedSize(); | |||||
| private native void render(); | private native void render(); | ||||
| } | } | ||||
| @@ -172,7 +172,6 @@ | |||||
| 22132E527A92309318A2D572 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; | 22132E527A92309318A2D572 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 2275EB468CEA505ADE14C225 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSynthPage.cpp; path = ../../Source/demos/AudioDemoSynthPage.cpp; sourceTree = "SOURCE_ROOT"; }; | 2275EB468CEA505ADE14C225 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSynthPage.cpp; path = ../../Source/demos/AudioDemoSynthPage.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22A86C5C4967A5844323F7BA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | 22A86C5C4967A5844323F7BA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22C2C932398DC1EFE0880A9A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_android_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 22CD1BF5E83A216A0D18260D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; | 22CD1BF5E83A216A0D18260D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22DA9E57AAA25391C7D1FBC6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; | 22DA9E57AAA25391C7D1FBC6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 2302DFDF103BE152232EA767 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; | 2302DFDF103BE152232EA767 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -355,7 +354,6 @@ | |||||
| 4EC68506861032FFD4B848DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; | 4EC68506861032FFD4B848DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4EC77B02BE7457DE877E332B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; | 4EC77B02BE7457DE877E332B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4F2F636FB9416BFBB1FF2473 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | 4F2F636FB9416BFBB1FF2473 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4F802BD98072EA49F7F4FE4A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 4F854124B48F6358A992D164 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | 4F854124B48F6358A992D164 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4FC0DDA3086EE26242655E66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | 4FC0DDA3086EE26242655E66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5010D82E6ED57F014D8E88E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 5010D82E6ED57F014D8E88E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -420,6 +418,7 @@ | |||||
| 62AAFFC7E5754AA715DCB1E5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; | 62AAFFC7E5754AA715DCB1E5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 62AFEF7525003814092C79FA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | 62AFEF7525003814092C79FA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6314AFE1A17F085C028B4C82 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6314AFE1A17F085C028B4C82 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 639A6B84458054D4E12081EE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 63A3A467F124B67D19587D4F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 63A3A467F124B67D19587D4F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 63CF475000C8419AE8D25BD2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; | 63CF475000C8419AE8D25BD2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 63DD8F6DD0DDC9A6F45E0C90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; | 63DD8F6DD0DDC9A6F45E0C90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -457,7 +456,6 @@ | |||||
| 6DF10AFB26794D47F3AC783B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6DF10AFB26794D47F3AC783B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E00A6B4B754E3008B969B8A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 6E00A6B4B754E3008B969B8A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E0DA76710F31FA13F5168B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; | 6E0DA76710F31FA13F5168B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E1CFF5227B2F2E200DD9EC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 6E365FC14CFBA3BD28196D3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; | 6E365FC14CFBA3BD28196D3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6EF8660ACF82A6472884ABB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | 6EF8660ACF82A6472884ABB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 70350B2642B3D062D0A8D239 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; | 70350B2642B3D062D0A8D239 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; | ||||
| @@ -568,6 +566,7 @@ | |||||
| 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 90F9E3FB8FF07BA924E42DC0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | 90F9E3FB8FF07BA924E42DC0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 91165DCEB698586E84EC57C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 924667AB0E27AC2CE1EB7828 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; | 924667AB0E27AC2CE1EB7828 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 927B5B18A655057D57C37D35 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | 927B5B18A655057D57C37D35 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 936C6419223D7B28CE16A72B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 936C6419223D7B28CE16A72B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -632,6 +631,8 @@ | |||||
| A588C458AC395D8AC09A433D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; | A588C458AC395D8AC09A433D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A5A6819C57A0399C81E03301 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; | A5A6819C57A0399C81E03301 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6073115FE5E1E635C78DDFE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | A6073115FE5E1E635C78DDFE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A618A1B49D562ECB86DC46EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| A6541F1A868B78F7E4A53C77 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| A6C2A4889A4E70DE735EBA4B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6C2A4889A4E70DE735EBA4B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6C606F3BE6B630561EDE155 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6C606F3BE6B630561EDE155 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6FCBC9721E7FC9DE30B6DC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6FCBC9721E7FC9DE30B6DC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -651,6 +652,7 @@ | |||||
| A9958339328213FF76D8A79C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | A9958339328213FF76D8A79C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A9B72D6049A3539B63AE79D5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; | A9B72D6049A3539B63AE79D5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AA0DE5CA2B089393B110FD25 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; | AA0DE5CA2B089393B110FD25 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AAAA086F74F507C87200AD2E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| AAABC8FBF364D9A596F4AA4E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; | AAABC8FBF364D9A596F4AA4E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AAC98CB517D934F42A25416E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; | AAC98CB517D934F42A25416E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AB4A28A3667EA4C8393470A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; | AB4A28A3667EA4C8393470A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -661,7 +663,6 @@ | |||||
| ACB502AF25A235733295406E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | ACB502AF25A235733295406E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ACC522FB23E25ADDD38F8F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; | ACC522FB23E25ADDD38F8F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AE2C0F932F7E54799FA0897C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | AE2C0F932F7E54799FA0897C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AE394742FA0F2C6AA39906DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_mac_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| AE860FA70A2F37F4A889A9EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; | AE860FA70A2F37F4A889A9EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AEA287A89324FB9D48370C33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; | AEA287A89324FB9D48370C33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AF26F1B432EF78EB76107FDA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; | AF26F1B432EF78EB76107FDA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -680,6 +681,7 @@ | |||||
| B428CC689CD359B29C67272B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; | B428CC689CD359B29C67272B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B523ED8502475B9BB3F392C7 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | B523ED8502475B9BB3F392C7 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B53B1A87D9A58B3E056B4D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; | B53B1A87D9A58B3E056B4D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B5671D0DA84B699962CF0179 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| B59728841A18523C5950A51B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | B59728841A18523C5950A51B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B59DA3ED4F12C1FFEE433EE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | B59DA3ED4F12C1FFEE433EE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B5B987C3029862AC58363F1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; | B5B987C3029862AC58363F1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -805,9 +807,7 @@ | |||||
| D57651845D6D9438DEA62F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; | D57651845D6D9438DEA62F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D5DE603FFC184C590E2A6678 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; | D5DE603FFC184C590E2A6678 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D602AE751C3C12A6458FCCD5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; | D602AE751C3C12A6458FCCD5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D66048AF1E05FF836B2A813A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| D6C9614D1C6493DBEE370646 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | D6C9614D1C6493DBEE370646 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D6D0F076F54C7D669A9717C9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLComponent.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| D7239D5B984E07808E2DB28C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; | D7239D5B984E07808E2DB28C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D7E6E92AA32B7D51489FD256 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | D7E6E92AA32B7D51489FD256 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D8081154AA3072D2F2C4B625 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | D8081154AA3072D2F2C4B625 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -873,7 +873,6 @@ | |||||
| ECEFF5A78873B5B388046E7A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | ECEFF5A78873B5B388046E7A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED467279290C0AA942FB2B27 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | ED467279290C0AA942FB2B27 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED9A2289AECFD9B928A9A08A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; | ED9A2289AECFD9B928A9A08A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED9FAEA9116C568942BAD000 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_ios_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| EDDA4ADA880E3B78143801D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; | EDDA4ADA880E3B78143801D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| EDDDD60231231B8221711145 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | EDDDD60231231B8221711145 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| EE2DACF73E083928ABDDA63B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; | EE2DACF73E083928ABDDA63B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1898,8 +1897,6 @@ | |||||
| EB8917291F41B7345B13B53E = { isa = PBXGroup; children = ( | EB8917291F41B7345B13B53E = { isa = PBXGroup; children = ( | ||||
| D866C4735BF1EF0CA24FC1FB, | D866C4735BF1EF0CA24FC1FB, | ||||
| 87FB016388B49E97FCCBE69B, | 87FB016388B49E97FCCBE69B, | ||||
| 4F802BD98072EA49F7F4FE4A, | |||||
| D6D0F076F54C7D669A9717C9, | |||||
| 5786364EC4C531CDE41BDCEA, | 5786364EC4C531CDE41BDCEA, | ||||
| 8878426C7F58CB22969E7133, | 8878426C7F58CB22969E7133, | ||||
| AC3EFDDC80761A45E8BE0624, | AC3EFDDC80761A45E8BE0624, | ||||
| @@ -1910,6 +1907,7 @@ | |||||
| D2C40CDF46D894BFC72BDC56, | D2C40CDF46D894BFC72BDC56, | ||||
| E46977801F19277F4D3B324B, | E46977801F19277F4D3B324B, | ||||
| 17422D876DAAF091ED089B8D, | 17422D876DAAF091ED089B8D, | ||||
| AAAA086F74F507C87200AD2E, | |||||
| B81FA2ED22BCC03D124031ED, | B81FA2ED22BCC03D124031ED, | ||||
| 58864C3D7F369EBE01E42C5C, | 58864C3D7F369EBE01E42C5C, | ||||
| 8EEB4DEB11F3DF01BA6F7528, | 8EEB4DEB11F3DF01BA6F7528, | ||||
| @@ -1918,13 +1916,13 @@ | |||||
| EC89003BF30329181BB3EA4B, | EC89003BF30329181BB3EA4B, | ||||
| D2F161366612A4CDA6372113 ); name = opengl; sourceTree = "<group>"; }; | D2F161366612A4CDA6372113 ); name = opengl; sourceTree = "<group>"; }; | ||||
| C92FEA88254DAAE793DB3CF7 = { isa = PBXGroup; children = ( | C92FEA88254DAAE793DB3CF7 = { isa = PBXGroup; children = ( | ||||
| 22C2C932398DC1EFE0880A9A, | |||||
| ED9FAEA9116C568942BAD000, | |||||
| 6E1CFF5227B2F2E200DD9EC7, | |||||
| AE394742FA0F2C6AA39906DD, | |||||
| 7E6041874E267458572B93A1, | 7E6041874E267458572B93A1, | ||||
| 8565630D87FEE505D50CE2EF, | |||||
| D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | |||||
| A618A1B49D562ECB86DC46EF, | |||||
| 639A6B84458054D4E12081EE, | |||||
| 91165DCEB698586E84EC57C6, | |||||
| A6541F1A868B78F7E4A53C77, | |||||
| B5671D0DA84B699962CF0179, | |||||
| 8565630D87FEE505D50CE2EF ); name = native; sourceTree = "<group>"; }; | |||||
| 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | ||||
| EB8917291F41B7345B13B53E, | EB8917291F41B7345B13B53E, | ||||
| C92FEA88254DAAE793DB3CF7, | C92FEA88254DAAE793DB3CF7, | ||||
| @@ -4265,17 +4265,6 @@ | |||||
| <Filter Name="opengl"> | <Filter Name="opengl"> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4331,8 +4320,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4342,23 +4330,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4368,8 +4341,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4379,19 +4352,18 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| </Filter> | </Filter> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| @@ -4265,17 +4265,6 @@ | |||||
| <Filter Name="opengl"> | <Filter Name="opengl"> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4331,8 +4320,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4342,23 +4330,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4368,8 +4341,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4379,19 +4352,18 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| </Filter> | </Filter> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| @@ -1147,9 +1147,6 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1165,19 +1162,13 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_video\native\juce_android_CameraDevice.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_video\native\juce_android_CameraDevice.cpp"> | ||||
| @@ -1611,7 +1602,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"/> | ||||
| @@ -1623,6 +1613,11 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | ||||
| @@ -1498,9 +1498,6 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_module_info"> | <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_module_info"> | ||||
| <Filter>Juce Modules\juce_gui_extra</Filter> | <Filter>Juce Modules\juce_gui_extra</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1516,27 +1513,15 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\juce_module_info"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <Filter>Juce Modules\juce_opengl</Filter> | <Filter>Juce Modules\juce_opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -2814,9 +2799,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2850,6 +2832,21 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"> | ||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | <Filter>Juce Modules\juce_opengl\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | ||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | <Filter>Juce Modules\juce_opengl\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -165,7 +165,6 @@ | |||||
| 22132E527A92309318A2D572 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; | 22132E527A92309318A2D572 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationBase.cpp"; path = "../../../../modules/juce_events/messages/juce_ApplicationBase.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 2275EB468CEA505ADE14C225 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSynthPage.cpp; path = ../../Source/demos/AudioDemoSynthPage.cpp; sourceTree = "SOURCE_ROOT"; }; | 2275EB468CEA505ADE14C225 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSynthPage.cpp; path = ../../Source/demos/AudioDemoSynthPage.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22A86C5C4967A5844323F7BA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | 22A86C5C4967A5844323F7BA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DialogWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_DialogWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22C2C932398DC1EFE0880A9A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_android_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 22CD1BF5E83A216A0D18260D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; | 22CD1BF5E83A216A0D18260D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MultiTouchMapper.h"; path = "../../../../modules/juce_gui_basics/native/juce_MultiTouchMapper.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 22DA9E57AAA25391C7D1FBC6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; | 22DA9E57AAA25391C7D1FBC6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_mac_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 2302DFDF103BE152232EA767 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; | 2302DFDF103BE152232EA767 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicObject.h"; path = "../../../../modules/juce_core/containers/juce_DynamicObject.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -349,7 +348,6 @@ | |||||
| 4EC68506861032FFD4B848DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; | 4EC68506861032FFD4B848DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TemporaryFile.h"; path = "../../../../modules/juce_core/files/juce_TemporaryFile.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4EC77B02BE7457DE877E332B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; | 4EC77B02BE7457DE877E332B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentAnimator.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentAnimator.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4F2F636FB9416BFBB1FF2473 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | 4F2F636FB9416BFBB1FF2473 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Fonts.cpp"; path = "../../../../modules/juce_graphics/native/juce_android_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4F802BD98072EA49F7F4FE4A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 4F854124B48F6358A992D164 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | 4F854124B48F6358A992D164 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4FC0DDA3086EE26242655E66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | 4FC0DDA3086EE26242655E66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5010D82E6ED57F014D8E88E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 5010D82E6ED57F014D8E88E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileTreeComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -413,6 +411,7 @@ | |||||
| 62AAFFC7E5754AA715DCB1E5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; | 62AAFFC7E5754AA715DCB1E5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TargetPlatform.h"; path = "../../../../modules/juce_core/system/juce_TargetPlatform.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 62AFEF7525003814092C79FA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | 62AFEF7525003814092C79FA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6314AFE1A17F085C028B4C82 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6314AFE1A17F085C028B4C82 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Desktop.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 639A6B84458054D4E12081EE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 63A3A467F124B67D19587D4F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 63A3A467F124B67D19587D4F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SliderPropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 63CF475000C8419AE8D25BD2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; | 63CF475000C8419AE8D25BD2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativePoint.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativePoint.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 63DD8F6DD0DDC9A6F45E0C90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; | 63DD8F6DD0DDC9A6F45E0C90 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NativeMessageBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_NativeMessageBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -449,7 +448,6 @@ | |||||
| 6DF10AFB26794D47F3AC783B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6DF10AFB26794D47F3AC783B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_win32_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E00A6B4B754E3008B969B8A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 6E00A6B4B754E3008B969B8A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardComponent.h"; path = "../../../../modules/juce_audio_utils/gui/juce_MidiKeyboardComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E0DA76710F31FA13F5168B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; | 6E0DA76710F31FA13F5168B3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseListener.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E1CFF5227B2F2E200DD9EC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 6E365FC14CFBA3BD28196D3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; | 6E365FC14CFBA3BD28196D3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeListener.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6EF8660ACF82A6472884ABB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | 6EF8660ACF82A6472884ABB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6FCC44A5DB0B881454AAD300 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; | 6FCC44A5DB0B881454AAD300 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; | ||||
| @@ -561,6 +559,7 @@ | |||||
| 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 90F9E3FB8FF07BA924E42DC0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | 90F9E3FB8FF07BA924E42DC0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 91165DCEB698586E84EC57C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 924667AB0E27AC2CE1EB7828 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; | 924667AB0E27AC2CE1EB7828 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TopLevelWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_TopLevelWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 927B5B18A655057D57C37D35 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | 927B5B18A655057D57C37D35 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 936C6419223D7B28CE16A72B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 936C6419223D7B28CE16A72B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BufferedInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_BufferedInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -625,6 +624,8 @@ | |||||
| A588C458AC395D8AC09A433D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; | A588C458AC395D8AC09A433D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MarkerList.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_MarkerList.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A5A6819C57A0399C81E03301 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; | A5A6819C57A0399C81E03301 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Network.cpp"; path = "../../../../modules/juce_core/native/juce_android_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6073115FE5E1E635C78DDFE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | A6073115FE5E1E635C78DDFE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A618A1B49D562ECB86DC46EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| A6541F1A868B78F7E4A53C77 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| A6C2A4889A4E70DE735EBA4B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6C2A4889A4E70DE735EBA4B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsPostScriptRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsPostScriptRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6C606F3BE6B630561EDE155 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6C606F3BE6B630561EDE155 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilterAudioSource.cpp"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A6FCBC9721E7FC9DE30B6DC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | A6FCBC9721E7FC9DE30B6DC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -644,6 +645,7 @@ | |||||
| A9958339328213FF76D8A79C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | A9958339328213FF76D8A79C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| A9B72D6049A3539B63AE79D5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; | A9B72D6049A3539B63AE79D5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CachedComponentImage.h"; path = "../../../../modules/juce_gui_basics/components/juce_CachedComponentImage.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AA0DE5CA2B089393B110FD25 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; | AA0DE5CA2B089393B110FD25 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableShape.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AAAA086F74F507C87200AD2E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| AAABC8FBF364D9A596F4AA4E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; | AAABC8FBF364D9A596F4AA4E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_android_JNIHelpers.h"; path = "../../../../modules/juce_core/native/juce_android_JNIHelpers.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AAC98CB517D934F42A25416E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; | AAC98CB517D934F42A25416E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_BubbleComponent.h"; path = "../../../../modules/juce_gui_basics/misc/juce_BubbleComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AB4A28A3667EA4C8393470A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; | AB4A28A3667EA4C8393470A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Result.h"; path = "../../../../modules/juce_core/misc/juce_Result.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -654,7 +656,6 @@ | |||||
| ACB502AF25A235733295406E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | ACB502AF25A235733295406E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChangeBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ChangeBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ACC522FB23E25ADDD38F8F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; | ACC522FB23E25ADDD38F8F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSubsectionReader.h"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AE2C0F932F7E54799FA0897C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | AE2C0F932F7E54799FA0897C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AE394742FA0F2C6AA39906DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_mac_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| AE860FA70A2F37F4A889A9EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; | AE860FA70A2F37F4A889A9EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ZipFile.h"; path = "../../../../modules/juce_core/zip/juce_ZipFile.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AEA287A89324FB9D48370C33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; | AEA287A89324FB9D48370C33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AsyncUpdater.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_AsyncUpdater.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| AF26F1B432EF78EB76107FDA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; | AF26F1B432EF78EB76107FDA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Timer.cpp"; path = "../../../../modules/juce_events/timers/juce_Timer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -673,6 +674,7 @@ | |||||
| B428CC689CD359B29C67272B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; | B428CC689CD359B29C67272B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallOutBox.h"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B523ED8502475B9BB3F392C7 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | B523ED8502475B9BB3F392C7 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B53B1A87D9A58B3E056B4D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; | B53B1A87D9A58B3E056B4D8E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageConvolutionKernel.h"; path = "../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B5671D0DA84B699962CF0179 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| B59728841A18523C5950A51B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | B59728841A18523C5950A51B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B59DA3ED4F12C1FFEE433EE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | B59DA3ED4F12C1FFEE433EE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| B5B987C3029862AC58363F1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; | B5B987C3029862AC58363F1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ImageComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -796,9 +798,7 @@ | |||||
| D57651845D6D9438DEA62F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; | D57651845D6D9438DEA62F98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LeakedObjectDetector.h"; path = "../../../../modules/juce_core/memory/juce_LeakedObjectDetector.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D5DE603FFC184C590E2A6678 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; | D5DE603FFC184C590E2A6678 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDBurner.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDBurner.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D602AE751C3C12A6458FCCD5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; | D602AE751C3C12A6458FCCD5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableBorderComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D66048AF1E05FF836B2A813A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| D6C9614D1C6493DBEE370646 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | D6C9614D1C6493DBEE370646 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileBasedDocument.cpp"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D6D0F076F54C7D669A9717C9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLComponent.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| D7239D5B984E07808E2DB28C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; | D7239D5B984E07808E2DB28C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLHelpers.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D7E6E92AA32B7D51489FD256 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | D7E6E92AA32B7D51489FD256 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D8081154AA3072D2F2C4B625 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | D8081154AA3072D2F2C4B625 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -865,7 +865,6 @@ | |||||
| ECEFF5A78873B5B388046E7A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | ECEFF5A78873B5B388046E7A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED467279290C0AA942FB2B27 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | ED467279290C0AA942FB2B27 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OggVorbisAudioFormat.cpp"; path = "../../../../modules/juce_audio_formats/codecs/juce_OggVorbisAudioFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED9A2289AECFD9B928A9A08A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; | ED9A2289AECFD9B928A9A08A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilter.h"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| ED9FAEA9116C568942BAD000 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_ios_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| EDDA4ADA880E3B78143801D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; | EDDA4ADA880E3B78143801D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WASAPI.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_WASAPI.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| EDDDD60231231B8221711145 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | EDDDD60231231B8221711145 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseListener.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| EE2DACF73E083928ABDDA63B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; | EE2DACF73E083928ABDDA63B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryIterator.h"; path = "../../../../modules/juce_core/files/juce_DirectoryIterator.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1890,8 +1889,6 @@ | |||||
| EB8917291F41B7345B13B53E = { isa = PBXGroup; children = ( | EB8917291F41B7345B13B53E = { isa = PBXGroup; children = ( | ||||
| D866C4735BF1EF0CA24FC1FB, | D866C4735BF1EF0CA24FC1FB, | ||||
| 87FB016388B49E97FCCBE69B, | 87FB016388B49E97FCCBE69B, | ||||
| 4F802BD98072EA49F7F4FE4A, | |||||
| D6D0F076F54C7D669A9717C9, | |||||
| 5786364EC4C531CDE41BDCEA, | 5786364EC4C531CDE41BDCEA, | ||||
| 8878426C7F58CB22969E7133, | 8878426C7F58CB22969E7133, | ||||
| AC3EFDDC80761A45E8BE0624, | AC3EFDDC80761A45E8BE0624, | ||||
| @@ -1902,6 +1899,7 @@ | |||||
| D2C40CDF46D894BFC72BDC56, | D2C40CDF46D894BFC72BDC56, | ||||
| E46977801F19277F4D3B324B, | E46977801F19277F4D3B324B, | ||||
| 17422D876DAAF091ED089B8D, | 17422D876DAAF091ED089B8D, | ||||
| AAAA086F74F507C87200AD2E, | |||||
| B81FA2ED22BCC03D124031ED, | B81FA2ED22BCC03D124031ED, | ||||
| 58864C3D7F369EBE01E42C5C, | 58864C3D7F369EBE01E42C5C, | ||||
| 8EEB4DEB11F3DF01BA6F7528, | 8EEB4DEB11F3DF01BA6F7528, | ||||
| @@ -1910,13 +1908,13 @@ | |||||
| EC89003BF30329181BB3EA4B, | EC89003BF30329181BB3EA4B, | ||||
| D2F161366612A4CDA6372113 ); name = opengl; sourceTree = "<group>"; }; | D2F161366612A4CDA6372113 ); name = opengl; sourceTree = "<group>"; }; | ||||
| C92FEA88254DAAE793DB3CF7 = { isa = PBXGroup; children = ( | C92FEA88254DAAE793DB3CF7 = { isa = PBXGroup; children = ( | ||||
| 22C2C932398DC1EFE0880A9A, | |||||
| ED9FAEA9116C568942BAD000, | |||||
| 6E1CFF5227B2F2E200DD9EC7, | |||||
| AE394742FA0F2C6AA39906DD, | |||||
| 7E6041874E267458572B93A1, | 7E6041874E267458572B93A1, | ||||
| 8565630D87FEE505D50CE2EF, | |||||
| D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | |||||
| A618A1B49D562ECB86DC46EF, | |||||
| 639A6B84458054D4E12081EE, | |||||
| 91165DCEB698586E84EC57C6, | |||||
| A6541F1A868B78F7E4A53C77, | |||||
| B5671D0DA84B699962CF0179, | |||||
| 8565630D87FEE505D50CE2EF ); name = native; sourceTree = "<group>"; }; | |||||
| 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | ||||
| EB8917291F41B7345B13B53E, | EB8917291F41B7345B13B53E, | ||||
| C92FEA88254DAAE793DB3CF7, | C92FEA88254DAAE793DB3CF7, | ||||
| @@ -38,20 +38,27 @@ public: | |||||
| : mainWindow (mainWindow_), | : mainWindow (mainWindow_), | ||||
| currentDemoId (0) | currentDemoId (0) | ||||
| { | { | ||||
| setOpaque (true); | |||||
| invokeDirectly (showRendering, true); | invokeDirectly (showRendering, true); | ||||
| } | } | ||||
| ~ContentComp() | |||||
| { | |||||
| #if JUCE_OPENGL | |||||
| openGLContext.detach(); | |||||
| #endif | |||||
| } | |||||
| void paint (Graphics& g) | |||||
| { | |||||
| g.fillAll (Colours::white); | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| void showDemo (Component* demoComp) | void showDemo (Component* demoComp) | ||||
| { | { | ||||
| currentDemo = demoComp; | currentDemo = demoComp; | ||||
| #if JUCE_OPENGL | |||||
| if (openGLWrapperComp != nullptr) | |||||
| openGLWrapperComp->addAndMakeVisible (currentDemo); | |||||
| else | |||||
| #endif | |||||
| addAndMakeVisible (currentDemo); | |||||
| addAndMakeVisible (currentDemo); | |||||
| currentDemo->setBounds ("0, 0, parent.width, parent.height"); | currentDemo->setBounds ("0, 0, parent.width, parent.height"); | ||||
| } | } | ||||
| @@ -112,8 +119,12 @@ public: | |||||
| { | { | ||||
| menu.addSeparator(); | menu.addSeparator(); | ||||
| const int currentEngine = openGLWrapperComp != nullptr ? engines.size() - 1 | |||||
| : getPeer()->getCurrentRenderingEngine(); | |||||
| int currentEngine = getPeer()->getCurrentRenderingEngine(); | |||||
| #if JUCE_OPENGL | |||||
| if (openGLContext.isAttached()) | |||||
| currentEngine = engines.size() - 1; | |||||
| #endif | |||||
| for (int i = 0; i < engines.size(); ++i) | for (int i = 0; i < engines.size(); ++i) | ||||
| menu.addItem (5001 + i, "Use " + engines[i], true, i == currentEngine); | menu.addItem (5001 + i, "Use " + engines[i], true, i == currentEngine); | ||||
| @@ -149,19 +160,9 @@ public: | |||||
| { | { | ||||
| #if JUCE_OPENGL | #if JUCE_OPENGL | ||||
| if (shouldUseOpenGL && currentDemoId != showOpenGL) | if (shouldUseOpenGL && currentDemoId != showOpenGL) | ||||
| { | |||||
| if (openGLWrapperComp == nullptr) | |||||
| { | |||||
| addAndMakeVisible (openGLWrapperComp = new DemoOpenGLComp (currentDemo)); | |||||
| openGLWrapperComp->setBounds ("0, 0, parent.width, parent.height"); | |||||
| } | |||||
| } | |||||
| openGLContext.attachTo (*this); | |||||
| else | else | ||||
| { | |||||
| openGLWrapperComp = nullptr; | |||||
| addAndMakeVisible (currentDemo); | |||||
| resized(); | |||||
| } | |||||
| openGLContext.detach(); | |||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -509,41 +510,15 @@ private: | |||||
| ScopedPointer<Component> currentDemo; | ScopedPointer<Component> currentDemo; | ||||
| int currentDemoId; | int currentDemoId; | ||||
| #if JUCE_OPENGL | |||||
| OpenGLContext openGLContext; | |||||
| #endif | |||||
| TooltipWindow tooltipWindow; // to add tooltips to an application, you | TooltipWindow tooltipWindow; // to add tooltips to an application, you | ||||
| // just need to create one of these and leave it | // just need to create one of these and leave it | ||||
| // there to do its work.. | // there to do its work.. | ||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_OPENGL | |||||
| class DemoOpenGLComp : public OpenGLComponent | |||||
| { | |||||
| public: | |||||
| DemoOpenGLComp (Component* contentComp) | |||||
| : OpenGLComponent (useBackgroundThread | allowSubComponents) | |||||
| { | |||||
| addAndMakeVisible (contentComp); | |||||
| } | |||||
| ~DemoOpenGLComp() | |||||
| { | |||||
| // It's essential to call this method before our class is destroyed, to | |||||
| // make sure that the background renderer thread doesn't try to call it | |||||
| // while it's being dismantled.. | |||||
| stopRenderThread(); | |||||
| } | |||||
| void newOpenGLContextCreated() {} | |||||
| void renderOpenGL() {} | |||||
| void paint (Graphics& g) | |||||
| { | |||||
| g.fillAll (Colours::azure); | |||||
| } | |||||
| }; | |||||
| ScopedPointer<DemoOpenGLComp> openGLWrapperComp; | |||||
| #endif | |||||
| StringArray getRenderingEngines() | StringArray getRenderingEngines() | ||||
| { | { | ||||
| StringArray renderingEngines (getPeer()->getAvailableRenderingEngines()); | StringArray renderingEngines (getPeer()->getAvailableRenderingEngines()); | ||||
| @@ -28,12 +28,13 @@ | |||||
| #if JUCE_OPENGL | #if JUCE_OPENGL | ||||
| //============================================================================== | //============================================================================== | ||||
| class DemoOpenGLCanvas : public OpenGLComponent, | |||||
| class DemoOpenGLCanvas : public Component, | |||||
| public OpenGLRenderer, | |||||
| public Timer | public Timer | ||||
| { | { | ||||
| public: | public: | ||||
| DemoOpenGLCanvas() | DemoOpenGLCanvas() | ||||
| : OpenGLComponent (openGLDefault), rotation (0.0f), | |||||
| : rotation (0.0f), | |||||
| textScrollPos (200) | textScrollPos (200) | ||||
| { | { | ||||
| infoLabel.setText ("These sliders demonstrate how components can be added as children " | infoLabel.setText ("These sliders demonstrate how components can be added as children " | ||||
| @@ -59,12 +60,15 @@ public: | |||||
| addAndMakeVisible (&sizeSlider); | addAndMakeVisible (&sizeSlider); | ||||
| sizeSlider.setBounds ("parent.width * 0.05, parent.height - 35, parent.width * 0.6, top + 24"); | sizeSlider.setBounds ("parent.width * 0.05, parent.height - 35, parent.width * 0.6, top + 24"); | ||||
| openGLContext.setRenderer (this, true); | |||||
| openGLContext.attachTo (*this); | |||||
| startTimer (1000 / 30); | startTimer (1000 / 30); | ||||
| } | } | ||||
| ~DemoOpenGLCanvas() | ~DemoOpenGLCanvas() | ||||
| { | { | ||||
| stopRenderThread(); | |||||
| openGLContext.detach(); | |||||
| } | } | ||||
| // when the component creates a new internal context, this is called, and | // when the component creates a new internal context, this is called, and | ||||
| @@ -75,7 +79,7 @@ public: | |||||
| dynamicTextureImage = Image (Image::ARGB, 128, 128, true, OpenGLImageType()); | dynamicTextureImage = Image (Image::ARGB, 128, 128, true, OpenGLImageType()); | ||||
| } | } | ||||
| void releaseOpenGLContext() | |||||
| void openGLContextClosing() | |||||
| { | { | ||||
| // We have to make sure we release any openGL images before the | // We have to make sure we release any openGL images before the | ||||
| // GL context gets closed.. | // GL context gets closed.. | ||||
| @@ -91,7 +95,7 @@ public: | |||||
| void mouseDrag (const MouseEvent& e) | void mouseDrag (const MouseEvent& e) | ||||
| { | { | ||||
| draggableOrientation.mouseDrag (e.getPosition()); | draggableOrientation.mouseDrag (e.getPosition()); | ||||
| triggerRepaint(); | |||||
| openGLContext.triggerRepaint(); | |||||
| } | } | ||||
| void resized() | void resized() | ||||
| @@ -99,13 +103,20 @@ public: | |||||
| draggableOrientation.setViewport (getLocalBounds()); | draggableOrientation.setViewport (getLocalBounds()); | ||||
| } | } | ||||
| void paint (Graphics&) {} | |||||
| void renderOpenGL() | void renderOpenGL() | ||||
| { | { | ||||
| OpenGLHelpers::clear (Colours::darkgrey.withAlpha (1.0f)); | OpenGLHelpers::clear (Colours::darkgrey.withAlpha (1.0f)); | ||||
| updateTextureImage(); // this will update our dynamically-changing texture image. | |||||
| { | |||||
| MessageManagerLock mm (Thread::getCurrentThread()); | |||||
| if (! mm.lockWasGained()) | |||||
| return; | |||||
| drawBackground2DStuff(); // draws some 2D content to demonstrate the OpenGLGraphicsContext class | |||||
| updateTextureImage(); // this will update our dynamically-changing texture image. | |||||
| drawBackground2DStuff(); // draws some 2D content to demonstrate the OpenGLGraphicsContext class | |||||
| } | |||||
| // Having used the juce 2D renderer, it will have messed-up a whole load of GL state, so | // Having used the juce 2D renderer, it will have messed-up a whole load of GL state, so | ||||
| // we'll put back any important settings before doing our normal GL 3D drawing.. | // we'll put back any important settings before doing our normal GL 3D drawing.. | ||||
| @@ -158,7 +169,7 @@ public: | |||||
| void drawBackground2DStuff() | void drawBackground2DStuff() | ||||
| { | { | ||||
| // Create an OpenGLGraphicsContext that will draw into this GL window.. | // Create an OpenGLGraphicsContext that will draw into this GL window.. | ||||
| ScopedPointer<LowLevelGraphicsContext> glRenderer (createOpenGLGraphicsContext (*this)); | |||||
| ScopedPointer<LowLevelGraphicsContext> glRenderer (createOpenGLGraphicsContext (openGLContext)); | |||||
| Graphics g (glRenderer); | Graphics g (glRenderer); | ||||
| // This stuff just creates a spinning star shape and fills it.. | // This stuff just creates a spinning star shape and fills it.. | ||||
| @@ -179,10 +190,11 @@ public: | |||||
| { | { | ||||
| rotation += (float) speedSlider.getValue(); | rotation += (float) speedSlider.getValue(); | ||||
| textScrollPos += 1.4f; | textScrollPos += 1.4f; | ||||
| triggerRepaint(); | |||||
| openGLContext.triggerRepaint(); | |||||
| } | } | ||||
| private: | private: | ||||
| OpenGLContext openGLContext; | |||||
| Image logoImage, dynamicTextureImage; | Image logoImage, dynamicTextureImage; | ||||
| float rotation, textScrollPos; | float rotation, textScrollPos; | ||||
| Draggable3DOrientation draggableOrientation; | Draggable3DOrientation draggableOrientation; | ||||
| @@ -90,7 +90,6 @@ | |||||
| 0CF846BB5ABA7ACA6ED15DAF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LADSPAPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; | 0CF846BB5ABA7ACA6ED15DAF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LADSPAPluginFormat.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0D33C38BAB4F78D0D2E87F12 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | 0D33C38BAB4F78D0D2E87F12 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StandardHeader.h"; path = "../../../../modules/juce_core/system/juce_StandardHeader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0DA5B57EE8F2881C90FB047E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | 0DA5B57EE8F2881C90FB047E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0DA6343549C1279EEDA7A81A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_android_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 0E4661E777BD7400A13328D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0E4661E777BD7400A13328D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_SplashScreen.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0E8A874AB7E4971D90F58004 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; | 0E8A874AB7E4971D90F58004 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Thread.h"; path = "../../../../modules/juce_core/threads/juce_Thread.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0EECB5C7D6CD9F1CDFEC50A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0EECB5C7D6CD9F1CDFEC50A7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Logger.cpp"; path = "../../../../modules/juce_core/logging/juce_Logger.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -116,7 +115,6 @@ | |||||
| 15DD91827E0975E928E3BB83 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; | 15DD91827E0975E928E3BB83 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PopupMenu.h"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 15FBAE360A9B69D6DB38FF22 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; | 15FBAE360A9B69D6DB38FF22 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Point.h"; path = "../../../../modules/juce_graphics/geometry/juce_Point.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1666EE8320B5911BA4A4D529 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; | 1666EE8320B5911BA4A4D529 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1668565234C6F9C31363BBE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_mac_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 172EE4301C4E0B4BA7DB4701 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; }; | 172EE4301C4E0B4BA7DB4701 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioProcessorListener.h"; path = "../../../../modules/juce_audio_processors/processors/juce_AudioProcessorListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 177ACA542C1D1EBEAD87C348 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; | 177ACA542C1D1EBEAD87C348 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableObjectResizer.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 179DB0E297F9CA8700AFFD26 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; }; | 179DB0E297F9CA8700AFFD26 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioIODevice.h"; path = "../../../../modules/juce_audio_devices/audio_io/juce_AudioIODevice.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -128,6 +126,7 @@ | |||||
| 1956DE1CE89301FE4FC9BC15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; }; | 1956DE1CE89301FE4FC9BC15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSubsectionReader.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioSubsectionReader.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1959937B4B2FC11B9AC53566 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; | 1959937B4B2FC11B9AC53566 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 19B542AA1D44A48137994C9B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | 19B542AA1D44A48137994C9B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 19CF1995D026FB0177649557 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 19F1E0E8D9A395105CA14D9D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; | 19F1E0E8D9A395105CA14D9D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1A4E5F9889282918D91F7262 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 1A4E5F9889282918D91F7262 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileOutputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1A59F393DEB3E9E1132EAF51 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 1A59F393DEB3E9E1132EAF51 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectShowComponent.cpp"; path = "../../../../modules/juce_video/native/juce_win32_DirectShowComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -318,6 +317,7 @@ | |||||
| 4E7392E543488D38DDA567DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; | 4E7392E543488D38DDA567DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableRectangle.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4EE534BAE6FE5AE6B9863AEB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; | 4EE534BAE6FE5AE6B9863AEB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RelativeCoordinatePositioner.h"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4EEFC8BD450341D633B64E77 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; | 4EEFC8BD450341D633B64E77 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DragAndDropContainer.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4F4884B5DE59137D823301FB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 4F5AE334AD243259E370E8CE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; | 4F5AE334AD243259E370E8CE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UndoManager.h"; path = "../../../../modules/juce_data_structures/undomanager/juce_UndoManager.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4FA1E94FC0C6D34B11B0EBB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; | 4FA1E94FC0C6D34B11B0EBB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AbstractFifo.h"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5085F1038F87BFFE07A491C4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 5085F1038F87BFFE07A491C4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UIViewComponent.h"; path = "../../../../modules/juce_gui_extra/embedding/juce_UIViewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -404,13 +404,13 @@ | |||||
| 6BEC3BA14A6EC4E966B76E7D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | 6BEC3BA14A6EC4E966B76E7D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentBoundsConstrainer.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6C3EBC31792DB69EA9DEBCF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; | 6C3EBC31792DB69EA9DEBCF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StretchableLayoutManager.h"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6C51E4C2A776F82E02F37B15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 6C51E4C2A776F82E02F37B15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SliderPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6C8EDB409CBC411544143565 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 6CC390D80BA517A67F855CA3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6CC390D80BA517A67F855CA3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6D778046825503FDEB5460E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6D778046825503FDEB5460E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MouseInputSource.cpp"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6D8D5FF611A28415AC63C463 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6D8D5FF611A28415AC63C463 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioFormatReaderSource.cpp"; path = "../../../../modules/juce_audio_formats/format/juce_AudioFormatReaderSource.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6D9F04D6B71B3E81490D0A92 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6D9F04D6B71B3E81490D0A92 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_BlowFish.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_BlowFish.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6DA2BE5D5F9F5C74549065BE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; | 6DA2BE5D5F9F5C74549065BE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsList.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E1860CF53C6E59F1F77C373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | 6E1860CF53C6E59F1F77C373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6E673B706EA21387275F30FD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_ios_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 6E9256495CB4571234020AD4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; | 6E9256495CB4571234020AD4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemPalette.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6EC1F679C81910E4E42FDB0B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; | 6EC1F679C81910E4E42FDB0B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_IIRFilterAudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_IIRFilterAudioSource.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 6EEACEE1071D58DA155DC87E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | 6EEACEE1071D58DA155DC87E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -440,7 +440,6 @@ | |||||
| 77632C482751C38F66E5B759 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 77632C482751C38F66E5B759 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 77E006FC1ECCE39324BD4E89 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | 77E006FC1ECCE39324BD4E89 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 789C7D30DC4EA35A98FEE613 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; | 789C7D30DC4EA35A98FEE613 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Identifier.h"; path = "../../../../modules/juce_core/text/juce_Identifier.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 7916CA65827E16B3775C4952 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 792D8573B81EF31A2D99422E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_events/broadcasters/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; | 792D8573B81EF31A2D99422E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListenerList.h"; path = "../../../../modules/juce_events/broadcasters/juce_ListenerList.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 799654188207FD986B13281A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; | 799654188207FD986B13281A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_String.h"; path = "../../../../modules/juce_core/text/juce_String.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 7A12DA68789CFB38D0722D02 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; | 7A12DA68789CFB38D0722D02 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -516,10 +515,12 @@ | |||||
| 902D2D75157CA779F1F2324A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; | 902D2D75157CA779F1F2324A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 90ADB27801C40001A8074FD4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; | 90ADB27801C40001A8074FD4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 9187BBE1C406F3DAFDA09CF4 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; | 9187BBE1C406F3DAFDA09CF4 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; | ||||
| 918A6AE024A876783EC063DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 91A1AAFFF5016EB8BB0487C8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; | 91A1AAFFF5016EB8BB0487C8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_events.h"; path = "../../../../modules/juce_events/juce_events.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 91E5C5E061E45FCC192C074B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; | 91E5C5E061E45FCC192C074B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 920F595F97031574B427C153 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; | 920F595F97031574B427C153 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 923E4322525FD5CCAA5F911B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; | 923E4322525FD5CCAA5F911B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_gui_extra.h"; path = "../../../../modules/juce_gui_extra/juce_gui_extra.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 9279BC369938CE651A7F8348 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 92A12C0D4D42B80CF8044305 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; | 92A12C0D4D42B80CF8044305 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ModalComponentManager.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ModalComponentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 93387B269F26CF7363E17A32 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 93387B269F26CF7363E17A32 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PluginListComponent.h"; path = "../../../../modules/juce_audio_processors/scanning/juce_PluginListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 936216306215D5F851ECFD3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; | 936216306215D5F851ECFD3A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -713,7 +714,6 @@ | |||||
| CD0D3900EADBCE8A618D8621 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; | CD0D3900EADBCE8A618D8621 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentBuilder.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| CD4D6D0FF97BB38751DAC4CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; | CD4D6D0FF97BB38751DAC4CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ReadWriteLock.h"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| CD51916F6B9C4406FCF48C51 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; | CD51916F6B9C4406FCF48C51 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableCornerComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| CD96180DDD8610A155629CE1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| CEF36257C57BD3B2095A283C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; }; | CEF36257C57BD3B2095A283C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioSource.h"; path = "../../../../modules/juce_audio_basics/sources/juce_AudioSource.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| CF0F1D933CE2A89A9D05FF38 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; | CF0F1D933CE2A89A9D05FF38 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ColourGradient.h"; path = "../../../../modules/juce_graphics/colour/juce_ColourGradient.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| CF27DFD59466D38E34428405 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | CF27DFD59466D38E34428405 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Typeface.h"; path = "../../../../modules/juce_graphics/fonts/juce_Typeface.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -748,7 +748,6 @@ | |||||
| D3D7C89A43B6A3591B776B1E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | D3D7C89A43B6A3591B776B1E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D41728E9EB1522CCAC9AC7D4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; }; | D41728E9EB1522CCAC9AC7D4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CameraDevice.h"; path = "../../../../modules/juce_video/capture/juce_CameraDevice.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D41EA1E6002DE5DEB9A07CAA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; | D41EA1E6002DE5DEB9A07CAA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentPeer.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D4CC4DE44C44AEE40085ACD7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| D4DA13E7A12FB69C072D0FA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | D4DA13E7A12FB69C072D0FA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ShapeButton.cpp"; path = "../../../../modules/juce_gui_basics/buttons/juce_ShapeButton.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D52F4E0C637B4685217CBEB4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; }; | D52F4E0C637B4685217CBEB4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Decibels.h"; path = "../../../../modules/juce_audio_basics/effects/juce_Decibels.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| D579AF76963B677C425CBF00 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OldSchoolLookAndFeel.h"; path = "../../../../modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; | D579AF76963B677C425CBF00 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OldSchoolLookAndFeel.h"; path = "../../../../modules/juce_gui_extra/lookandfeel/juce_OldSchoolLookAndFeel.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -812,7 +811,6 @@ | |||||
| E7F19B91131A93E2B49094D1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | E7F19B91131A93E2B49094D1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TooltipWindow.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_TooltipWindow.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E8052B55E5F36932E1BE3A09 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | E8052B55E5F36932E1BE3A09 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_basics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E884C93E7363F24B5CE6DE1C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSampleBuffer.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; | E884C93E7363F24B5CE6DE1C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioSampleBuffer.cpp"; path = "../../../../modules/juce_audio_basics/buffers/juce_AudioSampleBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E89669EB797637247F52D30F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLComponent.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| E97917473ACF5E2BF4B424EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; | E97917473ACF5E2BF4B424EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableComposite.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E9B6CD16E5484D71733A15D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardState.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h"; sourceTree = "SOURCE_ROOT"; }; | E9B6CD16E5484D71733A15D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiKeyboardState.h"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| EA70FDB4DC6548345E1B0915 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | EA70FDB4DC6548345E1B0915 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -873,6 +871,7 @@ | |||||
| FC99246683913F59070B7966 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; | FC99246683913F59070B7966 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CPlusPlusCodeTokeniser.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| FCC1B59EB0F8C430693F5832 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; | FCC1B59EB0F8C430693F5832 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Result.cpp"; path = "../../../../modules/juce_core/misc/juce_Result.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| FD0A360D16FC0851ED8F12E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; | FD0A360D16FC0851ED8F12E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToggleButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ToggleButton.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| FDC5CCA1B1D3A41BADE24142 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| FE79AFFDB5029AC6AE7F4CFC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; | FE79AFFDB5029AC6AE7F4CFC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| FE7C03DACFC725D712D9F508 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_utils.mm"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; | FE7C03DACFC725D712D9F508 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_utils.mm"; path = "../../../../modules/juce_audio_utils/juce_audio_utils.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| FEB2517E7420B23086B6580B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; | FEB2517E7420B23086B6580B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MenuBarModel.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1820,8 +1819,6 @@ | |||||
| E23F6FDE88C4164420DC07F6 = { isa = PBXGroup; children = ( | E23F6FDE88C4164420DC07F6 = { isa = PBXGroup; children = ( | ||||
| 74CAA9C9A8F37A9FF99103F5, | 74CAA9C9A8F37A9FF99103F5, | ||||
| 483527FCBD7F07A7AF4743CC, | 483527FCBD7F07A7AF4743CC, | ||||
| CD96180DDD8610A155629CE1, | |||||
| E89669EB797637247F52D30F, | |||||
| 9512FB5C9D667ED59CFC0FF4, | 9512FB5C9D667ED59CFC0FF4, | ||||
| BE0231D93CBB02BBC2704D1D, | BE0231D93CBB02BBC2704D1D, | ||||
| 43D23C18695F24F9A3DFA7B4, | 43D23C18695F24F9A3DFA7B4, | ||||
| @@ -1832,6 +1829,7 @@ | |||||
| 9B4278735225CBEED635FF03, | 9B4278735225CBEED635FF03, | ||||
| C0EECABDA5446EAD76E2578F, | C0EECABDA5446EAD76E2578F, | ||||
| 4CE76ABC51CC5E019AED3C2B, | 4CE76ABC51CC5E019AED3C2B, | ||||
| 918A6AE024A876783EC063DD, | |||||
| 8BA1AF085755958342C9213A, | 8BA1AF085755958342C9213A, | ||||
| DFE18134F58A9C546AD16FF7, | DFE18134F58A9C546AD16FF7, | ||||
| 442E6311FB54378E88B6811C, | 442E6311FB54378E88B6811C, | ||||
| @@ -1840,13 +1838,13 @@ | |||||
| A1DC3C215187E6DD24DD7330, | A1DC3C215187E6DD24DD7330, | ||||
| AED08170765217A058A8C3BA ); name = opengl; sourceTree = "<group>"; }; | AED08170765217A058A8C3BA ); name = opengl; sourceTree = "<group>"; }; | ||||
| E8C88E6E3FEC2E7A4373205B = { isa = PBXGroup; children = ( | E8C88E6E3FEC2E7A4373205B = { isa = PBXGroup; children = ( | ||||
| 0DA6343549C1279EEDA7A81A, | |||||
| 6E673B706EA21387275F30FD, | |||||
| D4CC4DE44C44AEE40085ACD7, | |||||
| 1668565234C6F9C31363BBE2, | |||||
| B3E0F684EFAAB3722FC50D6F, | B3E0F684EFAAB3722FC50D6F, | ||||
| 8BD67EC10CC86AB4DB096E5D, | |||||
| 7916CA65827E16B3775C4952 ); name = native; sourceTree = "<group>"; }; | |||||
| 9279BC369938CE651A7F8348, | |||||
| 4F4884B5DE59137D823301FB, | |||||
| FDC5CCA1B1D3A41BADE24142, | |||||
| 19CF1995D026FB0177649557, | |||||
| 6C8EDB409CBC411544143565, | |||||
| 8BD67EC10CC86AB4DB096E5D ); name = native; sourceTree = "<group>"; }; | |||||
| 2C43A64E61A92F2912632BD6 = { isa = PBXGroup; children = ( | 2C43A64E61A92F2912632BD6 = { isa = PBXGroup; children = ( | ||||
| E23F6FDE88C4164420DC07F6, | E23F6FDE88C4164420DC07F6, | ||||
| E8C88E6E3FEC2E7A4373205B, | E8C88E6E3FEC2E7A4373205B, | ||||
| @@ -4188,17 +4188,6 @@ | |||||
| <Filter Name="opengl"> | <Filter Name="opengl"> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4254,8 +4243,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4265,23 +4253,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4291,8 +4264,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4302,19 +4275,18 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| </Filter> | </Filter> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| @@ -4188,17 +4188,6 @@ | |||||
| <Filter Name="opengl"> | <Filter Name="opengl"> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4254,8 +4243,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4265,23 +4253,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4291,8 +4264,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4302,19 +4275,18 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| </Filter> | </Filter> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| @@ -61,6 +61,7 @@ | |||||
| 0B85A2AF6033752E00F83AFF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0B85A2AF6033752E00F83AFF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Synthesiser.cpp"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0B9605D6761053F7125515C5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | 0B9605D6761053F7125515C5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_WebBrowserComponent.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0BC458FE29429B837EEB24C3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_ALSA.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0BC458FE29429B837EEB24C3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_ALSA.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_ALSA.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0BD6BC200ABC94991048D141 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_osx.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_osx.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 0C1C873F9DC4FE28049F59A6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0C1C873F9DC4FE28049F59A6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlyphArrangement.cpp"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0D4F3E75890C6947AB90B20A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0D4F3E75890C6947AB90B20A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CallOutBox.cpp"; path = "../../../../modules/juce_gui_basics/windows/juce_CallOutBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 0D591ABAB234B0426CE01D05 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; | 0D591ABAB234B0426CE01D05 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ActionBroadcaster.cpp"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -79,7 +80,6 @@ | |||||
| 1165196D8B7D6AFFA902D9ED = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; | 1165196D8B7D6AFFA902D9ED = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DirectoryContentsList.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 11AF7CE3994491AF2D5A9F07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; | 11AF7CE3994491AF2D5A9F07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_UnitTest.h"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 121B34A19423A36C86B7D358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; | 121B34A19423A36C86B7D358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadWithProgressWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1227115BD17EB8F0667DB117 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 124AED9F49C0DB9D4F0AD127 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; | 124AED9F49C0DB9D4F0AD127 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 124BDF35CA497A669F44F8A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; | 124BDF35CA497A669F44F8A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 12D7D5F45AF5472B8562ACFD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 12D7D5F45AF5472B8562ACFD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OutputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_OutputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -164,6 +164,7 @@ | |||||
| 2F196FD69A04E1DE0487879D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 2F196FD69A04E1DE0487879D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_LassoComponent.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_LassoComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 2F40F35B381DB1DC837B5785 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; | 2F40F35B381DB1DC837B5785 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InterprocessConnectionServer.cpp"; path = "../../../../modules/juce_events/interprocess/juce_InterprocessConnectionServer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 301FBEEA0017A1DC114C4296 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; | 301FBEEA0017A1DC114C4296 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LookAndFeel.cpp"; path = "../../../../modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 30BBFB8A57AF6B0A7933A7CF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_linux.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_linux.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 30DD615038F9EC4BE88D8CBE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 30DD615038F9EC4BE88D8CBE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TableHeaderComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 313F7506F18E1AA50DFA727C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; | 313F7506F18E1AA50DFA727C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WildcardFileFilter.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_WildcardFileFilter.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 31C84FEFD03777D3C0B30AE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | 31C84FEFD03777D3C0B30AE3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComboBox.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -188,7 +189,6 @@ | |||||
| 36118B506E1C0C5E554A3AB8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; | 36118B506E1C0C5E554A3AB8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_WindowsRegistry.h"; path = "../../../../modules/juce_core/misc/juce_WindowsRegistry.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 361B7CF8C22A945E2F9439AA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | 361B7CF8C22A945E2F9439AA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_LowLevelGraphicsSoftwareRenderer.cpp"; path = "../../../../modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 36203646F7650EEBC8E561E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; | 36203646F7650EEBC8E561E1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DropShadowEffect.h"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3682BBAEC6842DE49899AEF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_mac_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 3693E6A29D3276AE2FD99E7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; | 3693E6A29D3276AE2FD99E7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TreeView.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TreeView.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 36C52951440860FFBD722ADC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; | 36C52951440860FFBD722ADC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_audio_basics.mm"; path = "../../../../modules/juce_audio_basics/juce_audio_basics.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3726D2A716AFFCAFC689F699 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | 3726D2A716AFFCAFC689F699 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileChooserDialogBox.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -200,7 +200,6 @@ | |||||
| 383685240BE0C5D552CEE893 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; | 383685240BE0C5D552CEE893 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RectangleList.h"; path = "../../../../modules/juce_graphics/geometry/juce_RectangleList.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3889EC8401B85658FF2A4C79 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeMovieComponent.h"; path = "../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 3889EC8401B85658FF2A4C79 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_QuickTimeMovieComponent.h"; path = "../../../../modules/juce_video/playback/juce_QuickTimeMovieComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 391092117AFF1ED52D525830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; | 391092117AFF1ED52D525830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PerformanceCounter.h"; path = "../../../../modules/juce_core/time/juce_PerformanceCounter.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 39373A988D28974E62BE9DC5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 3A10CF9249AB0253491916FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | 3A10CF9249AB0253491916FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3A16148F99B69CC3E7244CCE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; | 3A16148F99B69CC3E7244CCE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AiffAudioFormat.h"; path = "../../../../modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3A8607BF3CB071A2BAEC2EF4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 3A8607BF3CB071A2BAEC2EF4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GroupComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_GroupComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -223,6 +222,7 @@ | |||||
| 3F07F48519ADEF7412141854 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; | 3F07F48519ADEF7412141854 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyboardFocusTraverser.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3F46748F4C1BA154F02782CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; | 3F46748F4C1BA154F02782CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComponentMovementWatcher.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 3FD5D0E80E59DD30653DECA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; | 3FD5D0E80E59DD30653DECA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableComposite.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableComposite.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 40E15724CF5BF54E87123B53 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_ios.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_ios.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 410374284F06C7E677CE3304 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | 410374284F06C7E677CE3304 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Timer.h"; path = "../../../../modules/juce_events/timers/juce_Timer.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 410A065CFC521631E097226B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; | 410A065CFC521631E097226B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GZIPDecompressorInputStream.h"; path = "../../../../modules/juce_core/zip/juce_GZIPDecompressorInputStream.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 41518874E6FBC857953759A4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailCache.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h"; sourceTree = "SOURCE_ROOT"; }; | 41518874E6FBC857953759A4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioThumbnailCache.h"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioThumbnailCache.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -312,8 +312,8 @@ | |||||
| 5CE8C9417DAADB74E43E45F2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; | 5CE8C9417DAADB74E43E45F2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5CEBA18D60D8B6ED8289C59B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; | 5CEBA18D60D8B6ED8289C59B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Logger.h"; path = "../../../../modules/juce_core/logging/juce_Logger.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5D481F5B2179D992DEE0B768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; | 5D481F5B2179D992DEE0B768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MD5.h"; path = "../../../../modules/juce_cryptography/hashing/juce_MD5.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5D7DD1DD4639D04EF34BA0F9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_win32.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_win32.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 5DADEFD1B5BD748F0E398FA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; | 5DADEFD1B5BD748F0E398FA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemStats.h"; path = "../../../../modules/juce_core/system/juce_SystemStats.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5DB822375EE0E803E8E448D4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 5E30952BCEDE4F9E9BCB8206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; | 5E30952BCEDE4F9E9BCB8206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Slider.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_Slider.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5EDC0271FFCE0FBE21E31146 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; | 5EDC0271FFCE0FBE21E31146 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5EF2F4588F397746FFB64D36 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; | 5EF2F4588F397746FFB64D36 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_XmlDocument.h"; path = "../../../../modules/juce_core/xml/juce_XmlDocument.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -398,6 +398,7 @@ | |||||
| 76AB694AEEC8FF5D6DF84ED6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | 76AB694AEEC8FF5D6DF84ED6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DragAndDrop.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 76DAC22E32A5D3125FA4AA38 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; | 76DAC22E32A5D3125FA4AA38 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_IIRFilter.cpp"; path = "../../../../modules/juce_audio_basics/effects/juce_IIRFilter.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 788ECBAB308119F741949B0A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; | 788ECBAB308119F741949B0A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF16.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF16.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 789DD960143BCB1B9A2559EC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLPixelFormat.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 78B57C946E0A65FC6D22F31B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; | 78B57C946E0A65FC6D22F31B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FillType.cpp"; path = "../../../../modules/juce_graphics/colour/juce_FillType.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 78D612A79CBC36D8C65979A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; | 78D612A79CBC36D8C65979A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 78E7A059FCFA552612AA9BB9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; | 78E7A059FCFA552612AA9BB9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MessageListener.h"; path = "../../../../modules/juce_events/messages/juce_MessageListener.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -496,6 +497,7 @@ | |||||
| 950A39A56232ED43E3AC72D3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; | 950A39A56232ED43E3AC72D3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Image.h"; path = "../../../../modules/juce_graphics/images/juce_Image.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 95345D1A744D9DD4B0FDCC79 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; | 95345D1A744D9DD4B0FDCC79 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableRectangle.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 95945740AE9C31DA5347FCEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; | 95945740AE9C31DA5347FCEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JuceHeader.h; path = ../../JuceLibraryCode/JuceHeader.h; sourceTree = "SOURCE_ROOT"; }; | ||||
| 95FD910B9D83BA03415EBCC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGL_android.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGL_android.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 9639E00C68CB8C0B7E7B5427 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; | 9639E00C68CB8C0B7E7B5427 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_TableListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_TableListBox.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 964B8F8E07FC8A58A0EA70EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | 964B8F8E07FC8A58A0EA70EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 966CF33B8DD2ABBE0C28B0F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; | 966CF33B8DD2ABBE0C28B0F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_Threads.mm"; path = "../../../../modules/juce_core/native/juce_mac_Threads.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -617,9 +619,7 @@ | |||||
| BDB49588F85B6CF8C1F25C56 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; | BDB49588F85B6CF8C1F25C56 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileSearchPath.cpp"; path = "../../../../modules/juce_core/files/juce_FileSearchPath.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| BE49682A83E13297A03A20B1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; }; | BE49682A83E13297A03A20B1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_VSTMidiEventList.h"; path = "../../../../modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| BEAA508BC8541174216C785F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; | BEAA508BC8541174216C785F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| BF25BBF1072EE73925E688D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_OpenGLComponent.cpp"; path = "../../../../modules/juce_opengl/native/juce_android_OpenGLComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| BF8413D015AE44CA39BC1BD9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; | BF8413D015AE44CA39BC1BD9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PreferencesPanel.h"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| BFBA3FCA1C3F9FD3BB8146B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_OpenGLComponent.mm"; path = "../../../../modules/juce_opengl/native/juce_ios_OpenGLComponent.mm"; sourceTree = "SOURCE_ROOT"; }; | |||||
| C0375E5656DB78324EA070D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | C0375E5656DB78324EA070D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_InputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_InputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| C0AFCC9608CDF29113F7EC1E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | C0AFCC9608CDF29113F7EC1E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| C0CC8628B556B8FD0C44BEAC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; | C0CC8628B556B8FD0C44BEAC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -721,7 +721,6 @@ | |||||
| DBBD0ED26A362051E18710E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; | DBBD0ED26A362051E18710E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_HashMap.h"; path = "../../../../modules/juce_core/containers/juce_HashMap.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DC31C8A4B63277C7D858A546 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | DC31C8A4B63277C7D858A546 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Midi.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_linux_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DC526387B6EB8A65C79A11B6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; | DC526387B6EB8A65C79A11B6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Process.h"; path = "../../../../modules/juce_core/threads/juce_Process.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DC76043392FDF3B5BD7D2554 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLComponent.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| DCCB4243EC468A5F8D307605 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceSelectorComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | DCCB4243EC468A5F8D307605 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioDeviceSelectorComponent.cpp"; path = "../../../../modules/juce_audio_utils/gui/juce_AudioDeviceSelectorComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DCCD453F3584ABA36E30A71A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; | DCCD453F3584ABA36E30A71A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ModifierKeys.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_ModifierKeys.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DD8A07A1E68DB9FEC6C9FF59 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; | DD8A07A1E68DB9FEC6C9FF59 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MidiKeyboardState.cpp"; path = "../../../../modules/juce_audio_basics/midi/juce_MidiKeyboardState.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1770,8 +1769,6 @@ | |||||
| 543980D718ACBB76513A4AF0 = { isa = PBXGroup; children = ( | 543980D718ACBB76513A4AF0 = { isa = PBXGroup; children = ( | ||||
| 96A82204F17CFBC13483F6BF, | 96A82204F17CFBC13483F6BF, | ||||
| 0B41301E2279379BE7955E65, | 0B41301E2279379BE7955E65, | ||||
| 1227115BD17EB8F0667DB117, | |||||
| DC76043392FDF3B5BD7D2554, | |||||
| EB41509899310297C8F7AC64, | EB41509899310297C8F7AC64, | ||||
| 6096E343983724F254B268C3, | 6096E343983724F254B268C3, | ||||
| 73C6ABF23C4B143DB2BC7226, | 73C6ABF23C4B143DB2BC7226, | ||||
| @@ -1782,6 +1779,7 @@ | |||||
| AEB9A6FBC99A1C710C51D799, | AEB9A6FBC99A1C710C51D799, | ||||
| 6DCD8800E380DB691DC9D467, | 6DCD8800E380DB691DC9D467, | ||||
| 7251827C30AC1C4F55C3DB69, | 7251827C30AC1C4F55C3DB69, | ||||
| 789DD960143BCB1B9A2559EC, | |||||
| 6D95302F8D68BA3F0538214F, | 6D95302F8D68BA3F0538214F, | ||||
| 1DC59B4A97D5DF77801ACAE8, | 1DC59B4A97D5DF77801ACAE8, | ||||
| F7010D646D19C704DE9D42A1, | F7010D646D19C704DE9D42A1, | ||||
| @@ -1790,13 +1788,13 @@ | |||||
| 154C4985C134E2B4A7B87025, | 154C4985C134E2B4A7B87025, | ||||
| 2AC1E88F92FCBD06A1A60D42 ); name = opengl; sourceTree = "<group>"; }; | 2AC1E88F92FCBD06A1A60D42 ); name = opengl; sourceTree = "<group>"; }; | ||||
| 637D3A9082C214CA0E067538 = { isa = PBXGroup; children = ( | 637D3A9082C214CA0E067538 = { isa = PBXGroup; children = ( | ||||
| BF25BBF1072EE73925E688D0, | |||||
| BFBA3FCA1C3F9FD3BB8146B8, | |||||
| 5DB822375EE0E803E8E448D4, | |||||
| 3682BBAEC6842DE49899AEF0, | |||||
| 524892AFEAC2AA524C015710, | 524892AFEAC2AA524C015710, | ||||
| F28767C5606E63E66146E375, | |||||
| 39373A988D28974E62BE9DC5 ); name = native; sourceTree = "<group>"; }; | |||||
| 95FD910B9D83BA03415EBCC1, | |||||
| 40E15724CF5BF54E87123B53, | |||||
| 30BBFB8A57AF6B0A7933A7CF, | |||||
| 0BD6BC200ABC94991048D141, | |||||
| 5D7DD1DD4639D04EF34BA0F9, | |||||
| F28767C5606E63E66146E375 ); name = native; sourceTree = "<group>"; }; | |||||
| 9CAD7248065B9A6C050F9527 = { isa = PBXGroup; children = ( | 9CAD7248065B9A6C050F9527 = { isa = PBXGroup; children = ( | ||||
| 543980D718ACBB76513A4AF0, | 543980D718ACBB76513A4AF0, | ||||
| 637D3A9082C214CA0E067538, | 637D3A9082C214CA0E067538, | ||||
| @@ -4150,17 +4150,6 @@ | |||||
| <Filter Name="opengl"> | <Filter Name="opengl"> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4216,8 +4205,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4227,23 +4215,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4253,8 +4226,8 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| @@ -4264,19 +4237,18 @@ | |||||
| <Tool Name="VCCLCompilerTool"/> | <Tool Name="VCCLCompilerTool"/> | ||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | |||||
| </Filter> | |||||
| <Filter Name="native"> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| </Filter> | </Filter> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | <File RelativePath="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| @@ -1125,9 +1125,6 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_gui_extra\native\juce_win32_WebBrowserComponent.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1143,19 +1140,13 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_video\native\juce_android_CameraDevice.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_video\native\juce_android_CameraDevice.cpp"> | ||||
| @@ -1579,7 +1570,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | <ClInclude Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Draggable3DOrientation.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLFrameBuffer.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLGraphicsContext.h"/> | ||||
| @@ -1591,6 +1581,11 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | ||||
| @@ -1411,9 +1411,6 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_module_info"> | <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_module_info"> | ||||
| <Filter>Juce Modules\juce_gui_extra</Filter> | <Filter>Juce Modules\juce_gui_extra</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1429,27 +1426,15 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_android_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_ios_OpenGLComponent.mm"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_linux_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\juce_module_info"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\juce_module_info"> | ||||
| <Filter>Juce Modules\juce_opengl</Filter> | <Filter>Juce Modules\juce_opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -2697,9 +2682,6 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Matrix3D.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLComponent.h"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLContext.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2733,6 +2715,21 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_MissingGLDefinitions.h"> | ||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | <Filter>Juce Modules\juce_opengl\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_android.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_ios.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_linux.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_osx.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGL_win32.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | ||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | <Filter>Juce Modules\juce_opengl\native</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -357,7 +357,7 @@ public final class JuceAppActivity extends Activity | |||||
| @Override | @Override | ||||
| public void onSurfaceChanged (GL10 unused, int width, int height) | public void onSurfaceChanged (GL10 unused, int width, int height) | ||||
| { | { | ||||
| contextCreated(); | |||||
| contextChangedSize(); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -367,6 +367,7 @@ public final class JuceAppActivity extends Activity | |||||
| } | } | ||||
| private native void contextCreated(); | private native void contextCreated(); | ||||
| private native void contextChangedSize(); | |||||
| private native void render(); | private native void render(); | ||||
| } | } | ||||
| @@ -196,24 +196,19 @@ static void checkGLError (const char* file, const int line) | |||||
| #define JUCE_CHECK_OPENGL_ERROR ; | #define JUCE_CHECK_OPENGL_ERROR ; | ||||
| #endif | #endif | ||||
| static void clearGLError() | |||||
| { | |||||
| while (glGetError() != GL_NO_ERROR) {} | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| // START_AUTOINCLUDE opengl/*.cpp | |||||
| #include "opengl/juce_OpenGLComponent.cpp" | |||||
| #include "opengl/juce_OpenGLContext.cpp" | |||||
| #include "opengl/juce_OpenGLFrameBuffer.cpp" | #include "opengl/juce_OpenGLFrameBuffer.cpp" | ||||
| #include "opengl/juce_OpenGLGraphicsContext.cpp" | #include "opengl/juce_OpenGLGraphicsContext.cpp" | ||||
| #include "opengl/juce_OpenGLHelpers.cpp" | #include "opengl/juce_OpenGLHelpers.cpp" | ||||
| #include "opengl/juce_OpenGLImage.cpp" | #include "opengl/juce_OpenGLImage.cpp" | ||||
| #include "opengl/juce_OpenGLPixelFormat.cpp" | |||||
| #include "opengl/juce_OpenGLShaderProgram.cpp" | #include "opengl/juce_OpenGLShaderProgram.cpp" | ||||
| #include "opengl/juce_OpenGLTexture.cpp" | #include "opengl/juce_OpenGLTexture.cpp" | ||||
| // END_AUTOINCLUDE | |||||
| } | |||||
| using namespace juce; | |||||
| namespace juce | |||||
| { | |||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_MAC || JUCE_IOS | #if JUCE_MAC || JUCE_IOS | ||||
| @@ -222,21 +217,23 @@ namespace juce | |||||
| #include "../juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" | #include "../juce_graphics/native/juce_mac_CoreGraphicsHelpers.h" | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| #include "native/juce_mac_OpenGLComponent.mm" | |||||
| #include "native/juce_OpenGL_osx.h" | |||||
| #else | #else | ||||
| #include "native/juce_ios_OpenGLComponent.mm" | |||||
| #include "native/juce_OpenGL_ios.h" | |||||
| #endif | #endif | ||||
| #elif JUCE_WINDOWS | #elif JUCE_WINDOWS | ||||
| #include "native/juce_win32_OpenGLComponent.cpp" | |||||
| #include "native/juce_OpenGL_win32.h" | |||||
| #elif JUCE_LINUX | #elif JUCE_LINUX | ||||
| #include "native/juce_linux_OpenGLComponent.cpp" | |||||
| #include "native/juce_OpenGL_linux.h" | |||||
| #elif JUCE_ANDROID | #elif JUCE_ANDROID | ||||
| #include "../juce_core/native/juce_android_JNIHelpers.h" | #include "../juce_core/native/juce_android_JNIHelpers.h" | ||||
| #include "native/juce_android_OpenGLComponent.cpp" | |||||
| #include "native/juce_OpenGL_android.h" | |||||
| #endif | #endif | ||||
| #include "opengl/juce_OpenGLContext.cpp" | |||||
| } | } | ||||
| @@ -58,8 +58,7 @@ | |||||
| #include <GL/gl.h> | #include <GL/gl.h> | ||||
| #undef KeyPress | #undef KeyPress | ||||
| #elif JUCE_IOS | #elif JUCE_IOS | ||||
| #include <OpenGLES/ES1/gl.h> | |||||
| #include <OpenGLES/ES1/glext.h> | |||||
| #include <OpenGLES/ES2/gl.h> | |||||
| #elif JUCE_MAC | #elif JUCE_MAC | ||||
| #include <OpenGL/gl.h> | #include <OpenGL/gl.h> | ||||
| #include "OpenGL/glext.h" | #include "OpenGL/glext.h" | ||||
| @@ -67,7 +66,7 @@ | |||||
| #include <GLES2/gl2.h> | #include <GLES2/gl2.h> | ||||
| #endif | #endif | ||||
| #if (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_ANDROID) && ! defined (JUCE_USE_OPENGL_SHADERS) | |||||
| #if ! defined (JUCE_USE_OPENGL_SHADERS) | |||||
| #define JUCE_USE_OPENGL_SHADERS 1 | #define JUCE_USE_OPENGL_SHADERS 1 | ||||
| #endif | #endif | ||||
| @@ -88,9 +87,6 @@ namespace juce | |||||
| #ifndef __JUCE_MATRIX3D_JUCEHEADER__ | #ifndef __JUCE_MATRIX3D_JUCEHEADER__ | ||||
| #include "opengl/juce_Matrix3D.h" | #include "opengl/juce_Matrix3D.h" | ||||
| #endif | #endif | ||||
| #ifndef __JUCE_OPENGLCOMPONENT_JUCEHEADER__ | |||||
| #include "opengl/juce_OpenGLComponent.h" | |||||
| #endif | |||||
| #ifndef __JUCE_OPENGLCONTEXT_JUCEHEADER__ | #ifndef __JUCE_OPENGLCONTEXT_JUCEHEADER__ | ||||
| #include "opengl/juce_OpenGLContext.h" | #include "opengl/juce_OpenGLContext.h" | ||||
| #endif | #endif | ||||
| @@ -0,0 +1,204 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| #define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ | |||||
| METHOD (layout, "layout", "(IIII)V") \ | |||||
| METHOD (requestRender, "requestRender", "()V") \ | |||||
| DECLARE_JNI_CLASS (OpenGLView, JUCE_ANDROID_ACTIVITY_CLASSPATH "$OpenGLView"); | |||||
| #undef JNI_CLASS_MEMBERS | |||||
| extern jobject createOpenGLView (ComponentPeer*); | |||||
| //============================================================================== | |||||
| class OpenGLContext::NativeContext | |||||
| { | |||||
| public: | |||||
| NativeContext (Component& component_, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const NativeContext* contextToShareWith) | |||||
| : component (component_), | |||||
| isInsideGLCallback (false) | |||||
| { | |||||
| glView = GlobalRef (createOpenGLView (component.getPeer())); | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| getContextList().add (this); | |||||
| } | |||||
| updateWindowPosition (component.getTopLevelComponent() | |||||
| ->getLocalArea (&component, component.getLocalBounds())); | |||||
| } | |||||
| ~NativeContext() | |||||
| { | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| getContextList().removeValue (this); | |||||
| } | |||||
| android.activity.callVoidMethod (JuceAppActivity.deleteView, glView.get()); | |||||
| glView.clear(); | |||||
| } | |||||
| void initialiseOnRenderThread() | |||||
| { | |||||
| } | |||||
| void shutdownOnRenderThread() | |||||
| { | |||||
| } | |||||
| bool makeActive() const noexcept { return isInsideGLCallback; } | |||||
| bool makeInactive() const noexcept { return true; } | |||||
| bool isActive() const noexcept { return isInsideGLCallback; } | |||||
| void swapBuffers() const noexcept {} | |||||
| bool setSwapInterval (const int) { return false; } | |||||
| int getSwapInterval() const { return 0; } | |||||
| bool createdOk() const noexcept { return getRawContext() != nullptr; } | |||||
| void* getRawContext() const noexcept { return glView.get(); } | |||||
| GLuint getFrameBufferID() const noexcept { return 0; } | |||||
| void updateWindowPosition (const Rectangle<int>& bounds) | |||||
| { | |||||
| if (lastBounds != bounds) | |||||
| { | |||||
| lastBounds = bounds; | |||||
| glView.callVoidMethod (OpenGLView.layout, | |||||
| bounds.getX(), bounds.getY(), | |||||
| bounds.getRight(), bounds.getBottom()); | |||||
| } | |||||
| } | |||||
| void triggerRepaint() | |||||
| { | |||||
| glView.callVoidMethod (OpenGLView.requestRender); | |||||
| } | |||||
| //============================================================================== | |||||
| void contextCreatedCallback(); | |||||
| void renderCallback(); | |||||
| //============================================================================== | |||||
| static NativeContext* findContextFor (JNIEnv* env, jobject glView) | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| const ContextArray& contexts = getContextList(); | |||||
| for (int i = contexts.size(); --i >= 0;) | |||||
| { | |||||
| NativeContext* const c = contexts.getUnchecked(i); | |||||
| if (env->IsSameObject (c->glView.get(), glView)) | |||||
| return c; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| static NativeContext* getActiveContext() noexcept | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| const ContextArray& contexts = getContextList(); | |||||
| for (int i = contexts.size(); --i >= 0;) | |||||
| { | |||||
| NativeContext* const c = contexts.getUnchecked(i); | |||||
| if (c->isInsideGLCallback) | |||||
| return c; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| Component& component; | |||||
| private: | |||||
| GlobalRef glView; | |||||
| Rectangle<int> lastBounds; | |||||
| bool isInsideGLCallback; | |||||
| static CriticalSection& getContextListLock() | |||||
| { | |||||
| static CriticalSection lock; | |||||
| return lock; | |||||
| } | |||||
| typedef Array<NativeContext*> ContextArray; | |||||
| static ContextArray& getContextList() | |||||
| { | |||||
| static ContextArray contexts; | |||||
| return contexts; | |||||
| } | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NativeContext); | |||||
| }; | |||||
| //============================================================================== | |||||
| bool OpenGLHelpers::isContextActive() | |||||
| { | |||||
| return OpenGLContext::NativeContext::getActiveContext() != nullptr; | |||||
| } | |||||
| //============================================================================== | |||||
| JUCE_JNI_CALLBACK (JUCE_JOIN_MACRO (JUCE_ANDROID_ACTIVITY_CLASSNAME, _00024OpenGLView), contextCreated, void, (JNIEnv* env, jobject view)) | |||||
| { | |||||
| threadLocalJNIEnvHolder.getOrAttach(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| for (int i = 100; --i >= 0;) | |||||
| { | |||||
| OpenGLContext::NativeContext* const context = OpenGLContext::NativeContext::findContextFor (env, view); | |||||
| if (context != nullptr) | |||||
| { | |||||
| context->contextCreatedCallback(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| return; | |||||
| } | |||||
| Thread::sleep (20); | |||||
| } | |||||
| jassertfalse; | |||||
| } | |||||
| JUCE_JNI_CALLBACK (JUCE_JOIN_MACRO (JUCE_ANDROID_ACTIVITY_CLASSNAME, _00024OpenGLView), contextChangedSize, void, (JNIEnv* env, jobject view)) | |||||
| { | |||||
| } | |||||
| JUCE_JNI_CALLBACK (JUCE_JOIN_MACRO (JUCE_ANDROID_ACTIVITY_CLASSNAME, _00024OpenGLView), render, void, (JNIEnv* env, jobject view)) | |||||
| { | |||||
| OpenGLContext::NativeContext* const context = OpenGLContext::NativeContext::findContextFor (env, view); | |||||
| if (context != nullptr) | |||||
| context->renderCallback(); | |||||
| } | |||||
| @@ -41,129 +41,161 @@ | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| //============================================================================== | |||||
| class GLESContext : public OpenGLContext | |||||
| class OpenGLContext::NativeContext | |||||
| { | { | ||||
| public: | public: | ||||
| GLESContext (UIView* parentView, | |||||
| Component* const component_, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const GLESContext* const sharedContext, | |||||
| const bool isGLES2_) | |||||
| : component (component_), glLayer (nil), context (nil), | |||||
| useDepthBuffer (pixelFormat.depthBufferBits > 0), isGLES2 (isGLES2_), | |||||
| frameBufferHandle (0), colorBufferHandle (0), | |||||
| depthBufferHandle (0), lastWidth (0), lastHeight (0) | |||||
| NativeContext (Component& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const NativeContext* const contextToShareWith) | |||||
| : frameBufferHandle (0), colorBufferHandle (0), depthBufferHandle (0), | |||||
| lastWidth (0), lastHeight (0), needToRebuildBuffers (false), | |||||
| swapFrames (0), useDepthBuffer (pixelFormat.depthBufferBits > 0) | |||||
| { | { | ||||
| view = [[JuceGLView alloc] initWithFrame: CGRectMake (0, 0, 64, 64)]; | |||||
| JUCE_AUTORELEASEPOOL | |||||
| ComponentPeer* const peer = component.getPeer(); | |||||
| jassert (peer != nullptr); | |||||
| const Rectangle<int> bounds (peer->getComponent()->getLocalArea (&component, component.getLocalBounds())); | |||||
| lastWidth = bounds.getWidth(); | |||||
| lastHeight = bounds.getHeight(); | |||||
| view = [[JuceGLView alloc] initWithFrame: getCGRectFor (bounds)]; | |||||
| view.opaque = YES; | view.opaque = YES; | ||||
| view.hidden = NO; | view.hidden = NO; | ||||
| view.backgroundColor = [UIColor blackColor]; | view.backgroundColor = [UIColor blackColor]; | ||||
| view.userInteractionEnabled = NO; | view.userInteractionEnabled = NO; | ||||
| glLayer = (CAEAGLLayer*) [view layer]; | glLayer = (CAEAGLLayer*) [view layer]; | ||||
| [parentView addSubview: view]; | |||||
| [((UIView*) peer->getNativeHandle()) addSubview: view]; | |||||
| context = [EAGLContext alloc]; | |||||
| NSUInteger apiType = isGLES2_ ? kEAGLRenderingAPIOpenGLES2 | |||||
| : kEAGLRenderingAPIOpenGLES1; | |||||
| const NSUInteger type = kEAGLRenderingAPIOpenGLES2; | |||||
| if (sharedContext != nullptr) | |||||
| context = [[EAGLContext alloc] initWithAPI: apiType | |||||
| sharegroup: [sharedContext->context sharegroup]]; | |||||
| if (contextToShareWith != nullptr) | |||||
| [context initWithAPI: type sharegroup: [contextToShareWith->context sharegroup]]; | |||||
| else | else | ||||
| context = [[EAGLContext alloc] initWithAPI: apiType]; | |||||
| [context initWithAPI: type]; | |||||
| // I'd prefer to put this stuff in the initialiseOnRenderThread() call, but doing | |||||
| // so causes myserious timing-related failures. | |||||
| [EAGLContext setCurrentContext: context]; | |||||
| createGLBuffers(); | createGLBuffers(); | ||||
| [EAGLContext setCurrentContext: nil]; | |||||
| } | } | ||||
| ~GLESContext() | |||||
| ~NativeContext() | |||||
| { | { | ||||
| properties.clear(); // to release any stored programs, etc that may be held in properties. | |||||
| makeInactive(); | |||||
| [context release]; | [context release]; | ||||
| context = nil; | context = nil; | ||||
| [view removeFromSuperview]; | [view removeFromSuperview]; | ||||
| [view release]; | [view release]; | ||||
| } | |||||
| void initialiseOnRenderThread() | |||||
| { | |||||
| } | |||||
| void shutdownOnRenderThread() | |||||
| { | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| freeGLBuffers(); | freeGLBuffers(); | ||||
| } | } | ||||
| bool createdOk() const noexcept { return getRawContext() != nullptr; } | |||||
| void* getRawContext() const noexcept { return glLayer; } | |||||
| GLuint getFrameBufferID() const noexcept { return frameBufferHandle; } | |||||
| bool makeActive() const noexcept | bool makeActive() const noexcept | ||||
| { | { | ||||
| jassert (context != nil); | |||||
| if (! [EAGLContext setCurrentContext: context]) | |||||
| return false; | |||||
| [EAGLContext setCurrentContext: context]; | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, frameBufferHandle); | glBindFramebuffer (GL_FRAMEBUFFER, frameBufferHandle); | ||||
| return true; | return true; | ||||
| } | } | ||||
| void swapBuffers() | |||||
| bool makeInactive() const noexcept | |||||
| { | { | ||||
| glBindRenderbuffer (GL_RENDERBUFFER, colorBufferHandle); | |||||
| [context presentRenderbuffer: GL_RENDERBUFFER]; | |||||
| return (! isActive()) || [EAGLContext setCurrentContext: nil]; | |||||
| } | } | ||||
| bool makeInactive() const noexcept | |||||
| bool isActive() const noexcept | |||||
| { | { | ||||
| return [EAGLContext setCurrentContext: nil]; | |||||
| return [EAGLContext currentContext] == context; | |||||
| } | } | ||||
| bool isActive() const noexcept { return [EAGLContext currentContext] == context; } | |||||
| void* getRawContext() const noexcept { return glLayer; } | |||||
| unsigned int getFrameBufferID() const { return (unsigned int) frameBufferHandle; } | |||||
| void swapBuffers() | |||||
| { | |||||
| glBindRenderbuffer (GL_RENDERBUFFER, colorBufferHandle); | |||||
| [context presentRenderbuffer: GL_RENDERBUFFER]; | |||||
| int getWidth() const { return lastWidth; } | |||||
| int getHeight() const { return lastHeight; } | |||||
| if (needToRebuildBuffers) | |||||
| { | |||||
| needToRebuildBuffers = false; | |||||
| bool areShadersAvailable() const { return isGLES2; } | |||||
| freeGLBuffers(); | |||||
| createGLBuffers(); | |||||
| makeActive(); | |||||
| } | |||||
| } | |||||
| void updateWindowPosition (const Rectangle<int>& bounds) | void updateWindowPosition (const Rectangle<int>& bounds) | ||||
| { | { | ||||
| // For some strange reason, the view seems to fail unless its width is a multiple of 8... | |||||
| view.frame = CGRectMake ((CGFloat) bounds.getX(), (CGFloat) bounds.getY(), | |||||
| (CGFloat) (bounds.getWidth() & ~7), | |||||
| (CGFloat) bounds.getHeight()); | |||||
| view.frame = getCGRectFor (bounds); | |||||
| if (lastWidth != bounds.getWidth() || lastHeight != bounds.getHeight()) | if (lastWidth != bounds.getWidth() || lastHeight != bounds.getHeight()) | ||||
| { | { | ||||
| lastWidth = bounds.getWidth(); | |||||
| lastWidth = bounds.getWidth(); | |||||
| lastHeight = bounds.getHeight(); | lastHeight = bounds.getHeight(); | ||||
| freeGLBuffers(); | |||||
| createGLBuffers(); | |||||
| needToRebuildBuffers = true; | |||||
| } | } | ||||
| } | } | ||||
| bool setSwapInterval (const int numFramesPerSwap) | |||||
| bool setSwapInterval (const int numFramesPerSwap) noexcept | |||||
| { | { | ||||
| numFrames = numFramesPerSwap; | |||||
| return true; | |||||
| swapFrames = numFramesPerSwap; | |||||
| return false; | |||||
| } | } | ||||
| int getSwapInterval() const | |||||
| int getSwapInterval() const noexcept { return swapFrames; } | |||||
| private: | |||||
| JuceGLView* view; | |||||
| CAEAGLLayer* glLayer; | |||||
| EAGLContext* context; | |||||
| GLuint frameBufferHandle, colorBufferHandle, depthBufferHandle; | |||||
| int volatile lastWidth, lastHeight; | |||||
| bool volatile needToRebuildBuffers; | |||||
| int swapFrames; | |||||
| bool useDepthBuffer; | |||||
| //============================================================================== | |||||
| static CGRect getCGRectFor (const Rectangle<int>& bounds) | |||||
| { | { | ||||
| return numFrames; | |||||
| return CGRectMake ((CGFloat) bounds.getX(), | |||||
| (CGFloat) bounds.getY(), | |||||
| (CGFloat) bounds.getWidth(), | |||||
| (CGFloat) bounds.getHeight()); | |||||
| } | } | ||||
| //============================================================================== | |||||
| void createGLBuffers() | void createGLBuffers() | ||||
| { | { | ||||
| makeActive(); | |||||
| glGenFramebuffers (1, &frameBufferHandle); | glGenFramebuffers (1, &frameBufferHandle); | ||||
| glGenRenderbuffers (1, &colorBufferHandle); | glGenRenderbuffers (1, &colorBufferHandle); | ||||
| glGenRenderbuffers (1, &depthBufferHandle); | |||||
| glBindRenderbuffer (GL_RENDERBUFFER, colorBufferHandle); | glBindRenderbuffer (GL_RENDERBUFFER, colorBufferHandle); | ||||
| bool ok = [context renderbufferStorage: GL_RENDERBUFFER fromDrawable: glLayer]; | bool ok = [context renderbufferStorage: GL_RENDERBUFFER fromDrawable: glLayer]; | ||||
| jassert (ok); (void) ok; | jassert (ok); (void) ok; | ||||
| GLint width, height; | |||||
| glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); | |||||
| glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); | |||||
| if (useDepthBuffer) | if (useDepthBuffer) | ||||
| { | { | ||||
| GLint width, height; | |||||
| glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); | |||||
| glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); | |||||
| glGenRenderbuffers (1, &depthBufferHandle); | |||||
| glBindRenderbuffer (GL_RENDERBUFFER, depthBufferHandle); | glBindRenderbuffer (GL_RENDERBUFFER, depthBufferHandle); | ||||
| glRenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); | glRenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height); | ||||
| } | } | ||||
| @@ -177,10 +209,12 @@ public: | |||||
| glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBufferHandle); | glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBufferHandle); | ||||
| jassert (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); | jassert (glCheckFramebufferStatus (GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | } | ||||
| void freeGLBuffers() | void freeGLBuffers() | ||||
| { | { | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| [context renderbufferStorage: GL_RENDERBUFFER fromDrawable: nil]; | [context renderbufferStorage: GL_RENDERBUFFER fromDrawable: nil]; | ||||
| if (frameBufferHandle != 0) | if (frameBufferHandle != 0) | ||||
| @@ -200,35 +234,13 @@ public: | |||||
| glDeleteRenderbuffers (1, &depthBufferHandle); | glDeleteRenderbuffers (1, &depthBufferHandle); | ||||
| depthBufferHandle = 0; | depthBufferHandle = 0; | ||||
| } | } | ||||
| } | |||||
| private: | |||||
| WeakReference<Component> component; | |||||
| JuceGLView* view; | |||||
| CAEAGLLayer* glLayer; | |||||
| EAGLContext* context; | |||||
| bool useDepthBuffer, isGLES2; | |||||
| GLuint frameBufferHandle, colorBufferHandle, depthBufferHandle; | |||||
| int numFrames; | |||||
| int lastWidth, lastHeight; | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GLESContext); | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NativeContext); | |||||
| }; | }; | ||||
| OpenGLContext* OpenGLComponent::createContext() | |||||
| { | |||||
| JUCE_AUTORELEASEPOOL | |||||
| ComponentPeer* peer = getPeer(); | |||||
| if (peer != nullptr) | |||||
| return new GLESContext ((UIView*) peer->getNativeHandle(), this, preferredPixelFormat, | |||||
| dynamic_cast <const GLESContext*> (contextToShareListsWith), | |||||
| (flags & openGLES2) != 0); | |||||
| return nullptr; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool OpenGLHelpers::isContextActive() | bool OpenGLHelpers::isContextActive() | ||||
| { | { | ||||
| @@ -27,23 +27,15 @@ extern Display* display; | |||||
| extern XContext windowHandleXContext; | extern XContext windowHandleXContext; | ||||
| //============================================================================== | //============================================================================== | ||||
| class WindowedGLContext : public OpenGLContext | |||||
| class OpenGLContext::NativeContext | |||||
| { | { | ||||
| public: | public: | ||||
| WindowedGLContext (Component* const component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| GLXContext sharedContext) | |||||
| : renderContext (0), | |||||
| embeddedWindow (0), | |||||
| swapInterval (0) | |||||
| NativeContext (Component& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const NativeContext* contextToShareWith_) | |||||
| : renderContext (0), embeddedWindow (0), swapFrames (0), bestVisual (0), | |||||
| contextToShareWith (contextToShareWith_) | |||||
| { | { | ||||
| extensions.initialise(); | |||||
| jassert (component != nullptr); | |||||
| ComponentPeer* const peer = component->getTopLevelComponent()->getPeer(); | |||||
| if (peer == nullptr) | |||||
| return; | |||||
| ScopedXLock xlock; | ScopedXLock xlock; | ||||
| XSync (display, False); | XSync (display, False); | ||||
| @@ -64,13 +56,11 @@ public: | |||||
| None | None | ||||
| }; | }; | ||||
| XVisualInfo* const bestVisual = glXChooseVisual (display, DefaultScreen (display), attribs); | |||||
| if (bestVisual == 0) | |||||
| bestVisual = glXChooseVisual (display, DefaultScreen (display), attribs); | |||||
| if (bestVisual == nullptr) | |||||
| return; | return; | ||||
| renderContext = glXCreateContext (display, bestVisual, sharedContext, GL_TRUE); | |||||
| ComponentPeer* const peer = component.getPeer(); | |||||
| Window windowH = (Window) peer->getNativeHandle(); | Window windowH = (Window) peer->getNativeHandle(); | ||||
| Colormap colourMap = XCreateColormap (display, windowH, bestVisual->visual, AllocNone); | Colormap colourMap = XCreateColormap (display, windowH, bestVisual->visual, AllocNone); | ||||
| @@ -79,9 +69,14 @@ public: | |||||
| swa.border_pixel = 0; | swa.border_pixel = 0; | ||||
| swa.event_mask = ExposureMask | StructureNotifyMask; | swa.event_mask = ExposureMask | StructureNotifyMask; | ||||
| const Rectangle<int> bounds (component.getTopLevelComponent() | |||||
| ->getLocalArea (&component, component.getLocalBounds())); | |||||
| embeddedWindow = XCreateWindow (display, windowH, | embeddedWindow = XCreateWindow (display, windowH, | ||||
| 0, 0, 1, 1, 0, | |||||
| bestVisual->depth, | |||||
| bounds.getX(), bounds.getY(), | |||||
| jmax (1, bounds.getWidth()), | |||||
| jmax (1, bounds.getHeight()), | |||||
| 0, bestVisual->depth, | |||||
| InputOutput, | InputOutput, | ||||
| bestVisual->visual, | bestVisual->visual, | ||||
| CWBorderPixel | CWColormap | CWEventMask, | CWBorderPixel | CWColormap | CWEventMask, | ||||
| @@ -92,58 +87,58 @@ public: | |||||
| XMapWindow (display, embeddedWindow); | XMapWindow (display, embeddedWindow); | ||||
| XFreeColormap (display, colourMap); | XFreeColormap (display, colourMap); | ||||
| XFree (bestVisual); | |||||
| XSync (display, False); | XSync (display, False); | ||||
| makeActive(); | |||||
| extensions.initialise(); | |||||
| makeInactive(); | |||||
| } | } | ||||
| ~WindowedGLContext() | |||||
| ~NativeContext() | |||||
| { | { | ||||
| ScopedXLock xlock; | |||||
| properties.clear(); // to release any stored programs, etc that may be held in properties. | |||||
| makeInactive(); | |||||
| if (renderContext != 0) | |||||
| if (embeddedWindow != 0) | |||||
| { | { | ||||
| ScopedXLock xlock; | ScopedXLock xlock; | ||||
| glXDestroyContext (display, renderContext); | |||||
| renderContext = nullptr; | |||||
| XUnmapWindow (display, embeddedWindow); | |||||
| XDestroyWindow (display, embeddedWindow); | |||||
| } | } | ||||
| XUnmapWindow (display, embeddedWindow); | |||||
| XDestroyWindow (display, embeddedWindow); | |||||
| if (bestVisual != nullptr) | |||||
| XFree (bestVisual); | |||||
| } | } | ||||
| bool makeActive() const noexcept | |||||
| void initialiseOnRenderThread() | |||||
| { | { | ||||
| jassert (renderContext != 0); | |||||
| ScopedXLock xlock; | ScopedXLock xlock; | ||||
| return glXMakeCurrent (display, embeddedWindow, renderContext) | |||||
| && XSync (display, False); | |||||
| renderContext = glXCreateContext (display, bestVisual, | |||||
| contextToShareWith != nullptr ? contextToShareWith->renderContext : 0, | |||||
| GL_TRUE); | |||||
| makeActive(); | |||||
| } | |||||
| void shutdownOnRenderThread() | |||||
| { | |||||
| makeInactive(); | |||||
| glXDestroyContext (display, renderContext); | |||||
| renderContext = nullptr; | |||||
| } | |||||
| bool makeActive() const noexcept | |||||
| { | |||||
| return renderContext != 0 | |||||
| && glXMakeCurrent (display, embeddedWindow, renderContext); | |||||
| } | } | ||||
| bool makeInactive() const noexcept | bool makeInactive() const noexcept | ||||
| { | { | ||||
| ScopedXLock xlock; | |||||
| return (! isActive()) || glXMakeCurrent (display, None, 0); | return (! isActive()) || glXMakeCurrent (display, None, 0); | ||||
| } | } | ||||
| bool isActive() const noexcept | bool isActive() const noexcept | ||||
| { | { | ||||
| ScopedXLock xlock; | |||||
| return glXGetCurrentContext() == renderContext; | |||||
| return glXGetCurrentContext() == renderContext && renderContext != 0; | |||||
| } | } | ||||
| unsigned int getFrameBufferID() const { return 0; } | |||||
| void* getRawContext() const noexcept { return renderContext; } | |||||
| int getWidth() const { return bounds.getWidth(); } | |||||
| int getHeight() const { return bounds.getHeight(); } | |||||
| void swapBuffers() | |||||
| { | |||||
| glXSwapBuffers (display, embeddedWindow); | |||||
| } | |||||
| void updateWindowPosition (const Rectangle<int>& newBounds) | void updateWindowPosition (const Rectangle<int>& newBounds) | ||||
| { | { | ||||
| @@ -151,18 +146,13 @@ public: | |||||
| ScopedXLock xlock; | ScopedXLock xlock; | ||||
| XMoveResizeWindow (display, embeddedWindow, | XMoveResizeWindow (display, embeddedWindow, | ||||
| bounds.getX(), bounds.getY(), jmax (1, bounds.getWidth()), jmax (1, bounds.getHeight())); | |||||
| } | |||||
| void swapBuffers() | |||||
| { | |||||
| ScopedXLock xlock; | |||||
| glXSwapBuffers (display, embeddedWindow); | |||||
| bounds.getX(), bounds.getY(), | |||||
| jmax (1, bounds.getWidth()), jmax (1, bounds.getHeight())); | |||||
| } | } | ||||
| bool setSwapInterval (const int newSwapInterval) | |||||
| bool setSwapInterval (int numFramesPerSwap) | |||||
| { | { | ||||
| if (newSwapInterval == swapInterval) | |||||
| if (numFramesPerSwap == swapFrames) | |||||
| return true; | return true; | ||||
| PFNGLXSWAPINTERVALSGIPROC GLXSwapIntervalSGI | PFNGLXSWAPINTERVALSGIPROC GLXSwapIntervalSGI | ||||
| @@ -170,35 +160,31 @@ public: | |||||
| if (GLXSwapIntervalSGI != nullptr) | if (GLXSwapIntervalSGI != nullptr) | ||||
| { | { | ||||
| swapInterval = newSwapInterval; | |||||
| GLXSwapIntervalSGI (newSwapInterval); | |||||
| swapFrames = numFramesPerSwap; | |||||
| GLXSwapIntervalSGI (numFramesPerSwap); | |||||
| return true; | return true; | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| int getSwapInterval() const { return swapInterval; } | |||||
| int getSwapInterval() const { return swapFrames; } | |||||
| bool createdOk() const noexcept { return true; } | |||||
| void* getRawContext() const noexcept { return renderContext; } | |||||
| GLuint getFrameBufferID() const noexcept { return 0; } | |||||
| private: | |||||
| GLXContext renderContext; | GLXContext renderContext; | ||||
| Window embeddedWindow; | Window embeddedWindow; | ||||
| private: | |||||
| int swapInterval; | |||||
| int swapFrames; | |||||
| Rectangle<int> bounds; | Rectangle<int> bounds; | ||||
| XVisualInfo* bestVisual; | |||||
| const NativeContext* contextToShareWith; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WindowedGLContext); | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NativeContext); | |||||
| }; | }; | ||||
| //============================================================================== | |||||
| OpenGLContext* OpenGLComponent::createContext() | |||||
| { | |||||
| ScopedPointer<WindowedGLContext> c (new WindowedGLContext (this, preferredPixelFormat, | |||||
| contextToShareListsWith != 0 ? (GLXContext) contextToShareListsWith->getRawContext() : 0)); | |||||
| return (c->renderContext != 0) ? c.release() : nullptr; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool OpenGLHelpers::isContextActive() | bool OpenGLHelpers::isContextActive() | ||||
| { | { | ||||
| @@ -30,7 +30,7 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| @interface ThreadSafeNSOpenGLView : NSOpenGLView | @interface ThreadSafeNSOpenGLView : NSOpenGLView | ||||
| { | { | ||||
| CriticalSection* contextLock; | |||||
| juce::CriticalSection* contextLock; | |||||
| bool needsUpdate; | bool needsUpdate; | ||||
| } | } | ||||
| @@ -47,8 +47,9 @@ | |||||
| - (id) initWithFrame: (NSRect) frameRect | - (id) initWithFrame: (NSRect) frameRect | ||||
| pixelFormat: (NSOpenGLPixelFormat*) format | pixelFormat: (NSOpenGLPixelFormat*) format | ||||
| { | { | ||||
| contextLock = new CriticalSection(); | |||||
| contextLock = new juce::CriticalSection(); | |||||
| self = [super initWithFrame: frameRect pixelFormat: format]; | self = [super initWithFrame: frameRect pixelFormat: format]; | ||||
| needsUpdate = true; | |||||
| if (self != nil) | if (self != nil) | ||||
| [[NSNotificationCenter defaultCenter] addObserver: self | [[NSNotificationCenter defaultCenter] addObserver: self | ||||
| @@ -67,7 +68,7 @@ | |||||
| - (bool) makeActive | - (bool) makeActive | ||||
| { | { | ||||
| const ScopedLock sl (*contextLock); | |||||
| const juce::ScopedLock sl (*contextLock); | |||||
| if ([self openGLContext] == nil) | if ([self openGLContext] == nil) | ||||
| return false; | return false; | ||||
| @@ -85,26 +86,26 @@ | |||||
| - (void) makeInactive | - (void) makeInactive | ||||
| { | { | ||||
| const ScopedLock sl (*contextLock); | |||||
| const juce::ScopedLock sl (*contextLock); | |||||
| [NSOpenGLContext clearCurrentContext]; | [NSOpenGLContext clearCurrentContext]; | ||||
| } | } | ||||
| - (void) _surfaceNeedsUpdate: (NSNotification*) notification | - (void) _surfaceNeedsUpdate: (NSNotification*) notification | ||||
| { | { | ||||
| (void) notification; | (void) notification; | ||||
| const ScopedLock sl (*contextLock); | |||||
| const juce::ScopedLock sl (*contextLock); | |||||
| needsUpdate = true; | needsUpdate = true; | ||||
| } | } | ||||
| - (void) update | - (void) update | ||||
| { | { | ||||
| const ScopedLock sl (*contextLock); | |||||
| const juce::ScopedLock sl (*contextLock); | |||||
| needsUpdate = true; | needsUpdate = true; | ||||
| } | } | ||||
| - (void) reshape | - (void) reshape | ||||
| { | { | ||||
| const ScopedLock sl (*contextLock); | |||||
| const juce::ScopedLock sl (*contextLock); | |||||
| needsUpdate = true; | needsUpdate = true; | ||||
| } | } | ||||
| @@ -117,16 +118,13 @@ namespace juce | |||||
| { | { | ||||
| //============================================================================== | //============================================================================== | ||||
| class WindowedGLContext : public OpenGLContext | |||||
| class OpenGLContext::NativeContext | |||||
| { | { | ||||
| public: | public: | ||||
| WindowedGLContext (OpenGLComponent& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| NSOpenGLContext* sharedContext) | |||||
| : renderContext (nil) | |||||
| NativeContext (Component& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const NativeContext* contextToShareWith) | |||||
| { | { | ||||
| extensions.initialise(); | |||||
| NSOpenGLPixelFormatAttribute attribs[] = | NSOpenGLPixelFormatAttribute attribs[] = | ||||
| { | { | ||||
| NSOpenGLPFADoubleBuffer, | NSOpenGLPFADoubleBuffer, | ||||
| @@ -139,7 +137,8 @@ public: | |||||
| NSOpenGLPFAStencilSize, (NSOpenGLPixelFormatAttribute) pixelFormat.stencilBufferBits, | NSOpenGLPFAStencilSize, (NSOpenGLPixelFormatAttribute) pixelFormat.stencilBufferBits, | ||||
| NSOpenGLPFAAccumSize, (NSOpenGLPixelFormatAttribute) (pixelFormat.accumulationBufferRedBits + pixelFormat.accumulationBufferGreenBits | NSOpenGLPFAAccumSize, (NSOpenGLPixelFormatAttribute) (pixelFormat.accumulationBufferRedBits + pixelFormat.accumulationBufferGreenBits | ||||
| + pixelFormat.accumulationBufferBlueBits + pixelFormat.accumulationBufferAlphaBits), | + pixelFormat.accumulationBufferBlueBits + pixelFormat.accumulationBufferAlphaBits), | ||||
| pixelFormat.multisamplingLevel > 0 ? NSOpenGLPFASamples : (NSOpenGLPixelFormatAttribute) 0, (NSOpenGLPixelFormatAttribute) pixelFormat.multisamplingLevel, | |||||
| pixelFormat.multisamplingLevel > 0 ? NSOpenGLPFASamples : (NSOpenGLPixelFormatAttribute) 0, | |||||
| (NSOpenGLPixelFormatAttribute) pixelFormat.multisamplingLevel, | |||||
| 0 | 0 | ||||
| }; | }; | ||||
| @@ -148,29 +147,35 @@ public: | |||||
| view = [[ThreadSafeNSOpenGLView alloc] initWithFrame: NSMakeRect (0, 0, 100.0f, 100.0f) | view = [[ThreadSafeNSOpenGLView alloc] initWithFrame: NSMakeRect (0, 0, 100.0f, 100.0f) | ||||
| pixelFormat: format]; | pixelFormat: format]; | ||||
| NSOpenGLContext* const sharedContext | |||||
| = contextToShareWith != nullptr ? contextToShareWith->renderContext : nil; | |||||
| renderContext = [[[NSOpenGLContext alloc] initWithFormat: format | renderContext = [[[NSOpenGLContext alloc] initWithFormat: format | ||||
| shareContext: sharedContext] autorelease]; | shareContext: sharedContext] autorelease]; | ||||
| const GLint swapInterval = 1; | |||||
| [renderContext setValues: &swapInterval forParameter: NSOpenGLCPSwapInterval]; | |||||
| setSwapInterval (1); | |||||
| [view setOpenGLContext: renderContext]; | [view setOpenGLContext: renderContext]; | ||||
| [format release]; | [format release]; | ||||
| component.setView (view); | |||||
| viewAttachment = NSViewComponent::attachViewToComponent (component, view); | |||||
| } | } | ||||
| ~WindowedGLContext() | |||||
| ~NativeContext() | |||||
| { | { | ||||
| properties.clear(); // to release any stored programs, etc that may be held in properties. | |||||
| makeInactive(); | |||||
| [renderContext clearDrawable]; | [renderContext clearDrawable]; | ||||
| [renderContext setView: nil]; | [renderContext setView: nil]; | ||||
| [view setOpenGLContext: nil]; | [view setOpenGLContext: nil]; | ||||
| renderContext = nil; | renderContext = nil; | ||||
| } | } | ||||
| void initialiseOnRenderThread() {} | |||||
| void shutdownOnRenderThread() {} | |||||
| bool createdOk() const noexcept { return getRawContext() != nullptr; } | |||||
| void* getRawContext() const noexcept { return static_cast <void*> (renderContext); } | |||||
| GLuint getFrameBufferID() const noexcept { return 0; } | |||||
| bool makeActive() const noexcept | bool makeActive() const noexcept | ||||
| { | { | ||||
| jassert (renderContext != nil); | jassert (renderContext != nil); | ||||
| @@ -179,7 +184,7 @@ public: | |||||
| [renderContext setView: view]; | [renderContext setView: view]; | ||||
| [view makeActive]; | [view makeActive]; | ||||
| return isActive(); | |||||
| return true; | |||||
| } | } | ||||
| bool makeInactive() const noexcept | bool makeInactive() const noexcept | ||||
| @@ -193,20 +198,14 @@ public: | |||||
| return [NSOpenGLContext currentContext] == renderContext; | return [NSOpenGLContext currentContext] == renderContext; | ||||
| } | } | ||||
| void* getRawContext() const noexcept { return renderContext; } | |||||
| unsigned int getFrameBufferID() const { return 0; } | |||||
| int getWidth() const { return [view frame].size.width; } | |||||
| int getHeight() const { return [view frame].size.height; } | |||||
| void updateWindowPosition (const Rectangle<int>&) {} | |||||
| void swapBuffers() | void swapBuffers() | ||||
| { | { | ||||
| [renderContext flushBuffer]; | [renderContext flushBuffer]; | ||||
| } | } | ||||
| bool setSwapInterval (const int numFramesPerSwap) | |||||
| void updateWindowPosition (const Rectangle<int>&) {} | |||||
| bool setSwapInterval (int numFramesPerSwap) | |||||
| { | { | ||||
| [renderContext setValues: (const GLint*) &numFramesPerSwap | [renderContext setValues: (const GLint*) &numFramesPerSwap | ||||
| forParameter: NSOpenGLCPSwapInterval]; | forParameter: NSOpenGLCPSwapInterval]; | ||||
| @@ -218,34 +217,18 @@ public: | |||||
| GLint numFrames = 0; | GLint numFrames = 0; | ||||
| [renderContext getValues: &numFrames | [renderContext getValues: &numFrames | ||||
| forParameter: NSOpenGLCPSwapInterval]; | forParameter: NSOpenGLCPSwapInterval]; | ||||
| return numFrames; | return numFrames; | ||||
| } | } | ||||
| void* getNativeWindowHandle() const { return view; } | |||||
| //============================================================================== | |||||
| private: | |||||
| NSOpenGLContext* renderContext; | NSOpenGLContext* renderContext; | ||||
| ThreadSafeNSOpenGLView* view; | ThreadSafeNSOpenGLView* view; | ||||
| ReferenceCountedObjectPtr<ReferenceCountedObject> viewAttachment; | |||||
| private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WindowedGLContext); | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NativeContext); | |||||
| }; | }; | ||||
| //============================================================================== | |||||
| OpenGLContext* OpenGLComponent::createContext() | |||||
| { | |||||
| ScopedPointer<WindowedGLContext> c (new WindowedGLContext (*this, preferredPixelFormat, | |||||
| contextToShareListsWith != nullptr ? (NSOpenGLContext*) contextToShareListsWith->getRawContext() : nil)); | |||||
| return (c->renderContext != nil) ? c.release() : nullptr; | |||||
| } | |||||
| void* OpenGLComponent::getNativeWindowHandle() const | |||||
| { | |||||
| return context != nullptr ? static_cast<WindowedGLContext*> (context.get())->getNativeWindowHandle() | |||||
| : nullptr; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool OpenGLHelpers::isContextActive() | bool OpenGLHelpers::isContextActive() | ||||
| { | { | ||||
| @@ -23,30 +23,24 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| extern ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent); | |||||
| extern ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component*, void* parent); | |||||
| //============================================================================== | //============================================================================== | ||||
| class WindowedGLContext : public OpenGLContext | |||||
| class OpenGLContext::NativeContext | |||||
| { | { | ||||
| public: | public: | ||||
| WindowedGLContext (Component* const component_, | |||||
| HGLRC contextToShareWith, | |||||
| const OpenGLPixelFormat& pixelFormat) | |||||
| : renderContext (0), | |||||
| component (component_), | |||||
| dc (0) | |||||
| NativeContext (Component& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const NativeContext* contextToShareWith) | |||||
| { | { | ||||
| initialiseGLExtensions(); | |||||
| jassert (component != nullptr); | |||||
| createNativeWindow(); | |||||
| createNativeWindow (component); | |||||
| PIXELFORMATDESCRIPTOR pfd; | PIXELFORMATDESCRIPTOR pfd; | ||||
| initialisePixelFormatDescriptor (pfd, pixelFormat); | initialisePixelFormatDescriptor (pfd, pixelFormat); | ||||
| const int format = ChoosePixelFormat (dc, &pfd); | |||||
| if (format != 0) | |||||
| SetPixelFormat (dc, format, &pfd); | |||||
| const int pixFormat = ChoosePixelFormat (dc, &pfd); | |||||
| if (pixFormat != 0) | |||||
| SetPixelFormat (dc, pixFormat, &pfd); | |||||
| renderContext = wglCreateContext (dc); | renderContext = wglCreateContext (dc); | ||||
| @@ -54,163 +48,94 @@ public: | |||||
| { | { | ||||
| makeActive(); | makeActive(); | ||||
| initialiseGLExtensions(); | initialiseGLExtensions(); | ||||
| extensions.initialise(); | |||||
| setPixelFormat (pixelFormat); | |||||
| if (contextToShareWith != 0) | |||||
| wglShareLists (contextToShareWith, renderContext); | |||||
| } | |||||
| } | |||||
| const int wglFormat = wglChoosePixelFormatExtension (pixelFormat); | |||||
| makeInactive(); | |||||
| ~WindowedGLContext() | |||||
| { | |||||
| properties.clear(); // to release any stored programs, etc that may be held in properties. | |||||
| makeInactive(); | |||||
| if (wglFormat != pixFormat && wglFormat != 0) | |||||
| { | |||||
| // can't change the pixel format of a window, so need to delete the | |||||
| // old one and create a new one.. | |||||
| releaseDC(); | |||||
| nativeWindow = nullptr; | |||||
| createNativeWindow (component); | |||||
| if (SetPixelFormat (dc, wglFormat, &pfd)) | |||||
| { | |||||
| deleteRenderContext(); | |||||
| renderContext = wglCreateContext (dc); | |||||
| } | |||||
| } | |||||
| if (renderContext != 0) | |||||
| { | |||||
| wglDeleteContext (renderContext); | |||||
| renderContext = 0; | |||||
| } | |||||
| if (contextToShareWith != nullptr) | |||||
| wglShareLists (contextToShareWith->renderContext, renderContext); | |||||
| ReleaseDC ((HWND) nativeWindow->getNativeHandle(), dc); | |||||
| nativeWindow = nullptr; | |||||
| component.getTopLevelComponent()->repaint(); | |||||
| component.repaint(); | |||||
| } | |||||
| } | } | ||||
| bool makeActive() const noexcept | |||||
| ~NativeContext() | |||||
| { | { | ||||
| jassert (renderContext != 0); | |||||
| return wglMakeCurrent (dc, renderContext) != 0; | |||||
| deleteRenderContext(); | |||||
| releaseDC(); | |||||
| } | } | ||||
| bool makeInactive() const noexcept | |||||
| void initialiseOnRenderThread() | |||||
| { | { | ||||
| return (! isActive()) || (wglMakeCurrent (0, 0) != 0); | |||||
| } | } | ||||
| bool isActive() const noexcept | |||||
| void shutdownOnRenderThread() | |||||
| { | { | ||||
| return wglGetCurrentContext() == renderContext; | |||||
| } | } | ||||
| void* getRawContext() const noexcept { return renderContext; } | |||||
| unsigned int getFrameBufferID() const { return 0; } | |||||
| int getWidth() const { return component->getWidth(); } | |||||
| int getHeight() const { return component->getHeight(); } | |||||
| void updateWindowPosition (const Rectangle<int>& bounds) | |||||
| bool makeActive() const noexcept | |||||
| { | { | ||||
| if (nativeWindow != nullptr) | |||||
| SetWindowPos ((HWND) nativeWindow->getNativeHandle(), 0, | |||||
| bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight(), | |||||
| SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOOWNERZORDER); | |||||
| return wglMakeCurrent (dc, renderContext) != FALSE; | |||||
| } | } | ||||
| bool setPixelFormat (const OpenGLPixelFormat& pixelFormat) | |||||
| bool makeInactive() const noexcept | |||||
| { | { | ||||
| makeActive(); | |||||
| PIXELFORMATDESCRIPTOR pfd; | |||||
| initialisePixelFormatDescriptor (pfd, pixelFormat); | |||||
| int format = 0; | |||||
| if (wglChoosePixelFormatARB != nullptr) | |||||
| { | |||||
| int atts[64]; | |||||
| int n = 0; | |||||
| atts[n++] = WGL_DRAW_TO_WINDOW_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_SUPPORT_OPENGL_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_DOUBLE_BUFFER_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_PIXEL_TYPE_ARB; atts[n++] = WGL_TYPE_RGBA_ARB; | |||||
| atts[n++] = WGL_COLOR_BITS_ARB; atts[n++] = pfd.cColorBits; | |||||
| atts[n++] = WGL_RED_BITS_ARB; atts[n++] = pixelFormat.redBits; | |||||
| atts[n++] = WGL_GREEN_BITS_ARB; atts[n++] = pixelFormat.greenBits; | |||||
| atts[n++] = WGL_BLUE_BITS_ARB; atts[n++] = pixelFormat.blueBits; | |||||
| atts[n++] = WGL_ALPHA_BITS_ARB; atts[n++] = pixelFormat.alphaBits; | |||||
| atts[n++] = WGL_DEPTH_BITS_ARB; atts[n++] = pixelFormat.depthBufferBits; | |||||
| atts[n++] = WGL_STENCIL_BITS_ARB; atts[n++] = pixelFormat.stencilBufferBits; | |||||
| atts[n++] = WGL_ACCUM_RED_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferRedBits; | |||||
| atts[n++] = WGL_ACCUM_GREEN_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferGreenBits; | |||||
| atts[n++] = WGL_ACCUM_BLUE_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferBlueBits; | |||||
| atts[n++] = WGL_ACCUM_ALPHA_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferAlphaBits; | |||||
| if (pixelFormat.multisamplingLevel > 0 | |||||
| && OpenGLHelpers::isExtensionSupported ("GL_ARB_multisample")) | |||||
| { | |||||
| atts[n++] = WGL_SAMPLE_BUFFERS_ARB; | |||||
| atts[n++] = 1; | |||||
| atts[n++] = WGL_SAMPLES_ARB; | |||||
| atts[n++] = pixelFormat.multisamplingLevel; | |||||
| } | |||||
| atts[n++] = 0; | |||||
| jassert (n <= numElementsInArray (atts)); | |||||
| UINT formatsCount = 0; | |||||
| wglChoosePixelFormatARB (dc, atts, nullptr, 1, &format, &formatsCount); | |||||
| } | |||||
| if (format == 0) | |||||
| format = ChoosePixelFormat (dc, &pfd); | |||||
| if (format != 0) | |||||
| { | |||||
| makeInactive(); | |||||
| // win32 can't change the pixel format of a window, so need to delete the | |||||
| // old one and create a new one.. | |||||
| jassert (nativeWindow != 0); | |||||
| ReleaseDC ((HWND) nativeWindow->getNativeHandle(), dc); | |||||
| nativeWindow = nullptr; | |||||
| createNativeWindow(); | |||||
| if (SetPixelFormat (dc, format, &pfd)) | |||||
| { | |||||
| wglDeleteContext (renderContext); | |||||
| renderContext = wglCreateContext (dc); | |||||
| jassert (renderContext != 0); | |||||
| return renderContext != 0; | |||||
| } | |||||
| } | |||||
| return (! isActive()) || (wglMakeCurrent (0, 0) != FALSE); | |||||
| } | |||||
| return false; | |||||
| bool isActive() const noexcept | |||||
| { | |||||
| return wglGetCurrentContext() == renderContext; | |||||
| } | } | ||||
| void swapBuffers() | |||||
| void swapBuffers() const noexcept | |||||
| { | { | ||||
| SwapBuffers (dc); | SwapBuffers (dc); | ||||
| } | } | ||||
| bool setSwapInterval (int numFramesPerSwap) | bool setSwapInterval (int numFramesPerSwap) | ||||
| { | { | ||||
| makeActive(); | |||||
| jassert (isActive()); // this can only be called when the context is active.. | |||||
| return wglSwapIntervalEXT != nullptr && wglSwapIntervalEXT (numFramesPerSwap) != FALSE; | return wglSwapIntervalEXT != nullptr && wglSwapIntervalEXT (numFramesPerSwap) != FALSE; | ||||
| } | } | ||||
| int getSwapInterval() const | int getSwapInterval() const | ||||
| { | { | ||||
| makeActive(); | |||||
| jassert (isActive()); // this can only be called when the context is active.. | |||||
| return wglGetSwapIntervalEXT != nullptr ? wglGetSwapIntervalEXT() : 0; | return wglGetSwapIntervalEXT != nullptr ? wglGetSwapIntervalEXT() : 0; | ||||
| } | } | ||||
| void* getNativeWindowHandle() const | |||||
| void updateWindowPosition (const Rectangle<int>& bounds) | |||||
| { | { | ||||
| return nativeWindow != nullptr ? nativeWindow->getNativeHandle() : nullptr; | |||||
| if (nativeWindow != nullptr) | |||||
| SetWindowPos ((HWND) nativeWindow->getNativeHandle(), 0, | |||||
| bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight(), | |||||
| SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOOWNERZORDER); | |||||
| } | } | ||||
| //============================================================================== | |||||
| HGLRC renderContext; | |||||
| ScopedPointer<ComponentPeer> nativeWindow; | |||||
| bool createdOk() const noexcept { return getRawContext() != nullptr; } | |||||
| void* getRawContext() const noexcept { return renderContext; } | |||||
| unsigned int getFrameBufferID() const noexcept { return 0; } | |||||
| private: | private: | ||||
| Component* const component; | |||||
| ScopedPointer<ComponentPeer> nativeWindow; | |||||
| HGLRC renderContext; | |||||
| HDC dc; | HDC dc; | ||||
| #define JUCE_DECLARE_WGL_EXTENSION_FUNCTION(name, returnType, params) \ | #define JUCE_DECLARE_WGL_EXTENSION_FUNCTION(name, returnType, params) \ | ||||
| @@ -230,15 +155,27 @@ private: | |||||
| #undef JUCE_INIT_WGL_FUNCTION | #undef JUCE_INIT_WGL_FUNCTION | ||||
| } | } | ||||
| //============================================================================== | |||||
| void createNativeWindow() | |||||
| void createNativeWindow (Component& component) | |||||
| { | { | ||||
| nativeWindow = createNonRepaintingEmbeddedWindowsPeer (component, component->getTopLevelComponent()->getWindowHandle()); | |||||
| Component* topComp = component.getTopLevelComponent(); | |||||
| nativeWindow = createNonRepaintingEmbeddedWindowsPeer (&component, topComp->getWindowHandle()); | |||||
| updateWindowPosition (topComp->getLocalArea (&component, component.getLocalBounds())); | |||||
| nativeWindow->setVisible (true); | nativeWindow->setVisible (true); | ||||
| dc = GetDC ((HWND) nativeWindow->getNativeHandle()); | dc = GetDC ((HWND) nativeWindow->getNativeHandle()); | ||||
| } | |||||
| component->getTopLevelComponent()->repaint(); | |||||
| void deleteRenderContext() | |||||
| { | |||||
| if (renderContext != 0) | |||||
| { | |||||
| wglDeleteContext (renderContext); | |||||
| renderContext = 0; | |||||
| } | |||||
| } | |||||
| void releaseDC() | |||||
| { | |||||
| ReleaseDC ((HWND) nativeWindow->getNativeHandle(), dc); | |||||
| } | } | ||||
| static void initialisePixelFormatDescriptor (PIXELFORMATDESCRIPTOR& pfd, const OpenGLPixelFormat& pixelFormat) | static void initialisePixelFormatDescriptor (PIXELFORMATDESCRIPTOR& pfd, const OpenGLPixelFormat& pixelFormat) | ||||
| @@ -264,23 +201,55 @@ private: | |||||
| pfd.cAccumAlphaBits = (BYTE) pixelFormat.accumulationBufferAlphaBits; | pfd.cAccumAlphaBits = (BYTE) pixelFormat.accumulationBufferAlphaBits; | ||||
| } | } | ||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WindowedGLContext); | |||||
| }; | |||||
| int wglChoosePixelFormatExtension (const OpenGLPixelFormat& pixelFormat) const | |||||
| { | |||||
| int format = 0; | |||||
| //============================================================================== | |||||
| OpenGLContext* OpenGLComponent::createContext() | |||||
| { | |||||
| ScopedPointer<WindowedGLContext> c (new WindowedGLContext (this, | |||||
| contextToShareListsWith != nullptr ? (HGLRC) contextToShareListsWith->getRawContext() : 0, | |||||
| preferredPixelFormat)); | |||||
| if (wglChoosePixelFormatARB != nullptr) | |||||
| { | |||||
| int atts[64]; | |||||
| int n = 0; | |||||
| return (c->renderContext != 0) ? c.release() : nullptr; | |||||
| } | |||||
| atts[n++] = WGL_DRAW_TO_WINDOW_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_SUPPORT_OPENGL_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_DOUBLE_BUFFER_ARB; atts[n++] = GL_TRUE; | |||||
| atts[n++] = WGL_PIXEL_TYPE_ARB; atts[n++] = WGL_TYPE_RGBA_ARB; | |||||
| atts[n++] = WGL_COLOR_BITS_ARB; atts[n++] = pixelFormat.redBits + pixelFormat.greenBits + pixelFormat.blueBits; | |||||
| atts[n++] = WGL_RED_BITS_ARB; atts[n++] = pixelFormat.redBits; | |||||
| atts[n++] = WGL_GREEN_BITS_ARB; atts[n++] = pixelFormat.greenBits; | |||||
| atts[n++] = WGL_BLUE_BITS_ARB; atts[n++] = pixelFormat.blueBits; | |||||
| atts[n++] = WGL_ALPHA_BITS_ARB; atts[n++] = pixelFormat.alphaBits; | |||||
| atts[n++] = WGL_DEPTH_BITS_ARB; atts[n++] = pixelFormat.depthBufferBits; | |||||
| atts[n++] = WGL_STENCIL_BITS_ARB; atts[n++] = pixelFormat.stencilBufferBits; | |||||
| atts[n++] = WGL_ACCUM_RED_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferRedBits; | |||||
| atts[n++] = WGL_ACCUM_GREEN_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferGreenBits; | |||||
| atts[n++] = WGL_ACCUM_BLUE_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferBlueBits; | |||||
| atts[n++] = WGL_ACCUM_ALPHA_BITS_ARB; atts[n++] = pixelFormat.accumulationBufferAlphaBits; | |||||
| if (pixelFormat.multisamplingLevel > 0 | |||||
| && OpenGLHelpers::isExtensionSupported ("GL_ARB_multisample")) | |||||
| { | |||||
| atts[n++] = WGL_SAMPLE_BUFFERS_ARB; | |||||
| atts[n++] = 1; | |||||
| atts[n++] = WGL_SAMPLES_ARB; | |||||
| atts[n++] = pixelFormat.multisamplingLevel; | |||||
| } | |||||
| atts[n++] = 0; | |||||
| jassert (n <= numElementsInArray (atts)); | |||||
| UINT formatsCount = 0; | |||||
| wglChoosePixelFormatARB (dc, atts, nullptr, 1, &format, &formatsCount); | |||||
| } | |||||
| return format; | |||||
| } | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NativeContext); | |||||
| }; | |||||
| void* OpenGLComponent::getNativeWindowHandle() const | |||||
| { | |||||
| return context != nullptr ? static_cast<WindowedGLContext*> (context.get())->getNativeWindowHandle() : nullptr; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool OpenGLHelpers::isContextActive() | bool OpenGLHelpers::isContextActive() | ||||
| @@ -1,234 +0,0 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| #define JNI_CLASS_MEMBERS(METHOD, STATICMETHOD, FIELD, STATICFIELD) \ | |||||
| METHOD (layout, "layout", "(IIII)V") \ | |||||
| METHOD (requestRender, "requestRender", "()V") \ | |||||
| DECLARE_JNI_CLASS (OpenGLView, JUCE_ANDROID_ACTIVITY_CLASSPATH "$OpenGLView"); | |||||
| #undef JNI_CLASS_MEMBERS | |||||
| jobject createOpenGLView (ComponentPeer*); | |||||
| //============================================================================== | |||||
| class AndroidGLContext : public OpenGLContext | |||||
| { | |||||
| public: | |||||
| AndroidGLContext (OpenGLComponent* const component_, | |||||
| ComponentPeer* peer, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const AndroidGLContext* const sharedContext, | |||||
| const bool isGLES2_) | |||||
| : component (component_), | |||||
| lastWidth (0), lastHeight (0), | |||||
| isGLES2 (isGLES2_), | |||||
| isInsideGLCallback (false) | |||||
| { | |||||
| jassert (peer != nullptr); | |||||
| glView = GlobalRef (createOpenGLView (peer)); | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| getContextList().add (this); | |||||
| } | |||||
| ~AndroidGLContext() | |||||
| { | |||||
| properties.clear(); // to release any stored programs, etc that may be held in properties. | |||||
| android.activity.callVoidMethod (JuceAppActivity.deleteView, glView.get()); | |||||
| glView.clear(); | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| getContextList().removeValue (this); | |||||
| } | |||||
| //============================================================================== | |||||
| bool makeActive() const noexcept { return isInsideGLCallback; } | |||||
| bool makeInactive() const noexcept { return true; } | |||||
| bool isActive() const noexcept { return isInsideGLCallback; } | |||||
| void swapBuffers() {} | |||||
| void* getRawContext() const noexcept { return glView.get(); } | |||||
| unsigned int getFrameBufferID() const { return 0; } | |||||
| int getWidth() const { return lastWidth; } | |||||
| int getHeight() const { return lastHeight; } | |||||
| bool areShadersAvailable() const { return isGLES2; } | |||||
| void updateWindowPosition (const Rectangle<int>& bounds) | |||||
| { | |||||
| if (lastWidth != bounds.getWidth() || lastHeight != bounds.getHeight()) | |||||
| { | |||||
| lastWidth = bounds.getWidth(); | |||||
| lastHeight = bounds.getHeight(); | |||||
| glView.callVoidMethod (OpenGLView.layout, | |||||
| bounds.getX(), bounds.getY(), | |||||
| bounds.getRight(), bounds.getBottom()); | |||||
| } | |||||
| } | |||||
| bool setSwapInterval (const int /*numFramesPerSwap*/) { return false; } | |||||
| int getSwapInterval() const { return 0; } | |||||
| //============================================================================== | |||||
| void contextCreatedCallback() | |||||
| { | |||||
| properties.clear(); | |||||
| isInsideGLCallback = true; | |||||
| if (component != nullptr) | |||||
| dynamic_cast <OpenGLComponent*> (component.get())->newOpenGLContextCreated(); | |||||
| isInsideGLCallback = false; | |||||
| } | |||||
| void renderCallback() | |||||
| { | |||||
| isInsideGLCallback = true; | |||||
| if (component != nullptr) | |||||
| dynamic_cast <OpenGLComponent*> (component.get())->performRender(); | |||||
| isInsideGLCallback = false; | |||||
| } | |||||
| //============================================================================== | |||||
| static CriticalSection& getContextListLock() | |||||
| { | |||||
| static CriticalSection lock; | |||||
| return lock; | |||||
| } | |||||
| static Array<AndroidGLContext*>& getContextList() | |||||
| { | |||||
| static Array <AndroidGLContext*> contexts; | |||||
| return contexts; | |||||
| } | |||||
| static AndroidGLContext* findContextFor (JNIEnv* env, jobject glView) | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| const Array<AndroidGLContext*>& contexts = getContextList(); | |||||
| for (int i = contexts.size(); --i >= 0;) | |||||
| { | |||||
| AndroidGLContext* const c = contexts.getUnchecked(i); | |||||
| if (env->IsSameObject (c->glView.get(), glView)) | |||||
| return c; | |||||
| } | |||||
| return nullptr; | |||||
| } | |||||
| static bool isAnyContextActive() | |||||
| { | |||||
| const ScopedLock sl (getContextListLock()); | |||||
| const Array<AndroidGLContext*>& contexts = getContextList(); | |||||
| for (int i = contexts.size(); --i >= 0;) | |||||
| { | |||||
| const AndroidGLContext* const c = contexts.getUnchecked(i); | |||||
| if (c->isInsideGLCallback) | |||||
| return true; | |||||
| } | |||||
| return false; | |||||
| } | |||||
| //============================================================================== | |||||
| GlobalRef glView; | |||||
| private: | |||||
| WeakReference<Component> component; | |||||
| int lastWidth, lastHeight; | |||||
| bool isGLES2; | |||||
| bool isInsideGLCallback; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidGLContext); | |||||
| }; | |||||
| //============================================================================== | |||||
| OpenGLContext* OpenGLComponent::createContext() | |||||
| { | |||||
| ComponentPeer* peer = getTopLevelComponent()->getPeer(); | |||||
| if (peer != nullptr) | |||||
| return new AndroidGLContext (this, peer, preferredPixelFormat, | |||||
| dynamic_cast <const AndroidGLContext*> (contextToShareListsWith), | |||||
| (flags & openGLES1) == 0); | |||||
| return nullptr; | |||||
| } | |||||
| bool OpenGLHelpers::isContextActive() | |||||
| { | |||||
| return AndroidGLContext::isAnyContextActive(); | |||||
| } | |||||
| void triggerAndroidOpenGLRepaint (OpenGLContext* context) | |||||
| { | |||||
| AndroidGLContext* c = dynamic_cast <AndroidGLContext*> (context); | |||||
| if (c != nullptr) | |||||
| c->glView.callVoidMethod (OpenGLView.requestRender); | |||||
| } | |||||
| //============================================================================== | |||||
| JUCE_JNI_CALLBACK (JUCE_JOIN_MACRO (JUCE_ANDROID_ACTIVITY_CLASSNAME, _00024OpenGLView), contextCreated, void, (JNIEnv* env, jobject view)) | |||||
| { | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| for (int i = 100; --i >= 0;) | |||||
| { | |||||
| AndroidGLContext* const context = AndroidGLContext::findContextFor (env, view); | |||||
| if (context != nullptr) | |||||
| { | |||||
| context->contextCreatedCallback(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| return; | |||||
| } | |||||
| Thread::sleep (20); | |||||
| } | |||||
| jassertfalse; | |||||
| } | |||||
| JUCE_JNI_CALLBACK (JUCE_JOIN_MACRO (JUCE_ANDROID_ACTIVITY_CLASSNAME, _00024OpenGLView), render, void, (JNIEnv* env, jobject view)) | |||||
| { | |||||
| AndroidGLContext* const context = AndroidGLContext::findContextFor (env, view); | |||||
| if (context != nullptr) | |||||
| context->renderCallback(); | |||||
| } | |||||
| @@ -1,535 +0,0 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| #if JUCE_ANDROID | |||||
| void triggerAndroidOpenGLRepaint (OpenGLContext*); | |||||
| #endif | |||||
| class OpenGLComponent::OpenGLCachedComponentImage : public CachedComponentImage, | |||||
| public Thread, | |||||
| public Timer // N.B. using a Timer rather than an AsyncUpdater | |||||
| // to avoid scheduling problems on Windows | |||||
| { | |||||
| public: | |||||
| OpenGLCachedComponentImage (OpenGLComponent& owner_, bool renderComponents_) | |||||
| : Thread ("OpenGL Rendering"), | |||||
| owner (owner_), needToRepaint (true), | |||||
| renderComponents (renderComponents_) | |||||
| {} | |||||
| void paint (Graphics&) | |||||
| { | |||||
| ComponentPeer* const peer = owner.getPeer(); | |||||
| if (peer != nullptr) | |||||
| peer->addMaskedRegion (owner.getScreenBounds() - peer->getScreenPosition()); | |||||
| if (owner.isUsingDedicatedThread()) | |||||
| { | |||||
| if (peer != nullptr && owner.isShowing()) | |||||
| { | |||||
| #if ! JUCE_LINUX | |||||
| owner.updateContext(); | |||||
| #endif | |||||
| owner.startRenderThread(); | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| owner.updateContext(); | |||||
| #if JUCE_ANDROID | |||||
| triggerAndroidOpenGLRepaint (owner.getCurrentContext()); | |||||
| #else | |||||
| if (isTimerRunning()) | |||||
| timerCallback(); | |||||
| #endif | |||||
| } | |||||
| } | |||||
| void invalidateAll() | |||||
| { | |||||
| validArea.clear(); | |||||
| triggerRepaint(); | |||||
| } | |||||
| void invalidate (const Rectangle<int>& area) | |||||
| { | |||||
| validArea.subtract (area); | |||||
| triggerRepaint(); | |||||
| } | |||||
| void releaseResources() | |||||
| { | |||||
| owner.makeCurrentRenderingTarget(); | |||||
| cachedImageFrameBuffer.release(); | |||||
| owner.releaseAsRenderingTarget(); | |||||
| } | |||||
| //============================================================================== | |||||
| void timerCallback() | |||||
| { | |||||
| stopTimer(); | |||||
| renderFrame(); | |||||
| owner.releaseAsRenderingTarget(); | |||||
| } | |||||
| void triggerRepaint() | |||||
| { | |||||
| needToRepaint = true; | |||||
| #if JUCE_ANDROID | |||||
| triggerAndroidOpenGLRepaint (owner.getCurrentContext()); | |||||
| #else | |||||
| if (! owner.isUsingDedicatedThread()) | |||||
| startTimer (1000 / 70); | |||||
| #endif | |||||
| } | |||||
| void updateContextPosition() | |||||
| { | |||||
| if (owner.getWidth() > 0 && owner.getHeight() > 0) | |||||
| { | |||||
| Component* const topComp = owner.getTopLevelComponent(); | |||||
| if (topComp->getPeer() != nullptr) | |||||
| { | |||||
| const Rectangle<int> bounds (topComp->getLocalArea (&owner, owner.getLocalBounds())); | |||||
| const ScopedLock sl (owner.contextLock); | |||||
| if (owner.context != nullptr) | |||||
| owner.context->updateWindowPosition (bounds); | |||||
| } | |||||
| } | |||||
| } | |||||
| //============================================================================== | |||||
| void ensureFrameBufferSize (int width, int height) | |||||
| { | |||||
| const int fbW = cachedImageFrameBuffer.getWidth(); | |||||
| const int fbH = cachedImageFrameBuffer.getHeight(); | |||||
| if (fbW != width || fbH != height || ! cachedImageFrameBuffer.isValid()) | |||||
| { | |||||
| jassert (owner.getCurrentContext() != nullptr); | |||||
| cachedImageFrameBuffer.initialise (*owner.getCurrentContext(), width, height); | |||||
| validArea.clear(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| } | |||||
| void clearRegionInFrameBuffer (const RectangleList& list) | |||||
| { | |||||
| glClearColor (0, 0, 0, 0); | |||||
| glEnable (GL_SCISSOR_TEST); | |||||
| const GLuint previousFrameBufferTarget = OpenGLFrameBuffer::getCurrentFrameBufferTarget(); | |||||
| cachedImageFrameBuffer.makeCurrentRenderingTarget(); | |||||
| for (RectangleList::Iterator i (list); i.next();) | |||||
| { | |||||
| const Rectangle<int>& r = *i.getRectangle(); | |||||
| glScissor (r.getX(), owner.getHeight() - r.getBottom(), r.getWidth(), r.getHeight()); | |||||
| glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | |||||
| } | |||||
| glDisable (GL_SCISSOR_TEST); | |||||
| owner.getCurrentContext()->extensions.glBindFramebuffer (GL_FRAMEBUFFER, previousFrameBufferTarget); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| bool renderFrame() | |||||
| { | |||||
| const ScopedLock sl (owner.contextLock); | |||||
| #if JUCE_LINUX | |||||
| owner.updateContext(); | |||||
| #endif | |||||
| OpenGLContext* const context = owner.getCurrentContext(); | |||||
| if (context != nullptr) | |||||
| { | |||||
| if (! context->makeActive()) | |||||
| return false; | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| glViewport (0, 0, owner.getWidth(), owner.getHeight()); | |||||
| owner.renderOpenGL(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| if (renderComponents) | |||||
| paintComponent (context); | |||||
| context->swapBuffers(); | |||||
| } | |||||
| return true; | |||||
| } | |||||
| void paintComponent (OpenGLContext* const context) | |||||
| { | |||||
| jassert (context != nullptr); | |||||
| owner.contextLock.exit(); // (MM must be locked before the context lock) | |||||
| MessageManagerLock mmLock (this); | |||||
| owner.contextLock.enter(); | |||||
| if (! mmLock.lockWasGained()) | |||||
| return; | |||||
| // you mustn't set your own cached image object for an OpenGLComponent! | |||||
| jassert (dynamic_cast<OpenGLCachedComponentImage*> (owner.getCachedComponentImage()) == this); | |||||
| const Rectangle<int> bounds (owner.getLocalBounds()); | |||||
| ensureFrameBufferSize (bounds.getWidth(), bounds.getHeight()); | |||||
| if (needToRepaint) | |||||
| { | |||||
| needToRepaint = false; | |||||
| RectangleList invalid (bounds); | |||||
| invalid.subtract (validArea); | |||||
| validArea = bounds; | |||||
| if (! invalid.isEmpty()) | |||||
| { | |||||
| clearRegionInFrameBuffer (invalid); | |||||
| { | |||||
| ScopedPointer<LowLevelGraphicsContext> g (createOpenGLGraphicsContext (*context, cachedImageFrameBuffer)); | |||||
| g->clipToRectangleList (invalid); | |||||
| paintOwner (*g); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| context->makeActive(); | |||||
| } | |||||
| } | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| #if ! JUCE_ANDROID | |||||
| glEnable (GL_TEXTURE_2D); | |||||
| #endif | |||||
| context->extensions.glActiveTexture (GL_TEXTURE0); | |||||
| glBindTexture (GL_TEXTURE_2D, cachedImageFrameBuffer.getTextureID()); | |||||
| jassert (bounds.getPosition() == Point<int>()); | |||||
| context->copyTexture (bounds, bounds, context->getWidth(), context->getHeight()); | |||||
| glBindTexture (GL_TEXTURE_2D, 0); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| void paintOwner (LowLevelGraphicsContext& context) | |||||
| { | |||||
| Graphics g (&context); | |||||
| #if JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| g.saveState(); | |||||
| #endif | |||||
| JUCE_TRY | |||||
| { | |||||
| owner.paintEntireComponent (g, false); | |||||
| } | |||||
| JUCE_CATCH_EXCEPTION | |||||
| #if JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| // enabling this code will fill all areas that get repainted with a colour overlay, to show | |||||
| // clearly when things are being repainted. | |||||
| g.restoreState(); | |||||
| static Random rng; | |||||
| g.fillAll (Colour ((uint8) rng.nextInt (255), | |||||
| (uint8) rng.nextInt (255), | |||||
| (uint8) rng.nextInt (255), | |||||
| (uint8) 0x50)); | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | |||||
| void run() | |||||
| { | |||||
| initialise(); | |||||
| while (! threadShouldExit()) | |||||
| { | |||||
| const uint32 frameRenderStartTime = Time::getMillisecondCounter(); | |||||
| if (renderFrame()) | |||||
| waitForNextFrame (frameRenderStartTime); | |||||
| } | |||||
| shutdown(); | |||||
| } | |||||
| void initialise() | |||||
| { | |||||
| #if JUCE_LINUX | |||||
| MessageManagerLock mml (this); | |||||
| if (mml.lockWasGained()) | |||||
| { | |||||
| owner.updateContext(); | |||||
| updateContextPosition(); | |||||
| } | |||||
| #endif | |||||
| } | |||||
| void shutdown() | |||||
| { | |||||
| #if JUCE_LINUX | |||||
| owner.deleteContext(); | |||||
| #endif | |||||
| } | |||||
| void waitForNextFrame (const uint32 frameRenderStartTime) | |||||
| { | |||||
| const int defaultFPS = 60; | |||||
| const int elapsed = (int) (Time::getMillisecondCounter() - frameRenderStartTime); | |||||
| Thread::sleep (jmax (1, (1000 / defaultFPS) - elapsed)); | |||||
| } | |||||
| //============================================================================== | |||||
| RectangleList validArea; | |||||
| OpenGLComponent& owner; | |||||
| OpenGLFrameBuffer cachedImageFrameBuffer; | |||||
| bool needToRepaint; | |||||
| const bool renderComponents; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLCachedComponentImage); | |||||
| }; | |||||
| //============================================================================== | |||||
| class OpenGLComponent::OpenGLComponentWatcher : public ComponentMovementWatcher | |||||
| { | |||||
| public: | |||||
| OpenGLComponentWatcher (OpenGLComponent& owner_) | |||||
| : ComponentMovementWatcher (&owner_), owner (owner_) | |||||
| { | |||||
| } | |||||
| void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) | |||||
| { | |||||
| if (owner.cachedImage != nullptr) | |||||
| owner.cachedImage->updateContextPosition(); | |||||
| } | |||||
| void componentPeerChanged() | |||||
| { | |||||
| owner.recreateContextAsync(); | |||||
| } | |||||
| void componentVisibilityChanged() | |||||
| { | |||||
| if (owner.isShowing()) | |||||
| owner.triggerRepaint(); | |||||
| else | |||||
| owner.stopRenderThread(); | |||||
| } | |||||
| private: | |||||
| OpenGLComponent& owner; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLComponentWatcher); | |||||
| }; | |||||
| //============================================================================== | |||||
| OpenGLComponent::OpenGLComponent (const int flags_) | |||||
| #if JUCE_ANDROID | |||||
| : flags (flags_ & ~useBackgroundThread), | |||||
| #else | |||||
| : flags (flags_), | |||||
| #endif | |||||
| contextToShareListsWith (nullptr), | |||||
| needToDeleteContext (false), | |||||
| cachedImage (nullptr) | |||||
| { | |||||
| setOpaque (true); | |||||
| triggerRepaint(); | |||||
| componentWatcher = new OpenGLComponentWatcher (*this); | |||||
| } | |||||
| OpenGLComponent::~OpenGLComponent() | |||||
| { | |||||
| if (isUsingDedicatedThread()) | |||||
| { | |||||
| /* If you're using a background thread, then your sub-class MUST call | |||||
| stopRenderThread() in its destructor! Otherwise, the thread could still | |||||
| be running while your sub-class isbeing destroyed, and so may make a call | |||||
| to your subclass's renderOpenGL() method when it no longer exists! | |||||
| */ | |||||
| jassert (! getGLCachedImage()->isThreadRunning()); | |||||
| stopRenderThread(); | |||||
| } | |||||
| else | |||||
| { | |||||
| deleteContext(); | |||||
| } | |||||
| componentWatcher = nullptr; | |||||
| } | |||||
| void OpenGLComponent::setPixelFormat (const OpenGLPixelFormat& formatToUse) | |||||
| { | |||||
| if (! (preferredPixelFormat == formatToUse)) | |||||
| { | |||||
| const ScopedLock sl (contextLock); | |||||
| preferredPixelFormat = formatToUse; | |||||
| recreateContextAsync(); | |||||
| } | |||||
| } | |||||
| void OpenGLComponent::shareWith (OpenGLContext* c) | |||||
| { | |||||
| if (contextToShareListsWith != c) | |||||
| { | |||||
| const ScopedLock sl (contextLock); | |||||
| contextToShareListsWith = c; | |||||
| recreateContextAsync(); | |||||
| } | |||||
| } | |||||
| void OpenGLComponent::startRenderThread() | |||||
| { | |||||
| getGLCachedImage()->startThread (6); | |||||
| } | |||||
| void OpenGLComponent::stopRenderThread() | |||||
| { | |||||
| getGLCachedImage()->stopThread (5000); | |||||
| #if ! JUCE_LINUX | |||||
| deleteContext(); | |||||
| #endif | |||||
| } | |||||
| void OpenGLComponent::recreateContextAsync() | |||||
| { | |||||
| const ScopedLock sl (contextLock); | |||||
| needToDeleteContext = true; | |||||
| repaint(); | |||||
| } | |||||
| bool OpenGLComponent::makeCurrentRenderingTarget() | |||||
| { | |||||
| return context != nullptr && context->makeActive(); | |||||
| } | |||||
| void OpenGLComponent::releaseAsRenderingTarget() | |||||
| { | |||||
| if (context != nullptr) | |||||
| context->makeInactive(); | |||||
| } | |||||
| void OpenGLComponent::swapBuffers() | |||||
| { | |||||
| if (context != nullptr) | |||||
| context->swapBuffers(); | |||||
| } | |||||
| void OpenGLComponent::updateContext() | |||||
| { | |||||
| if (needToDeleteContext) | |||||
| deleteContext(); | |||||
| if (context == nullptr) | |||||
| { | |||||
| const ScopedLock sl (contextLock); | |||||
| if (context == nullptr) | |||||
| { | |||||
| context = createContext(); | |||||
| if (context != nullptr) | |||||
| { | |||||
| #if JUCE_LINUX | |||||
| if (! isUsingDedicatedThread()) | |||||
| #endif | |||||
| getGLCachedImage()->updateContextPosition(); | |||||
| if (context->makeActive()) | |||||
| { | |||||
| newOpenGLContextCreated(); | |||||
| context->makeInactive(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| void OpenGLComponent::deleteContext() | |||||
| { | |||||
| const ScopedLock sl (contextLock); | |||||
| if (context != nullptr) | |||||
| { | |||||
| if (context->makeActive()) | |||||
| { | |||||
| cachedImage = nullptr; | |||||
| setCachedComponentImage (nullptr); | |||||
| releaseOpenGLContext(); | |||||
| context->makeInactive(); | |||||
| } | |||||
| context = nullptr; | |||||
| } | |||||
| needToDeleteContext = false; | |||||
| } | |||||
| bool OpenGLComponent::rebuildContext() | |||||
| { | |||||
| needToDeleteContext = true; | |||||
| updateContext(); | |||||
| return context != nullptr && context->makeActive(); | |||||
| } | |||||
| OpenGLComponent::OpenGLCachedComponentImage* OpenGLComponent::getGLCachedImage() | |||||
| { | |||||
| // you mustn't set your own cached image object for an OpenGLComponent! | |||||
| jassert (cachedImage == nullptr | |||||
| || dynamic_cast<OpenGLCachedComponentImage*> (getCachedComponentImage()) == cachedImage); | |||||
| if (cachedImage == nullptr) | |||||
| setCachedComponentImage (cachedImage = new OpenGLCachedComponentImage (*this, (flags & allowSubComponents) != 0)); | |||||
| return cachedImage; | |||||
| } | |||||
| void OpenGLComponent::triggerRepaint() | |||||
| { | |||||
| getGLCachedImage()->triggerRepaint(); | |||||
| } | |||||
| void OpenGLComponent::newOpenGLContextCreated() {} | |||||
| void OpenGLComponent::releaseOpenGLContext() {} | |||||
| void OpenGLComponent::paint (Graphics&) {} | |||||
| @@ -1,281 +0,0 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| #ifndef __JUCE_OPENGLCOMPONENT_JUCEHEADER__ | |||||
| #define __JUCE_OPENGLCOMPONENT_JUCEHEADER__ | |||||
| #include "juce_OpenGLContext.h" | |||||
| #if JUCE_MAC && ! defined (DOXYGEN) | |||||
| typedef NSViewComponent OpenGLBaseType; | |||||
| #else | |||||
| typedef Component OpenGLBaseType; | |||||
| #endif | |||||
| class OpenGLGraphicsContext; | |||||
| #if JUCE_ANDROID | |||||
| class AndroidGLContext; | |||||
| #endif | |||||
| //============================================================================== | |||||
| /** | |||||
| A component that contains an OpenGL canvas. | |||||
| Override this, add it to whatever component you want to, and use the renderOpenGL() | |||||
| method to draw its contents. | |||||
| Important note! When using a GL component with a background thread, your sub-class | |||||
| must call stopRenderThread() in its destructor. See stopRenderThread() for | |||||
| more details. | |||||
| */ | |||||
| class JUCE_API OpenGLComponent : public OpenGLBaseType | |||||
| { | |||||
| public: | |||||
| //============================================================================== | |||||
| /** These flags can be combined and passed to the OpenGLComponent constructor to | |||||
| specify various options. | |||||
| */ | |||||
| enum OpenGLFlags | |||||
| { | |||||
| /** This value can be used if you want your OpenGLComponent to use the | |||||
| default settings. | |||||
| */ | |||||
| openGLDefault = 8, | |||||
| #if JUCE_IOS || JUCE_ANDROID | |||||
| openGLES1 = 1, /**< This selects openGL ES 1.0 */ | |||||
| openGLES2 = 2, /**< This selects openGL ES 2.0 */ | |||||
| #endif | |||||
| /** If this flag is enabled, the component will launch a background thread to | |||||
| perform the rendering. If this flag is not enabled, then renderOpenGL() | |||||
| will be invoked on the main event thread when the component has been told to | |||||
| repaint, or after triggerRepaint() has been called. | |||||
| Important note! When using a background thread, your sub-class MUST call | |||||
| stopRenderThread() in its destructor. See stopRenderThread() for | |||||
| more details. | |||||
| */ | |||||
| useBackgroundThread = 4, | |||||
| /** If this flag is enabled, then any sub-components of the OpenGLComponent | |||||
| will be correctly overlaid on top of the GL content, and its paint() method will | |||||
| be able to render over it. If you're not using sub-components, you can disable | |||||
| this flag, which will eliminate some overhead. | |||||
| */ | |||||
| allowSubComponents = 8 | |||||
| }; | |||||
| //============================================================================== | |||||
| /** Creates an OpenGLComponent. | |||||
| The flags parameter should be a combination of the values in the | |||||
| OpenGLFlags enum. | |||||
| */ | |||||
| OpenGLComponent (int flags = openGLDefault); | |||||
| /** Destructor. */ | |||||
| ~OpenGLComponent(); | |||||
| //============================================================================== | |||||
| /** Changes the pixel format used by this component. */ | |||||
| void setPixelFormat (const OpenGLPixelFormat& formatToUse); | |||||
| /** Specifies an OpenGL context which should be shared with the one that this | |||||
| component is using. | |||||
| This is an OpenGL feature that lets two contexts share their texture data. | |||||
| Note that this pointer is stored by the component, and when the component | |||||
| needs to recreate its internal context for some reason, the same context | |||||
| will be used again to share lists. So if you pass a context in here, | |||||
| don't delete the context while this component is still using it! You can | |||||
| call shareWith (nullptr) to stop this component from sharing with it. | |||||
| */ | |||||
| void shareWith (OpenGLContext* contextToShareListsWith); | |||||
| /** Returns the context that this component is sharing with. | |||||
| @see shareWith | |||||
| */ | |||||
| OpenGLContext* getShareContext() const noexcept { return contextToShareListsWith; } | |||||
| //============================================================================== | |||||
| /** Flips the openGL buffers over. */ | |||||
| void swapBuffers(); | |||||
| /** Returns true if the component is performing the rendering on a background thread. | |||||
| This property is specified in the constructor. | |||||
| */ | |||||
| inline bool isUsingDedicatedThread() const noexcept { return (flags & useBackgroundThread) != 0; } | |||||
| /** Shuts down the rendering thread. | |||||
| This must be called by your sub-class's destructor, to make sure that all rendering | |||||
| callbacks have stopped before your class starts to be destroyed. | |||||
| */ | |||||
| void stopRenderThread(); | |||||
| //============================================================================== | |||||
| /** This callback is where your subclass should draw its openGL content. | |||||
| When this is called, makeCurrentContextActive() will already have been called | |||||
| for you, so you just need to draw. | |||||
| */ | |||||
| virtual void renderOpenGL() = 0; | |||||
| /** This method is called when the component creates a new OpenGL context. | |||||
| A new context may be created when the component is first used, or when it | |||||
| is moved to a different window, or when the window is hidden and re-shown, | |||||
| etc. | |||||
| You can use this callback as an opportunity to set up things like textures | |||||
| that your context needs. | |||||
| New contexts are created on-demand by the makeCurrentContextActive() method - so | |||||
| if the context is deleted, e.g. by changing the pixel format or window, no context | |||||
| will be created until the next call to makeCurrentContextActive(), which will | |||||
| synchronously create one and call this method. This means that if you're using | |||||
| a non-GUI thread for rendering, you can make sure this method is be called by | |||||
| your renderer thread. | |||||
| When this callback happens, the context will already have been made current | |||||
| using the makeCurrentContextActive() method, so there's no need to call it | |||||
| again in your code. | |||||
| */ | |||||
| virtual void newOpenGLContextCreated(); | |||||
| /** This method is called when the component shuts down its OpenGL context. | |||||
| You can use this callback to delete textures and any other OpenGL objects you | |||||
| created in the component's context. Be aware: if you are using a render | |||||
| thread, this may be called on the thread. | |||||
| When this callback happens, the context will have been made current | |||||
| using the makeCurrentContextActive() method, so there's no need to call it | |||||
| again in your code. | |||||
| */ | |||||
| virtual void releaseOpenGLContext(); | |||||
| //============================================================================== | |||||
| /** Returns the context that will draw into this component. | |||||
| This may return 0 if the component is currently invisible or hasn't currently | |||||
| got a context. The context object can be deleted and a new one created during | |||||
| the lifetime of this component, and there may be times when it doesn't have one. | |||||
| @see newOpenGLContextCreated() | |||||
| */ | |||||
| OpenGLContext* getCurrentContext() const noexcept { return context; } | |||||
| /** Makes this component the currently active openGL context. | |||||
| If this returns false, then the context isn't active, so you should avoid | |||||
| making any calls. | |||||
| This call may actually create a context if one isn't currently initialised. If | |||||
| it does this, it will also synchronously call the newOpenGLContextCreated() | |||||
| method to let you initialise it as necessary. | |||||
| @see releaseAsRenderingTarget | |||||
| */ | |||||
| bool makeCurrentRenderingTarget(); | |||||
| /** Stops the current component being the active OpenGL context. | |||||
| This is the opposite of makeCurrentRenderingTarget() | |||||
| @see makeCurrentRenderingTarget | |||||
| */ | |||||
| void releaseAsRenderingTarget(); | |||||
| /** Causes a repaint to be invoked asynchronously. | |||||
| This has a similar effect to calling repaint(), and triggers a callback to | |||||
| renderOpenGL(), but unlike repaint(), it does not mark any of the component's | |||||
| children as needing a redraw, which means that their cached state can be re-used | |||||
| if possible. | |||||
| */ | |||||
| void triggerRepaint(); | |||||
| //============================================================================== | |||||
| /** Delete the context. | |||||
| You should only need to call this if you've written a custom thread - if so, make | |||||
| sure that your thread calls this before it terminates. | |||||
| */ | |||||
| void deleteContext(); | |||||
| /** Tries to synchronously delete and re-create the context. | |||||
| If the context doesn't exist already, this will try to create one. | |||||
| If it exists, it'll first delete the existing one, and create a new one. | |||||
| You may need to call this if you require a temporary context for some reason | |||||
| before the normal call to newOpenGLContextCreated() is made. | |||||
| @returns true if a new context has been successfully created - this may not be | |||||
| possible on all platforms. | |||||
| */ | |||||
| bool rebuildContext(); | |||||
| //============================================================================== | |||||
| /** Returns the native handle of an embedded heavyweight window, if there is one. | |||||
| E.g. On windows, this will return the HWND of the sub-window containing | |||||
| the opengl context, on the mac it'll be the NSOpenGLView. | |||||
| */ | |||||
| void* getNativeWindowHandle() const; | |||||
| /** @internal */ | |||||
| void paint (Graphics&); | |||||
| private: | |||||
| const int flags; | |||||
| class OpenGLComponentWatcher; | |||||
| friend class OpenGLComponentWatcher; | |||||
| friend class ScopedPointer <OpenGLComponentWatcher>; | |||||
| ScopedPointer <OpenGLComponentWatcher> componentWatcher; | |||||
| ScopedPointer <OpenGLContext> context; | |||||
| OpenGLContext* contextToShareListsWith; | |||||
| CriticalSection contextLock; | |||||
| OpenGLPixelFormat preferredPixelFormat; | |||||
| bool needToDeleteContext; | |||||
| class OpenGLCachedComponentImage; | |||||
| friend class OpenGLCachedComponentImage; | |||||
| OpenGLCachedComponentImage* cachedImage; | |||||
| OpenGLCachedComponentImage* getGLCachedImage(); | |||||
| OpenGLContext* createContext(); | |||||
| void updateContext(); | |||||
| void recreateContextAsync(); | |||||
| void startRenderThread(); | |||||
| int renderAndSwapBuffers(); // (This method has been deprecated) | |||||
| #if JUCE_ANDROID | |||||
| friend class AndroidGLContext; | |||||
| #endif | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLComponent); | |||||
| }; | |||||
| #endif // __JUCE_OPENGLCOMPONENT_JUCEHEADER__ | |||||
| @@ -23,113 +23,603 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| OpenGLPixelFormat::OpenGLPixelFormat (const int bitsPerRGBComponent, | |||||
| const int alphaBits_, | |||||
| const int depthBufferBits_, | |||||
| const int stencilBufferBits_) noexcept | |||||
| : redBits (bitsPerRGBComponent), | |||||
| greenBits (bitsPerRGBComponent), | |||||
| blueBits (bitsPerRGBComponent), | |||||
| alphaBits (alphaBits_), | |||||
| depthBufferBits (depthBufferBits_), | |||||
| stencilBufferBits (stencilBufferBits_), | |||||
| accumulationBufferRedBits (0), | |||||
| accumulationBufferGreenBits (0), | |||||
| accumulationBufferBlueBits (0), | |||||
| accumulationBufferAlphaBits (0), | |||||
| multisamplingLevel (0) | |||||
| class OpenGLContext::CachedImage : public CachedComponentImage, | |||||
| public Thread | |||||
| { | { | ||||
| } | |||||
| public: | |||||
| CachedImage (OpenGLContext& context_, | |||||
| Component& component_, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const OpenGLContext* contextToShareWith) | |||||
| : Thread ("OpenGL Rendering"), | |||||
| context (context_), component (component_), | |||||
| #if JUCE_OPENGL_ES | |||||
| shadersAvailable (true), | |||||
| #else | |||||
| shadersAvailable (false), | |||||
| #endif | |||||
| needsUpdate (true) | |||||
| { | |||||
| nativeContext = new NativeContext (component, pixelFormat, | |||||
| contextToShareWith != nullptr ? contextToShareWith->nativeContext | |||||
| : nullptr); | |||||
| OpenGLPixelFormat::OpenGLPixelFormat (const OpenGLPixelFormat& other) noexcept | |||||
| : redBits (other.redBits), | |||||
| greenBits (other.greenBits), | |||||
| blueBits (other.blueBits), | |||||
| alphaBits (other.alphaBits), | |||||
| depthBufferBits (other.depthBufferBits), | |||||
| stencilBufferBits (other.stencilBufferBits), | |||||
| accumulationBufferRedBits (other.accumulationBufferRedBits), | |||||
| accumulationBufferGreenBits (other.accumulationBufferGreenBits), | |||||
| accumulationBufferBlueBits (other.accumulationBufferBlueBits), | |||||
| accumulationBufferAlphaBits (other.accumulationBufferAlphaBits), | |||||
| multisamplingLevel (other.multisamplingLevel) | |||||
| { | |||||
| } | |||||
| if (nativeContext->createdOk()) | |||||
| { | |||||
| context.nativeContext = nativeContext; | |||||
| #if ! JUCE_ANDROID | |||||
| startThread (6); | |||||
| #endif | |||||
| } | |||||
| else | |||||
| { | |||||
| nativeContext = nullptr; | |||||
| } | |||||
| } | |||||
| ~CachedImage() | |||||
| { | |||||
| #if ! JUCE_ANDROID | |||||
| stopThread (10000); | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | |||||
| void paint (Graphics&) | |||||
| { | |||||
| ComponentPeer* const peer = component.getPeer(); | |||||
| if (peer != nullptr) | |||||
| peer->addMaskedRegion (peer->getComponent()->getLocalArea (&component, component.getLocalBounds())); | |||||
| } | |||||
| OpenGLPixelFormat& OpenGLPixelFormat::operator= (const OpenGLPixelFormat& other) noexcept | |||||
| void invalidateAll() | |||||
| { | |||||
| validArea.clear(); | |||||
| triggerRepaint(); | |||||
| } | |||||
| void invalidate (const Rectangle<int>& area) | |||||
| { | |||||
| validArea.subtract (area); | |||||
| triggerRepaint(); | |||||
| } | |||||
| void releaseResources() {} | |||||
| void triggerRepaint() | |||||
| { | |||||
| needsUpdate = true; | |||||
| #if JUCE_ANDROID | |||||
| if (nativeContext != nullptr) | |||||
| nativeContext->triggerRepaint(); | |||||
| #else | |||||
| notify(); | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | |||||
| void ensureFrameBufferSize (int width, int height) | |||||
| { | |||||
| const int fbW = cachedImageFrameBuffer.getWidth(); | |||||
| const int fbH = cachedImageFrameBuffer.getHeight(); | |||||
| if (fbW != width || fbH != height || ! cachedImageFrameBuffer.isValid()) | |||||
| { | |||||
| cachedImageFrameBuffer.initialise (context, width, height); | |||||
| validArea.clear(); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| } | |||||
| void clearRegionInFrameBuffer (const RectangleList& list) | |||||
| { | |||||
| glClearColor (0, 0, 0, 0); | |||||
| glEnable (GL_SCISSOR_TEST); | |||||
| const GLuint previousFrameBufferTarget = OpenGLFrameBuffer::getCurrentFrameBufferTarget(); | |||||
| cachedImageFrameBuffer.makeCurrentRenderingTarget(); | |||||
| for (RectangleList::Iterator i (list); i.next();) | |||||
| { | |||||
| const Rectangle<int>& r = *i.getRectangle(); | |||||
| glScissor (r.getX(), component.getHeight() - r.getBottom(), r.getWidth(), r.getHeight()); | |||||
| glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | |||||
| } | |||||
| glDisable (GL_SCISSOR_TEST); | |||||
| context.extensions.glBindFramebuffer (GL_FRAMEBUFFER, previousFrameBufferTarget); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| bool renderFrame() | |||||
| { | |||||
| if (! context.makeActive()) | |||||
| return false; | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| glViewport (0, 0, component.getWidth(), component.getHeight()); | |||||
| if (context.renderer != nullptr) | |||||
| { | |||||
| context.renderer->renderOpenGL(); | |||||
| clearGLError(); | |||||
| } | |||||
| if (context.renderComponents) | |||||
| paintComponent(); | |||||
| context.swapBuffers(); | |||||
| return true; | |||||
| } | |||||
| void paintComponent() | |||||
| { | |||||
| if (needsUpdate) | |||||
| { | |||||
| MessageManagerLock mm (this); | |||||
| if (! mm.lockWasGained()) | |||||
| return; | |||||
| needsUpdate = false; | |||||
| // you mustn't set your own cached image object for an OpenGLComponent! | |||||
| jassert (get (component) == this); | |||||
| const Rectangle<int> bounds (component.getLocalBounds()); | |||||
| ensureFrameBufferSize (bounds.getWidth(), bounds.getHeight()); | |||||
| RectangleList invalid (bounds); | |||||
| invalid.subtract (validArea); | |||||
| validArea = bounds; | |||||
| if (! invalid.isEmpty()) | |||||
| { | |||||
| clearRegionInFrameBuffer (invalid); | |||||
| { | |||||
| ScopedPointer<LowLevelGraphicsContext> g (createOpenGLGraphicsContext (context, cachedImageFrameBuffer)); | |||||
| g->clipToRectangleList (invalid); | |||||
| paintOwner (*g); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| context.makeActive(); | |||||
| } | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| #if ! JUCE_ANDROID | |||||
| glEnable (GL_TEXTURE_2D); | |||||
| clearGLError(); | |||||
| #endif | |||||
| context.extensions.glActiveTexture (GL_TEXTURE0); | |||||
| glBindTexture (GL_TEXTURE_2D, cachedImageFrameBuffer.getTextureID()); | |||||
| const Rectangle<int> cacheBounds (cachedImageFrameBuffer.getWidth(), cachedImageFrameBuffer.getHeight()); | |||||
| context.copyTexture (cacheBounds, cacheBounds, context.getWidth(), context.getHeight()); | |||||
| glBindTexture (GL_TEXTURE_2D, 0); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| void paintOwner (LowLevelGraphicsContext& context) | |||||
| { | |||||
| Graphics g (&context); | |||||
| #if JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| g.saveState(); | |||||
| #endif | |||||
| JUCE_TRY | |||||
| { | |||||
| component.paintEntireComponent (g, false); | |||||
| } | |||||
| JUCE_CATCH_EXCEPTION | |||||
| #if JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| // enabling this code will fill all areas that get repainted with a colour overlay, to show | |||||
| // clearly when things are being repainted. | |||||
| g.restoreState(); | |||||
| static Random rng; | |||||
| g.fillAll (Colour ((uint8) rng.nextInt (255), | |||||
| (uint8) rng.nextInt (255), | |||||
| (uint8) rng.nextInt (255), | |||||
| (uint8) 0x50)); | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | |||||
| void run() | |||||
| { | |||||
| { | |||||
| // Allow the message thread to finish setting-up the context before using it.. | |||||
| MessageManagerLock mml (this); | |||||
| if (! mml.lockWasGained()) | |||||
| return; | |||||
| } | |||||
| nativeContext->makeActive(); | |||||
| initialiseOnThread(); | |||||
| #if JUCE_USE_OPENGL_SHADERS && ! JUCE_OPENGL_ES | |||||
| shadersAvailable = OpenGLShaderProgram::getLanguageVersion() > 0; | |||||
| #endif | |||||
| while (! threadShouldExit()) | |||||
| { | |||||
| const uint32 frameRenderStartTime = Time::getMillisecondCounter(); | |||||
| if (renderFrame()) | |||||
| waitForNextFrame (frameRenderStartTime); | |||||
| } | |||||
| shutdownOnThread(); | |||||
| } | |||||
| void initialiseOnThread() | |||||
| { | |||||
| associatedObjectNames.clear(); | |||||
| associatedObjects.clear(); | |||||
| nativeContext->initialiseOnRenderThread(); | |||||
| glViewport (0, 0, component.getWidth(), component.getHeight()); | |||||
| context.extensions.initialise(); | |||||
| if (context.renderer != nullptr) | |||||
| context.renderer->newOpenGLContextCreated(); | |||||
| } | |||||
| void shutdownOnThread() | |||||
| { | |||||
| if (context.renderer != nullptr) | |||||
| context.renderer->openGLContextClosing(); | |||||
| nativeContext->shutdownOnRenderThread(); | |||||
| associatedObjectNames.clear(); | |||||
| associatedObjects.clear(); | |||||
| } | |||||
| void waitForNextFrame (const uint32 frameRenderStartTime) | |||||
| { | |||||
| const int defaultFPS = 60; | |||||
| const int elapsed = (int) (Time::getMillisecondCounter() - frameRenderStartTime); | |||||
| wait (jmax (1, (1000 / defaultFPS) - elapsed)); | |||||
| } | |||||
| //============================================================================== | |||||
| static CachedImage* get (Component& c) noexcept | |||||
| { | |||||
| return dynamic_cast<CachedImage*> (c.getCachedComponentImage()); | |||||
| } | |||||
| //============================================================================== | |||||
| ScopedPointer<NativeContext> nativeContext; | |||||
| OpenGLContext& context; | |||||
| Component& component; | |||||
| OpenGLFrameBuffer cachedImageFrameBuffer; | |||||
| RectangleList validArea; | |||||
| StringArray associatedObjectNames; | |||||
| ReferenceCountedArray<ReferenceCountedObject> associatedObjects; | |||||
| WaitableEvent canPaintNowFlag, finishedPaintingFlag; | |||||
| bool volatile shadersAvailable; | |||||
| bool volatile needsUpdate; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CachedImage); | |||||
| }; | |||||
| //============================================================================== | |||||
| #if JUCE_ANDROID | |||||
| void OpenGLContext::NativeContext::contextCreatedCallback() | |||||
| { | { | ||||
| redBits = other.redBits; | |||||
| greenBits = other.greenBits; | |||||
| blueBits = other.blueBits; | |||||
| alphaBits = other.alphaBits; | |||||
| depthBufferBits = other.depthBufferBits; | |||||
| stencilBufferBits = other.stencilBufferBits; | |||||
| accumulationBufferRedBits = other.accumulationBufferRedBits; | |||||
| accumulationBufferGreenBits = other.accumulationBufferGreenBits; | |||||
| accumulationBufferBlueBits = other.accumulationBufferBlueBits; | |||||
| accumulationBufferAlphaBits = other.accumulationBufferAlphaBits; | |||||
| multisamplingLevel = other.multisamplingLevel; | |||||
| return *this; | |||||
| isInsideGLCallback = true; | |||||
| CachedImage* const c = CachedImage::get (component); | |||||
| jassert (c != nullptr); | |||||
| if (c != nullptr) | |||||
| c->initialiseOnThread(); | |||||
| isInsideGLCallback = false; | |||||
| } | } | ||||
| bool OpenGLPixelFormat::operator== (const OpenGLPixelFormat& other) const noexcept | |||||
| void OpenGLContext::NativeContext::renderCallback() | |||||
| { | { | ||||
| return redBits == other.redBits | |||||
| && greenBits == other.greenBits | |||||
| && blueBits == other.blueBits | |||||
| && alphaBits == other.alphaBits | |||||
| && depthBufferBits == other.depthBufferBits | |||||
| && stencilBufferBits == other.stencilBufferBits | |||||
| && accumulationBufferRedBits == other.accumulationBufferRedBits | |||||
| && accumulationBufferGreenBits == other.accumulationBufferGreenBits | |||||
| && accumulationBufferBlueBits == other.accumulationBufferBlueBits | |||||
| && accumulationBufferAlphaBits == other.accumulationBufferAlphaBits | |||||
| && multisamplingLevel == other.multisamplingLevel; | |||||
| isInsideGLCallback = true; | |||||
| CachedImage* const c = CachedImage::get (component); | |||||
| if (c != nullptr) | |||||
| c->renderFrame(); | |||||
| isInsideGLCallback = false; | |||||
| } | } | ||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| static Array<OpenGLContext*> knownContexts; | |||||
| class OpenGLContext::Attachment : public ComponentMovementWatcher | |||||
| { | |||||
| public: | |||||
| Attachment (OpenGLContext& context_, Component& comp, | |||||
| const OpenGLPixelFormat& pixelFormat_, | |||||
| const OpenGLContext* contextToShareWith_) | |||||
| : ComponentMovementWatcher (&comp), context (context_), | |||||
| pixelFormat (pixelFormat_), contextToShareWith (contextToShareWith_) | |||||
| { | |||||
| if (canBeAttached (comp)) | |||||
| attach(); | |||||
| } | |||||
| ~Attachment() | |||||
| { | |||||
| detach(); | |||||
| } | |||||
| void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) | |||||
| { | |||||
| Component* const comp = getComponent(); | |||||
| if (isAttached (*comp) != canBeAttached (*comp)) | |||||
| componentVisibilityChanged(); | |||||
| context.width = comp->getWidth(); | |||||
| context.height = comp->getHeight(); | |||||
| if (comp->getWidth() > 0 && comp->getHeight() > 0 | |||||
| && context.nativeContext != nullptr) | |||||
| { | |||||
| context.nativeContext->updateWindowPosition (comp->getTopLevelComponent() | |||||
| ->getLocalArea (comp, comp->getLocalBounds())); | |||||
| } | |||||
| } | |||||
| void componentPeerChanged() | |||||
| { | |||||
| detach(); | |||||
| componentVisibilityChanged(); | |||||
| } | |||||
| void componentVisibilityChanged() | |||||
| { | |||||
| Component* const comp = getComponent(); | |||||
| if (canBeAttached (*comp)) | |||||
| { | |||||
| if (! isAttached (*comp)) | |||||
| attach(); | |||||
| } | |||||
| else | |||||
| { | |||||
| detach(); | |||||
| } | |||||
| } | |||||
| #if JUCE_DEBUG || JUCE_LOG_ASSERTIONS | |||||
| void componentBeingDeleted (Component& component) | |||||
| { | |||||
| /* You must call detach() or delete your OpenGLContext to remove it | |||||
| from a component BEFORE deleting the component that it is using! | |||||
| */ | |||||
| jassertfalse; | |||||
| ComponentMovementWatcher::componentBeingDeleted (component); | |||||
| } | |||||
| #endif | |||||
| private: | |||||
| OpenGLContext& context; | |||||
| OpenGLPixelFormat pixelFormat; | |||||
| const OpenGLContext* contextToShareWith; | |||||
| static bool canBeAttached (const Component& comp) noexcept | |||||
| { | |||||
| return comp.getWidth() > 0 && comp.getHeight() > 0 && comp.isShowing(); | |||||
| } | |||||
| static bool isAttached (const Component& comp) noexcept | |||||
| { | |||||
| return comp.getCachedComponentImage() != nullptr; | |||||
| } | |||||
| void attach() | |||||
| { | |||||
| Component* const comp = getComponent(); | |||||
| comp->setCachedComponentImage (new CachedImage (context, *comp, | |||||
| pixelFormat, contextToShareWith)); | |||||
| } | |||||
| void detach() | |||||
| { | |||||
| getComponent()->setCachedComponentImage (nullptr); | |||||
| } | |||||
| }; | |||||
| OpenGLContext::OpenGLContext() noexcept | |||||
| : shaderLanguageAvailable (0) | |||||
| //============================================================================== | |||||
| OpenGLContext::OpenGLContext() | |||||
| : nativeContext (nullptr), renderer (nullptr), | |||||
| width (0), height (0), renderComponents (true) | |||||
| { | { | ||||
| knownContexts.add (this); | |||||
| } | } | ||||
| OpenGLContext::~OpenGLContext() | OpenGLContext::~OpenGLContext() | ||||
| { | { | ||||
| knownContexts.removeValue (this); | |||||
| detach(); | |||||
| } | } | ||||
| OpenGLContext* OpenGLContext::getCurrentContext() | |||||
| void OpenGLContext::setRenderer (OpenGLRenderer* rendererToUse, | |||||
| bool shouldAlsoPaintComponent) noexcept | |||||
| { | |||||
| // This method must not be called when the context has already been attached! | |||||
| // Call it before attaching your context, or use detach() first, before calling this! | |||||
| jassert (nativeContext == nullptr); | |||||
| renderer = rendererToUse; | |||||
| renderComponents = shouldAlsoPaintComponent; | |||||
| } | |||||
| void OpenGLContext::attachTo (Component& component, | |||||
| const OpenGLPixelFormat& pixelFormat, | |||||
| const OpenGLContext* contextToShareWith) | |||||
| { | { | ||||
| for (int i = knownContexts.size(); --i >= 0;) | |||||
| if (getTargetComponent() != &component) | |||||
| { | { | ||||
| OpenGLContext* const oglc = knownContexts.getUnchecked(i); | |||||
| detach(); | |||||
| width = component.getWidth(); | |||||
| height = component.getHeight(); | |||||
| if (oglc->isActive()) | |||||
| return oglc; | |||||
| attachment = new Attachment (*this, component, | |||||
| pixelFormat, contextToShareWith); | |||||
| } | } | ||||
| } | |||||
| return nullptr; | |||||
| void OpenGLContext::attachTo (Component& component) | |||||
| { | |||||
| component.repaint(); | |||||
| attachTo (component, OpenGLPixelFormat(), nullptr); | |||||
| } | } | ||||
| bool OpenGLContext::areShadersAvailable() const | |||||
| void OpenGLContext::detach() | |||||
| { | { | ||||
| #if JUCE_USE_OPENGL_SHADERS | |||||
| if (shaderLanguageAvailable == 0) | |||||
| shaderLanguageAvailable = (OpenGLShaderProgram::getLanguageVersion() > 0) ? 1 : -1; | |||||
| attachment = nullptr; | |||||
| nativeContext = nullptr; | |||||
| width = height = 0; | |||||
| } | |||||
| bool OpenGLContext::isAttached() const noexcept | |||||
| { | |||||
| return nativeContext != nullptr; | |||||
| } | |||||
| Component* OpenGLContext::getTargetComponent() const noexcept | |||||
| { | |||||
| return attachment != nullptr ? attachment->getComponent() : nullptr; | |||||
| } | |||||
| OpenGLContext* OpenGLContext::getCurrentContext() | |||||
| { | |||||
| #if JUCE_ANDROID | |||||
| NativeContext* const nc = NativeContext::getActiveContext(); | |||||
| if (nc == nullptr) | |||||
| return nullptr; | |||||
| return shaderLanguageAvailable > 0; | |||||
| CachedImage* currentContext = CachedImage::get (nc->component); | |||||
| #else | #else | ||||
| return false; | |||||
| CachedImage* currentContext = dynamic_cast <CachedImage*> (Thread::getCurrentThread()); | |||||
| #endif | #endif | ||||
| return currentContext != nullptr ? ¤tContext->context : nullptr; | |||||
| } | |||||
| bool OpenGLContext::makeActive() const noexcept { return nativeContext != nullptr && nativeContext->makeActive(); } | |||||
| bool OpenGLContext::makeInactive() const noexcept { return nativeContext != nullptr && nativeContext->makeInactive(); } | |||||
| bool OpenGLContext::isActive() const noexcept { return nativeContext != nullptr && nativeContext->isActive(); } | |||||
| void OpenGLContext::triggerRepaint() | |||||
| { | |||||
| CachedImage* const currentContext | |||||
| = dynamic_cast <CachedImage*> (Thread::getCurrentThread()); | |||||
| if (currentContext != nullptr) | |||||
| { | |||||
| currentContext->triggerRepaint(); | |||||
| currentContext->component.repaint(); | |||||
| } | |||||
| } | |||||
| void OpenGLContext::swapBuffers() | |||||
| { | |||||
| if (nativeContext != nullptr) | |||||
| nativeContext->swapBuffers(); | |||||
| } | |||||
| unsigned int OpenGLContext::getFrameBufferID() const noexcept | |||||
| { | |||||
| return nativeContext != nullptr ? nativeContext->getFrameBufferID() : 0; | |||||
| } | |||||
| bool OpenGLContext::setSwapInterval (int numFramesPerSwap) | |||||
| { | |||||
| return nativeContext != nullptr && nativeContext->setSwapInterval (numFramesPerSwap); | |||||
| } | |||||
| int OpenGLContext::getSwapInterval() const | |||||
| { | |||||
| return nativeContext != nullptr ? nativeContext->getSwapInterval() : 0; | |||||
| } | |||||
| void* OpenGLContext::getRawContext() const noexcept | |||||
| { | |||||
| return nativeContext != nullptr ? nativeContext->getRawContext() : nullptr; | |||||
| } | |||||
| OpenGLContext::CachedImage* OpenGLContext::getCachedImage() const noexcept | |||||
| { | |||||
| Component* const comp = getTargetComponent(); | |||||
| return comp != nullptr ? CachedImage::get (*comp) : nullptr; | |||||
| } | |||||
| bool OpenGLContext::areShadersAvailable() const | |||||
| { | |||||
| CachedImage* const c = getCachedImage(); | |||||
| return c != nullptr && c->shadersAvailable; | |||||
| } | |||||
| ReferenceCountedObjectPtr<ReferenceCountedObject> OpenGLContext::getAssociatedObject (const char* name) const | |||||
| { | |||||
| jassert (name != nullptr); | |||||
| CachedImage* const c = getCachedImage(); | |||||
| // This method must only be called from an openGL rendering callback. | |||||
| jassert (c != nullptr && nativeContext != nullptr); | |||||
| jassert (getCurrentContext() != nullptr); | |||||
| const int index = c->associatedObjectNames.indexOf (name); | |||||
| return index >= 0 ? c->associatedObjects.getUnchecked (index) : nullptr; | |||||
| } | |||||
| void OpenGLContext::setAssociatedObject (const char* name, ReferenceCountedObject* newObject) | |||||
| { | |||||
| jassert (name != nullptr); | |||||
| CachedImage* const c = getCachedImage(); | |||||
| // This method must only be called from an openGL rendering callback. | |||||
| jassert (c != nullptr && nativeContext != nullptr); | |||||
| jassert (getCurrentContext() != nullptr); | |||||
| const int index = c->associatedObjectNames.indexOf (name); | |||||
| if (index >= 0) | |||||
| { | |||||
| c->associatedObjects.set (index, newObject); | |||||
| } | |||||
| else | |||||
| { | |||||
| c->associatedObjectNames.add (name); | |||||
| c->associatedObjects.add (newObject); | |||||
| } | |||||
| } | } | ||||
| void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | ||||
| const Rectangle<int>& anchorPosAndTextureSize, | const Rectangle<int>& anchorPosAndTextureSize, | ||||
| int contextWidth, int contextHeight) | |||||
| const int contextWidth, const int contextHeight) | |||||
| { | { | ||||
| if (contextWidth <= 0 || contextHeight <= 0) | |||||
| return; | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); | glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA); | ||||
| glEnable (GL_BLEND); | glEnable (GL_BLEND); | ||||
| @@ -144,13 +634,13 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| static const OverlayShaderProgram& select (OpenGLContext& context) | static const OverlayShaderProgram& select (OpenGLContext& context) | ||||
| { | { | ||||
| static const Identifier programValueID ("juceGLComponentOverlayShader"); | |||||
| OverlayShaderProgram* program = dynamic_cast <OverlayShaderProgram*> (context.properties [programValueID].getObject()); | |||||
| static const char programValueID[] = "juceGLComponentOverlayShader"; | |||||
| OverlayShaderProgram* program = static_cast <OverlayShaderProgram*> (context.getAssociatedObject (programValueID).getObject()); | |||||
| if (program == nullptr) | if (program == nullptr) | ||||
| { | { | ||||
| program = new OverlayShaderProgram (context); | program = new OverlayShaderProgram (context); | ||||
| context.properties.set (programValueID, var (program)); | |||||
| context.setAssociatedObject (programValueID, program); | |||||
| } | } | ||||
| program->program.use(); | program->program.use(); | ||||
| @@ -173,12 +663,12 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| GL_VERTEX_SHADER); | GL_VERTEX_SHADER); | ||||
| program.addShader ("uniform sampler2D imageTexture;" | program.addShader ("uniform sampler2D imageTexture;" | ||||
| "uniform " JUCE_HIGHP " float matrix[6];" | |||||
| "uniform " JUCE_HIGHP " float textureBounds[4];" | |||||
| "varying " JUCE_HIGHP " vec2 pixelPos;" | "varying " JUCE_HIGHP " vec2 pixelPos;" | ||||
| "void main()" | "void main()" | ||||
| "{" | "{" | ||||
| JUCE_HIGHP " vec2 texturePos = mat2 (matrix[0], matrix[3], matrix[1], matrix[4]) * pixelPos" | |||||
| " + vec2 (matrix[2], matrix[5]);" | |||||
| JUCE_HIGHP " vec2 texturePos = (pixelPos - vec2 (textureBounds[0], textureBounds[1]))" | |||||
| "/ vec2 (textureBounds[2], textureBounds[3]);" | |||||
| "gl_FragColor = texture2D (imageTexture, vec2 (texturePos.x, 1.0 - texturePos.y));" | "gl_FragColor = texture2D (imageTexture, vec2 (texturePos.x, 1.0 - texturePos.y));" | ||||
| "}", | "}", | ||||
| GL_FRAGMENT_SHADER); | GL_FRAGMENT_SHADER); | ||||
| @@ -192,24 +682,19 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| : positionAttribute (program, "position"), | : positionAttribute (program, "position"), | ||||
| screenSize (program, "screenSize"), | screenSize (program, "screenSize"), | ||||
| imageTexture (program, "imageTexture"), | imageTexture (program, "imageTexture"), | ||||
| matrix (program, "matrix") | |||||
| textureBounds (program, "textureBounds") | |||||
| {} | {} | ||||
| void set (const float targetWidth, const float targetHeight, const Rectangle<float>& anchorPosAndTextureSize) const | |||||
| void set (const float targetWidth, const float targetHeight, const Rectangle<float>& bounds) const | |||||
| { | { | ||||
| const AffineTransform t (AffineTransform::translation (anchorPosAndTextureSize.getX(), | |||||
| anchorPosAndTextureSize.getY()) | |||||
| .inverted().scaled (1.0f / anchorPosAndTextureSize.getWidth(), | |||||
| 1.0f / anchorPosAndTextureSize.getHeight())); | |||||
| const GLfloat m[] = { t.mat00, t.mat01, t.mat02, t.mat10, t.mat11, t.mat12 }; | |||||
| matrix.set (m, 6); | |||||
| const GLfloat m[] = { bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight() }; | |||||
| textureBounds.set (m, 4); | |||||
| imageTexture.set (0); | imageTexture.set (0); | ||||
| screenSize.set (targetWidth, targetHeight); | screenSize.set (targetWidth, targetHeight); | ||||
| } | } | ||||
| OpenGLShaderProgram::Attribute positionAttribute; | OpenGLShaderProgram::Attribute positionAttribute; | ||||
| OpenGLShaderProgram::Uniform screenSize, imageTexture, matrix; | |||||
| OpenGLShaderProgram::Uniform screenSize, imageTexture, textureBounds; | |||||
| }; | }; | ||||
| OpenGLShaderProgram program; | OpenGLShaderProgram program; | ||||
| @@ -228,9 +713,9 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| extensions.glVertexAttribPointer (program.params.positionAttribute.attributeID, 2, GL_SHORT, GL_FALSE, 4, vertices); | extensions.glVertexAttribPointer (program.params.positionAttribute.attributeID, 2, GL_SHORT, GL_FALSE, 4, vertices); | ||||
| extensions.glEnableVertexAttribArray (program.params.positionAttribute.attributeID); | extensions.glEnableVertexAttribArray (program.params.positionAttribute.attributeID); | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| glDrawArrays (GL_TRIANGLE_STRIP, 0, 4); | glDrawArrays (GL_TRIANGLE_STRIP, 0, 4); | ||||
| extensions.glUseProgram (0); | extensions.glUseProgram (0); | ||||
| } | } | ||||
| #if JUCE_USE_OPENGL_FIXED_FUNCTION | #if JUCE_USE_OPENGL_FIXED_FUNCTION | ||||
| @@ -244,12 +729,14 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| glScissor (targetClipArea.getX(), contextHeight - targetClipArea.getBottom(), | glScissor (targetClipArea.getX(), contextHeight - targetClipArea.getBottom(), | ||||
| targetClipArea.getWidth(), targetClipArea.getHeight()); | targetClipArea.getWidth(), targetClipArea.getHeight()); | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| glColor4f (1.0f, 1.0f, 1.0f, 1.0f); | glColor4f (1.0f, 1.0f, 1.0f, 1.0f); | ||||
| glDisableClientState (GL_COLOR_ARRAY); | glDisableClientState (GL_COLOR_ARRAY); | ||||
| glDisableClientState (GL_NORMAL_ARRAY); | glDisableClientState (GL_NORMAL_ARRAY); | ||||
| glEnableClientState (GL_VERTEX_ARRAY); | glEnableClientState (GL_VERTEX_ARRAY); | ||||
| glEnableClientState (GL_TEXTURE_COORD_ARRAY); | glEnableClientState (GL_TEXTURE_COORD_ARRAY); | ||||
| OpenGLHelpers::prepareFor2D (contextWidth, contextHeight); | OpenGLHelpers::prepareFor2D (contextWidth, contextHeight); | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| const GLfloat textureCoords[] = { 0, 0, 1.0f, 0, 0, 1.0f, 1.0f, 1.0f }; | const GLfloat textureCoords[] = { 0, 0, 1.0f, 0, 0, 1.0f, 1.0f, 1.0f }; | ||||
| glTexCoordPointer (2, GL_FLOAT, 0, textureCoords); | glTexCoordPointer (2, GL_FLOAT, 0, textureCoords); | ||||
| @@ -265,4 +752,6 @@ void OpenGLContext::copyTexture (const Rectangle<int>& targetClipArea, | |||||
| glDisable (GL_SCISSOR_TEST); | glDisable (GL_SCISSOR_TEST); | ||||
| } | } | ||||
| #endif | #endif | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | } | ||||
| @@ -29,6 +29,27 @@ | |||||
| #include "juce_OpenGLPixelFormat.h" | #include "juce_OpenGLPixelFormat.h" | ||||
| #include "../native/juce_OpenGLExtensions.h" | #include "../native/juce_OpenGLExtensions.h" | ||||
| //============================================================================== | |||||
| /** | |||||
| */ | |||||
| class JUCE_API OpenGLRenderer | |||||
| { | |||||
| public: | |||||
| OpenGLRenderer() {} | |||||
| virtual ~OpenGLRenderer() {} | |||||
| /** | |||||
| */ | |||||
| virtual void newOpenGLContextCreated() = 0; | |||||
| /** | |||||
| */ | |||||
| virtual void renderOpenGL() = 0; | |||||
| /** | |||||
| */ | |||||
| virtual void openGLContextClosing() = 0; | |||||
| }; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** | /** | ||||
| @@ -39,20 +60,51 @@ | |||||
| class JUCE_API OpenGLContext | class JUCE_API OpenGLContext | ||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | |||||
| OpenGLContext(); | |||||
| /** Destructor. */ | /** Destructor. */ | ||||
| virtual ~OpenGLContext(); | |||||
| ~OpenGLContext(); | |||||
| //============================================================================== | |||||
| /** */ | |||||
| void setRenderer (OpenGLRenderer* rendererToUse, | |||||
| bool shouldAlsoPaintComponent) noexcept; | |||||
| /** */ | |||||
| void attachTo (Component& component); | |||||
| /** */ | |||||
| void attachTo (Component& component, | |||||
| const OpenGLPixelFormat& preferredPixelFormat, | |||||
| const OpenGLContext* contextToShareWith); | |||||
| /** */ | |||||
| void detach(); | |||||
| /** */ | |||||
| bool isAttached() const noexcept; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Makes this context the currently active one. */ | /** Makes this context the currently active one. */ | ||||
| virtual bool makeActive() const noexcept = 0; | |||||
| bool makeActive() const noexcept; | |||||
| /** If this context is currently active, it is disactivated. */ | /** If this context is currently active, it is disactivated. */ | ||||
| virtual bool makeInactive() const noexcept = 0; | |||||
| bool makeInactive() const noexcept; | |||||
| /** Returns true if this context is currently active. */ | /** Returns true if this context is currently active. */ | ||||
| virtual bool isActive() const noexcept = 0; | |||||
| bool isActive() const noexcept; | |||||
| /** Swaps the buffers (if the context can do this). */ | |||||
| virtual void swapBuffers() = 0; | |||||
| /** Returns the component to which this context is currently attached, or nullptr. */ | |||||
| Component* getTargetComponent() const noexcept; | |||||
| /** Returns the context that's currently in active use by the calling thread, or | |||||
| nullptr if no context is active. | |||||
| */ | |||||
| static OpenGLContext* getCurrentContext(); | |||||
| //============================================================================== | |||||
| /** Swaps the buffers (if the context can do this). | |||||
| There's normally no need to call this directly - the buffers will be swapped | |||||
| automatically after your OpenGLRenderer::renderOpenGL() method has been called. | |||||
| */ | |||||
| void swapBuffers(); | |||||
| /** Sets whether the context checks the vertical sync before swapping. | /** Sets whether the context checks the vertical sync before swapping. | ||||
| @@ -60,57 +112,68 @@ public: | |||||
| fairly system-dependent, but 0 turns off syncing, 1 makes it swap on frame-boundaries, | fairly system-dependent, but 0 turns off syncing, 1 makes it swap on frame-boundaries, | ||||
| and greater numbers indicate that it should swap less often. | and greater numbers indicate that it should swap less often. | ||||
| Returns true if it sets the value successfully. | |||||
| Returns true if it sets the value successfully - some platforms won't support | |||||
| this setting. | |||||
| */ | */ | ||||
| virtual bool setSwapInterval (int numFramesPerSwap) = 0; | |||||
| bool setSwapInterval (int numFramesPerSwap); | |||||
| /** Returns the current swap-sync interval. | /** Returns the current swap-sync interval. | ||||
| See setSwapInterval() for info about the value returned. | See setSwapInterval() for info about the value returned. | ||||
| */ | */ | ||||
| virtual int getSwapInterval() const = 0; | |||||
| int getSwapInterval() const; | |||||
| /** */ | |||||
| void triggerRepaint(); | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns an OS-dependent handle to the raw GL context. | |||||
| /** Returns the width of this context */ | |||||
| inline int getWidth() const noexcept { return width; } | |||||
| /** Returns the height of this context */ | |||||
| inline int getHeight() const noexcept { return height; } | |||||
| On win32, this will be a HGLRC; on the Mac, an NSOpenGLContext; on Linux, | |||||
| a GLXContext. | |||||
| /** If this context is backed by a frame buffer, this returns its ID number, | |||||
| or 0 if the context has no accessible framebuffer. | |||||
| */ | */ | ||||
| virtual void* getRawContext() const noexcept = 0; | |||||
| unsigned int getFrameBufferID() const noexcept; | |||||
| /** Returns the width of this context */ | |||||
| virtual int getWidth() const = 0; | |||||
| /** Returns the height of this context */ | |||||
| virtual int getHeight() const = 0; | |||||
| /** Returns true if shaders can be used in this context. */ | |||||
| bool areShadersAvailable() const; | |||||
| /** Updates the native context's area within its parent. */ | |||||
| virtual void updateWindowPosition (const Rectangle<int>&) = 0; | |||||
| /** This structure holds a set of dynamically loaded GL functions for use on this context. */ | |||||
| OpenGLExtensionFunctions extensions; | |||||
| /** If this context is backed by a frame buffer, this returns its ID number, or | |||||
| 0 if the context has no accessible framebuffer. | |||||
| /** This retrieves an object that was previously stored with setAssociatedObject(). | |||||
| If no object is found with the given name, this will return nullptr. | |||||
| This method must only be called from within the GL rendering methods. | |||||
| @see setAssociatedObject | |||||
| */ | */ | ||||
| virtual unsigned int getFrameBufferID() const = 0; | |||||
| ReferenceCountedObjectPtr<ReferenceCountedObject> getAssociatedObject (const char* name) const; | |||||
| /** Checks whether the current context supports the specified extension. */ | |||||
| bool isExtensionSupported (const char* const extensionName); | |||||
| /** Attaches a named object to the context, which will be deleted when the context is | |||||
| destroyed. | |||||
| /** Returns true if shaders can be used in this context. */ | |||||
| virtual bool areShadersAvailable() const; | |||||
| This allows you to store an object which will be released before the context is | |||||
| deleted. The main purpose is for caching GL objects such as shader programs, which | |||||
| will become invalid when the context is deleted. | |||||
| This method must only be called from within the GL rendering methods. | |||||
| */ | |||||
| void setAssociatedObject (const char* name, ReferenceCountedObject* newObject); | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns the context that's currently in active use by the calling thread. | |||||
| /** Returns an OS-dependent handle to some kind of underlting OS-provided GL context. | |||||
| Returns 0 if there isn't an active context. | |||||
| The exact type of the value returned will depend on the OS and may change | |||||
| if the implementation changes. If you want to use this, digging around in the | |||||
| native code is probably the best way to find out what it is. | |||||
| */ | */ | ||||
| static OpenGLContext* getCurrentContext(); | |||||
| void* getRawContext() const noexcept; | |||||
| /** This property set allows you to attach persisent values to the context. */ | |||||
| NamedValueSet properties; | |||||
| /** This structure holds a set of dynamically loaded GL functions for use on this context. */ | |||||
| OpenGLExtensionFunctions extensions; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Draws the currently selected texture into this context at its original size. | /** Draws the currently selected texture into this context at its original size. | ||||
| @param targetClipArea the target area to draw into (in top-left origin coords) | @param targetClipArea the target area to draw into (in top-left origin coords) | ||||
| @param anchorPosAndTextureSize the position of this rectangle is the texture's top-left | @param anchorPosAndTextureSize the position of this rectangle is the texture's top-left | ||||
| anchor position in the target space, and the size must be | anchor position in the target space, and the size must be | ||||
| @@ -124,15 +187,24 @@ public: | |||||
| const Rectangle<int>& anchorPosAndTextureSize, | const Rectangle<int>& anchorPosAndTextureSize, | ||||
| int contextWidth, int contextHeight); | int contextWidth, int contextHeight); | ||||
| protected: | |||||
| //============================================================================== | |||||
| OpenGLContext() noexcept; | |||||
| #ifndef DOXYGEN | |||||
| class NativeContext; | |||||
| #endif | |||||
| private: | private: | ||||
| mutable int shaderLanguageAvailable; | |||||
| class CachedImage; | |||||
| class Attachment; | |||||
| NativeContext* nativeContext; | |||||
| OpenGLRenderer* renderer; | |||||
| ScopedPointer<Attachment> attachment; | |||||
| int width, height; | |||||
| bool renderComponents; | |||||
| CachedImage* getCachedImage() const noexcept; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLContext); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLContext); | ||||
| }; | }; | ||||
| #endif // __JUCE_OPENGLCONTEXT_JUCEHEADER__ | #endif // __JUCE_OPENGLCONTEXT_JUCEHEADER__ | ||||
| @@ -96,16 +96,19 @@ public: | |||||
| ~Pimpl() | ~Pimpl() | ||||
| { | { | ||||
| if (textureID != 0) | |||||
| glDeleteTextures (1, &textureID); | |||||
| if (OpenGLHelpers::isContextActive()) | |||||
| { | |||||
| if (textureID != 0) | |||||
| glDeleteTextures (1, &textureID); | |||||
| if (depthOrStencilBuffer != 0) | |||||
| context.extensions.glDeleteRenderbuffers (1, &depthOrStencilBuffer); | |||||
| if (depthOrStencilBuffer != 0) | |||||
| context.extensions.glDeleteRenderbuffers (1, &depthOrStencilBuffer); | |||||
| if (frameBufferID != 0) | |||||
| context.extensions.glDeleteFramebuffers (1, &frameBufferID); | |||||
| if (frameBufferID != 0) | |||||
| context.extensions.glDeleteFramebuffers (1, &frameBufferID); | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| } | |||||
| } | } | ||||
| void bind() | void bind() | ||||
| @@ -212,6 +215,7 @@ bool OpenGLFrameBuffer::initialise (OpenGLFrameBuffer& other) | |||||
| #if ! JUCE_ANDROID | #if ! JUCE_ANDROID | ||||
| glEnable (GL_TEXTURE_2D); | glEnable (GL_TEXTURE_2D); | ||||
| clearGLError(); | |||||
| #endif | #endif | ||||
| glBindTexture (GL_TEXTURE_2D, p->textureID); | glBindTexture (GL_TEXTURE_2D, p->textureID); | ||||
| pimpl->context.copyTexture (area, area, area.getWidth(), area.getHeight()); | pimpl->context.copyTexture (area, area, area.getWidth(), area.getHeight()); | ||||
| @@ -340,6 +344,7 @@ bool OpenGLFrameBuffer::writePixels (const PixelARGB* data, const Rectangle<int> | |||||
| const GLint cropRect[4] = { 0, texH - area.getHeight(), area.getWidth(), area.getHeight() }; | const GLint cropRect[4] = { 0, texH - area.getHeight(), area.getWidth(), area.getHeight() }; | ||||
| glTexParameteriv (GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, cropRect); | glTexParameteriv (GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, cropRect); | ||||
| glEnable (GL_TEXTURE_2D); | glEnable (GL_TEXTURE_2D); | ||||
| clearGLError(); | |||||
| glColor4f (1.0f, 1.0f, 1.0f, 1.0f); | glColor4f (1.0f, 1.0f, 1.0f, 1.0f); | ||||
| glDrawTexiOES (area.getX(), area.getY(), 1, area.getWidth(), area.getHeight()); | glDrawTexiOES (area.getX(), area.getY(), 1, area.getWidth(), area.getHeight()); | ||||
| glBindTexture (GL_TEXTURE_2D, 0); | glBindTexture (GL_TEXTURE_2D, 0); | ||||
| @@ -348,6 +353,7 @@ bool OpenGLFrameBuffer::writePixels (const PixelARGB* data, const Rectangle<int> | |||||
| #endif | #endif | ||||
| pimpl->context.extensions.glBindFramebuffer (GL_FRAMEBUFFER, 0); | pimpl->context.extensions.glBindFramebuffer (GL_FRAMEBUFFER, 0); | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| return true; | return true; | ||||
| } | } | ||||
| @@ -386,6 +392,7 @@ void OpenGLFrameBuffer::drawAt (float x1, float y1) const | |||||
| { | { | ||||
| #if ! JUCE_ANDROID | #if ! JUCE_ANDROID | ||||
| glEnable (GL_TEXTURE_2D); | glEnable (GL_TEXTURE_2D); | ||||
| clearGLError(); | |||||
| #endif | #endif | ||||
| glBindTexture (GL_TEXTURE_2D, pimpl->textureID); | glBindTexture (GL_TEXTURE_2D, pimpl->textureID); | ||||
| @@ -599,9 +599,6 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| struct StateHelpers | struct StateHelpers | ||||
| { | { | ||||
| struct ActiveTextures; | |||||
| //============================================================================== | |||||
| struct BlendingMode | struct BlendingMode | ||||
| { | { | ||||
| BlendingMode() noexcept | BlendingMode() noexcept | ||||
| @@ -742,8 +739,7 @@ struct StateHelpers | |||||
| void clear() noexcept | void clear() noexcept | ||||
| { | { | ||||
| for (int i = 0; i < numElementsInArray (currentTextureID); ++i) | |||||
| currentTextureID[i] = 0; | |||||
| zeromem (currentTextureID, sizeof (currentTextureID)); | |||||
| } | } | ||||
| void clearCurrent() noexcept | void clearCurrent() noexcept | ||||
| @@ -774,7 +770,7 @@ struct StateHelpers | |||||
| currentTextureID[i] = 0; | currentTextureID[i] = 0; | ||||
| } | } | ||||
| JUCE_CHECK_OPENGL_ERROR | |||||
| clearGLError(); | |||||
| #endif | #endif | ||||
| } | } | ||||
| } | } | ||||
| @@ -1054,13 +1050,13 @@ struct StateHelpers | |||||
| : context (context_), | : context (context_), | ||||
| activeShader (nullptr) | activeShader (nullptr) | ||||
| { | { | ||||
| const Identifier programValueID ("GraphicsContextPrograms"); | |||||
| programs = dynamic_cast <ShaderPrograms*> (context.properties [programValueID].getObject()); | |||||
| const char programValueID[] = "GraphicsContextPrograms"; | |||||
| programs = static_cast <ShaderPrograms*> (context.getAssociatedObject (programValueID).getObject()); | |||||
| if (programs == nullptr) | if (programs == nullptr) | ||||
| { | { | ||||
| programs = new ShaderPrograms (context); | programs = new ShaderPrograms (context); | ||||
| context.properties.set (programValueID, var (programs)); | |||||
| context.setAssociatedObject (programValueID, programs); | |||||
| } | } | ||||
| } | } | ||||
| @@ -2188,6 +2184,7 @@ public: | |||||
| #if ! JUCE_ANDROID | #if ! JUCE_ANDROID | ||||
| target.context.extensions.glActiveTexture (GL_TEXTURE0); | target.context.extensions.glActiveTexture (GL_TEXTURE0); | ||||
| glEnable (GL_TEXTURE_2D); | glEnable (GL_TEXTURE_2D); | ||||
| clearGLError(); | |||||
| #endif | #endif | ||||
| OpenGLTexture texture; | OpenGLTexture texture; | ||||
| @@ -2217,20 +2214,17 @@ LowLevelGraphicsContext* createOpenGLContext (const Target& target) | |||||
| return new ShaderContext (target); | return new ShaderContext (target); | ||||
| #endif | #endif | ||||
| Image tempImage (Image::ARGB, target.bounds.getWidth(), target.bounds.getHeight(), true); | |||||
| Image tempImage (Image::ARGB, target.bounds.getWidth(), target.bounds.getHeight(), true, SoftwareImageType()); | |||||
| return new NonShaderContext (target, tempImage); | return new NonShaderContext (target, tempImage); | ||||
| } | } | ||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLComponent& target) | |||||
| LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& context) | |||||
| { | { | ||||
| OpenGLContext* const context = target.getCurrentContext(); | |||||
| jassert (context != nullptr); // must have a valid context when this is called! | |||||
| return createOpenGLGraphicsContext (*context, context->getFrameBufferID(), | |||||
| context->getWidth(), context->getHeight()); | |||||
| return createOpenGLGraphicsContext (context, context.getFrameBufferID(), | |||||
| context.getWidth(), context.getHeight()); | |||||
| } | } | ||||
| LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& context, OpenGLFrameBuffer& target) | LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& context, OpenGLFrameBuffer& target) | ||||
| @@ -27,11 +27,10 @@ | |||||
| #define __JUCE_OPENGLGRAPHICSCONTEXT_JUCEHEADER__ | #define __JUCE_OPENGLGRAPHICSCONTEXT_JUCEHEADER__ | ||||
| //============================================================================== | |||||
| /** Creates a graphics context object that will render into the given OpenGL target. | /** Creates a graphics context object that will render into the given OpenGL target. | ||||
| The caller is responsible for deleting this object when no longer needed. | The caller is responsible for deleting this object when no longer needed. | ||||
| */ | */ | ||||
| LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLComponent& target); | |||||
| LowLevelGraphicsContext* createOpenGLGraphicsContext (OpenGLContext& target); | |||||
| /** Creates a graphics context object that will render into the given OpenGL target. | /** Creates a graphics context object that will render into the given OpenGL target. | ||||
| The caller is responsible for deleting this object when no longer needed. | The caller is responsible for deleting this object when no longer needed. | ||||
| @@ -0,0 +1,88 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| OpenGLPixelFormat::OpenGLPixelFormat (const int bitsPerRGBComponent, | |||||
| const int alphaBits_, | |||||
| const int depthBufferBits_, | |||||
| const int stencilBufferBits_) noexcept | |||||
| : redBits (bitsPerRGBComponent), | |||||
| greenBits (bitsPerRGBComponent), | |||||
| blueBits (bitsPerRGBComponent), | |||||
| alphaBits (alphaBits_), | |||||
| depthBufferBits (depthBufferBits_), | |||||
| stencilBufferBits (stencilBufferBits_), | |||||
| accumulationBufferRedBits (0), | |||||
| accumulationBufferGreenBits (0), | |||||
| accumulationBufferBlueBits (0), | |||||
| accumulationBufferAlphaBits (0), | |||||
| multisamplingLevel (0) | |||||
| { | |||||
| } | |||||
| OpenGLPixelFormat::OpenGLPixelFormat (const OpenGLPixelFormat& other) noexcept | |||||
| : redBits (other.redBits), | |||||
| greenBits (other.greenBits), | |||||
| blueBits (other.blueBits), | |||||
| alphaBits (other.alphaBits), | |||||
| depthBufferBits (other.depthBufferBits), | |||||
| stencilBufferBits (other.stencilBufferBits), | |||||
| accumulationBufferRedBits (other.accumulationBufferRedBits), | |||||
| accumulationBufferGreenBits (other.accumulationBufferGreenBits), | |||||
| accumulationBufferBlueBits (other.accumulationBufferBlueBits), | |||||
| accumulationBufferAlphaBits (other.accumulationBufferAlphaBits), | |||||
| multisamplingLevel (other.multisamplingLevel) | |||||
| { | |||||
| } | |||||
| OpenGLPixelFormat& OpenGLPixelFormat::operator= (const OpenGLPixelFormat& other) noexcept | |||||
| { | |||||
| redBits = other.redBits; | |||||
| greenBits = other.greenBits; | |||||
| blueBits = other.blueBits; | |||||
| alphaBits = other.alphaBits; | |||||
| depthBufferBits = other.depthBufferBits; | |||||
| stencilBufferBits = other.stencilBufferBits; | |||||
| accumulationBufferRedBits = other.accumulationBufferRedBits; | |||||
| accumulationBufferGreenBits = other.accumulationBufferGreenBits; | |||||
| accumulationBufferBlueBits = other.accumulationBufferBlueBits; | |||||
| accumulationBufferAlphaBits = other.accumulationBufferAlphaBits; | |||||
| multisamplingLevel = other.multisamplingLevel; | |||||
| return *this; | |||||
| } | |||||
| bool OpenGLPixelFormat::operator== (const OpenGLPixelFormat& other) const noexcept | |||||
| { | |||||
| return redBits == other.redBits | |||||
| && greenBits == other.greenBits | |||||
| && blueBits == other.blueBits | |||||
| && alphaBits == other.alphaBits | |||||
| && depthBufferBits == other.depthBufferBits | |||||
| && stencilBufferBits == other.stencilBufferBits | |||||
| && accumulationBufferRedBits == other.accumulationBufferRedBits | |||||
| && accumulationBufferGreenBits == other.accumulationBufferGreenBits | |||||
| && accumulationBufferBlueBits == other.accumulationBufferBlueBits | |||||
| && accumulationBufferAlphaBits == other.accumulationBufferAlphaBits | |||||
| && multisamplingLevel == other.multisamplingLevel; | |||||
| } | |||||