Browse Source

OpenGL refactoring (stage 1)

tags/2021-05-28
jules 13 years ago
parent
commit
91a41ddbd8
33 changed files with 1559 additions and 1988 deletions
  1. +2
    -1
      extras/JuceDemo/Builds/Android/src/com/juce/JuceDemo.java
  2. +13
    -15
      extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj
  3. +15
    -43
      extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj
  4. +15
    -43
      extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj
  5. +8
    -13
      extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj
  6. +18
    -21
      extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
  7. +13
    -15
      extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj
  8. +26
    -51
      extras/JuceDemo/Source/MainDemoWindow.cpp
  9. +21
    -9
      extras/JuceDemo/Source/demos/OpenGLDemo.cpp
  10. +13
    -15
      extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj
  11. +15
    -43
      extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
  12. +15
    -43
      extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj
  13. +13
    -15
      extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj
  14. +15
    -43
      extras/static library/Builds/VisualStudio2008/juce.vcproj
  15. +8
    -13
      extras/static library/Builds/VisualStudio2010/juce.vcxproj
  16. +18
    -21
      extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters
  17. +2
    -1
      modules/juce_core/native/java/JuceAppActivity.java
  18. +13
    -16
      modules/juce_opengl/juce_opengl.cpp
  19. +2
    -6
      modules/juce_opengl/juce_opengl.h
  20. +204
    -0
      modules/juce_opengl/native/juce_OpenGL_android.h
  21. +93
    -81
      modules/juce_opengl/native/juce_OpenGL_ios.h
  22. +60
    -74
      modules/juce_opengl/native/juce_OpenGL_linux.h
  23. +35
    -52
      modules/juce_opengl/native/juce_OpenGL_osx.h
  24. +119
    -150
      modules/juce_opengl/native/juce_OpenGL_win32.h
  25. +0
    -234
      modules/juce_opengl/native/juce_android_OpenGLComponent.cpp
  26. +0
    -535
      modules/juce_opengl/opengl/juce_OpenGLComponent.cpp
  27. +0
    -281
      modules/juce_opengl/opengl/juce_OpenGLComponent.h
  28. +579
    -90
      modules/juce_opengl/opengl/juce_OpenGLContext.cpp
  29. +111
    -39
      modules/juce_opengl/opengl/juce_OpenGLContext.h
  30. +14
    -7
      modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp
  31. +10
    -16
      modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp
  32. +1
    -2
      modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h
  33. +88
    -0
      modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp

+ 2
- 1
extras/JuceDemo/Builds/Android/src/com/juce/JuceDemo.java View File

@@ -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();
} }


+ 13
- 15
extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj View File

@@ -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,


+ 15
- 43
extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj View File

@@ -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"


+ 15
- 43
extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj View File

@@ -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"


+ 8
- 13
extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj View File

@@ -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"/>


+ 18
- 21
extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters View File

@@ -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>


+ 13
- 15
extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj View File

@@ -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,


+ 26
- 51
extras/JuceDemo/Source/MainDemoWindow.cpp View File

@@ -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());


+ 21
- 9
extras/JuceDemo/Source/demos/OpenGLDemo.cpp View File

@@ -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;


+ 13
- 15
extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj View File

@@ -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,


+ 15
- 43
extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj View File

@@ -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"


+ 15
- 43
extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj View File

@@ -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"


+ 13
- 15
extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj View File

@@ -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,


+ 15
- 43
extras/static library/Builds/VisualStudio2008/juce.vcproj View File

@@ -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"


+ 8
- 13
extras/static library/Builds/VisualStudio2010/juce.vcxproj View File

@@ -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"/>


+ 18
- 21
extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters View File

@@ -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>


+ 2
- 1
modules/juce_core/native/java/JuceAppActivity.java View File

@@ -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();
} }


+ 13
- 16
modules/juce_opengl/juce_opengl.cpp View File

@@ -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"
} }

+ 2
- 6
modules/juce_opengl/juce_opengl.h View File

@@ -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


+ 204
- 0
modules/juce_opengl/native/juce_OpenGL_android.h View File

@@ -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();
}

modules/juce_opengl/native/juce_ios_OpenGLComponent.mm → modules/juce_opengl/native/juce_OpenGL_ios.h View File

@@ -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()
{ {

modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp → modules/juce_opengl/native/juce_OpenGL_linux.h View File

@@ -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()
{ {

modules/juce_opengl/native/juce_mac_OpenGLComponent.mm → modules/juce_opengl/native/juce_OpenGL_osx.h View File

@@ -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()
{ {

modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp → modules/juce_opengl/native/juce_OpenGL_win32.h View File

@@ -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()

+ 0
- 234
modules/juce_opengl/native/juce_android_OpenGLComponent.cpp View File

@@ -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();
}

+ 0
- 535
modules/juce_opengl/opengl/juce_OpenGLComponent.cpp View File

@@ -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&) {}

+ 0
- 281
modules/juce_opengl/opengl/juce_OpenGLComponent.h View File

@@ -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__

+ 579
- 90
modules/juce_opengl/opengl/juce_OpenGLContext.cpp View File

@@ -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 ? &currentContext->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
} }

+ 111
- 39
modules/juce_opengl/opengl/juce_OpenGLContext.h View File

@@ -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__

+ 14
- 7
modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp View File

@@ -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);


+ 10
- 16
modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp View File

@@ -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)


+ 1
- 2
modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.h View File

@@ -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.


+ 88
- 0
modules/juce_opengl/opengl/juce_OpenGLPixelFormat.cpp View File

@@ -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;
}

Loading…
Cancel
Save