@@ -330,6 +330,22 @@ OBJECTS := \ | |||||
$(OBJDIR)/juce_win32_WASAPI_c7c6c3c3.o \ | $(OBJDIR)/juce_win32_WASAPI_c7c6c3c3.o \ | ||||
$(OBJDIR)/juce_win32_WebBrowserComponent_2a4dd461.o \ | $(OBJDIR)/juce_win32_WebBrowserComponent_2a4dd461.o \ | ||||
$(OBJDIR)/juce_win32_Windowing_635b4f6a.o \ | $(OBJDIR)/juce_win32_Windowing_635b4f6a.o \ | ||||
$(OBJDIR)/juce_android_Audio_93f83bd6.o \ | |||||
$(OBJDIR)/juce_android_CameraDevice_d2743865.o \ | |||||
$(OBJDIR)/juce_android_FileChooser_205cbb5f.o \ | |||||
$(OBJDIR)/juce_android_Files_3b5721f7.o \ | |||||
$(OBJDIR)/juce_android_Fonts_2e035704.o \ | |||||
$(OBJDIR)/juce_android_GraphicsContext_d0fb27e4.o \ | |||||
$(OBJDIR)/juce_android_Messaging_59717284.o \ | |||||
$(OBJDIR)/juce_android_Midi_4fa64fab.o \ | |||||
$(OBJDIR)/juce_android_Misc_68ea73f6.o \ | |||||
$(OBJDIR)/juce_android_NativeCode_dc186dee.o \ | |||||
$(OBJDIR)/juce_android_Network_28d2276e.o \ | |||||
$(OBJDIR)/juce_android_OpenGLComponent_8fd9ef4e.o \ | |||||
$(OBJDIR)/juce_android_SystemStats_848ae670.o \ | |||||
$(OBJDIR)/juce_android_Threads_10a24b69.o \ | |||||
$(OBJDIR)/juce_android_WebBrowserComponent_178c6569.o \ | |||||
$(OBJDIR)/juce_android_Windowing_2a620a72.o \ | |||||
$(OBJDIR)/juce_CharacterFunctions_b1a5ac62.o \ | $(OBJDIR)/juce_CharacterFunctions_b1a5ac62.o \ | ||||
$(OBJDIR)/juce_Identifier_e99ee619.o \ | $(OBJDIR)/juce_Identifier_e99ee619.o \ | ||||
$(OBJDIR)/juce_LocalisedStrings_3ddfa55e.o \ | $(OBJDIR)/juce_LocalisedStrings_3ddfa55e.o \ | ||||
@@ -1820,6 +1836,86 @@ $(OBJDIR)/juce_win32_Windowing_635b4f6a.o: ../../src/native/windows/juce_win32_W | |||||
@echo "Compiling juce_win32_Windowing.cpp" | @echo "Compiling juce_win32_Windowing.cpp" | ||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
$(OBJDIR)/juce_android_Audio_93f83bd6.o: ../../src/native/android/juce_android_Audio.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Audio.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_CameraDevice_d2743865.o: ../../src/native/android/juce_android_CameraDevice.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_CameraDevice.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_FileChooser_205cbb5f.o: ../../src/native/android/juce_android_FileChooser.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_FileChooser.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Files_3b5721f7.o: ../../src/native/android/juce_android_Files.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Files.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Fonts_2e035704.o: ../../src/native/android/juce_android_Fonts.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Fonts.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_GraphicsContext_d0fb27e4.o: ../../src/native/android/juce_android_GraphicsContext.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_GraphicsContext.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Messaging_59717284.o: ../../src/native/android/juce_android_Messaging.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Messaging.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Midi_4fa64fab.o: ../../src/native/android/juce_android_Midi.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Midi.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Misc_68ea73f6.o: ../../src/native/android/juce_android_Misc.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Misc.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_NativeCode_dc186dee.o: ../../src/native/android/juce_android_NativeCode.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_NativeCode.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Network_28d2276e.o: ../../src/native/android/juce_android_Network.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Network.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_OpenGLComponent_8fd9ef4e.o: ../../src/native/android/juce_android_OpenGLComponent.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_OpenGLComponent.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_SystemStats_848ae670.o: ../../src/native/android/juce_android_SystemStats.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_SystemStats.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Threads_10a24b69.o: ../../src/native/android/juce_android_Threads.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Threads.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_WebBrowserComponent_178c6569.o: ../../src/native/android/juce_android_WebBrowserComponent.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_WebBrowserComponent.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_android_Windowing_2a620a72.o: ../../src/native/android/juce_android_Windowing.cpp | |||||
-@mkdir -p $(OBJDIR) | |||||
@echo "Compiling juce_android_Windowing.cpp" | |||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
$(OBJDIR)/juce_CharacterFunctions_b1a5ac62.o: ../../src/text/juce_CharacterFunctions.cpp | $(OBJDIR)/juce_CharacterFunctions_b1a5ac62.o: ../../src/text/juce_CharacterFunctions.cpp | ||||
-@mkdir -p $(OBJDIR) | -@mkdir -p $(OBJDIR) | ||||
@echo "Compiling juce_CharacterFunctions.cpp" | @echo "Compiling juce_CharacterFunctions.cpp" | ||||
@@ -325,6 +325,22 @@ | |||||
6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; }; | 6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; }; | ||||
B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; }; | B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; }; | ||||
379B4A89E5403B57A2009E76 = { isa = PBXBuildFile; fileRef = 8E8BE2F1C182E418BBA6903C; }; | 379B4A89E5403B57A2009E76 = { isa = PBXBuildFile; fileRef = 8E8BE2F1C182E418BBA6903C; }; | ||||
6ED121D4FEE575408B9612AB = { isa = PBXBuildFile; fileRef = 03B9D3D9042E85BDD691325E; }; | |||||
9ADE436BC62FB84E297C1CA0 = { isa = PBXBuildFile; fileRef = 13C661B79E1E9508512A6B21; }; | |||||
03D534E5B18011C3E03CDD40 = { isa = PBXBuildFile; fileRef = F2F68E50F42BD0F124E89E2C; }; | |||||
06E2ED69E9FAC199D559F276 = { isa = PBXBuildFile; fileRef = 59C46E289F86C80D4341EAA3; }; | |||||
9801CCC32F01818B39CFD88E = { isa = PBXBuildFile; fileRef = FA82460758BDCB2DCCE1EAAA; }; | |||||
FE553DDF4F83DABF13DF4A2B = { isa = PBXBuildFile; fileRef = CE06EEED7426AA45C27B629C; }; | |||||
68DB48B0EC9E5E37C6B5281C = { isa = PBXBuildFile; fileRef = 1D74C9567283836ECC70E48B; }; | |||||
96E9017FBE104E9EADC586B1 = { isa = PBXBuildFile; fileRef = 40216CE846A54CE706131A23; }; | |||||
BA6C6EF4C88D49C640DA7BF6 = { isa = PBXBuildFile; fileRef = E646726910F110DC34DD1662; }; | |||||
0B124D9CE361014F815A5958 = { isa = PBXBuildFile; fileRef = 9AF9F1C0D766D4F894E4A7B0; }; | |||||
C701E3FCB168A3B4A31C4242 = { isa = PBXBuildFile; fileRef = A404CD721E2A0F0CAE9326C5; }; | |||||
04F6D85CCF26A7F6DE589876 = { isa = PBXBuildFile; fileRef = 32B7C3609BDA01AA09740139; }; | |||||
62912A2DA2F01212517938E7 = { isa = PBXBuildFile; fileRef = CEF7210E311274F1DFAB6882; }; | |||||
36D770FCDAC86084A495B96E = { isa = PBXBuildFile; fileRef = 755C440534C0EB494572B3F3; }; | |||||
DA2A4714F1A6957A4F2B8D48 = { isa = PBXBuildFile; fileRef = EE855319AF344A05C92580C7; }; | |||||
CE9A64287FCEF00DD2BA6AEE = { isa = PBXBuildFile; fileRef = FCD02A40985242A8A6648311; }; | |||||
2AC6F3BFAAA21E21076A9F8D = { isa = PBXBuildFile; fileRef = 76E2084D2148068F9138A816; }; | 2AC6F3BFAAA21E21076A9F8D = { isa = PBXBuildFile; fileRef = 76E2084D2148068F9138A816; }; | ||||
B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; }; | B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; }; | ||||
63BEC07A51CB8E516B38ECD4 = { isa = PBXBuildFile; fileRef = 4A97C8D2FF6454DDD3AF4BE5; }; | 63BEC07A51CB8E516B38ECD4 = { isa = PBXBuildFile; fileRef = 4A97C8D2FF6454DDD3AF4BE5; }; | ||||
@@ -997,6 +1013,23 @@ | |||||
5D32C8856093B33438AEB758 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WASAPI.cpp; path = ../../src/native/windows/juce_win32_WASAPI.cpp; sourceTree = SOURCE_ROOT; }; | 5D32C8856093B33438AEB758 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WASAPI.cpp; path = ../../src/native/windows/juce_win32_WASAPI.cpp; sourceTree = SOURCE_ROOT; }; | ||||
8758E6857070D7E5406FDE3F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../src/native/windows/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | 8758E6857070D7E5406FDE3F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../src/native/windows/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | ||||
8E8BE2F1C182E418BBA6903C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../src/native/windows/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | 8E8BE2F1C182E418BBA6903C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../src/native/windows/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | ||||
03B9D3D9042E85BDD691325E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Audio.cpp; path = ../../src/native/android/juce_android_Audio.cpp; sourceTree = SOURCE_ROOT; }; | |||||
13C661B79E1E9508512A6B21 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_CameraDevice.cpp; path = ../../src/native/android/juce_android_CameraDevice.cpp; sourceTree = SOURCE_ROOT; }; | |||||
F2F68E50F42BD0F124E89E2C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_FileChooser.cpp; path = ../../src/native/android/juce_android_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; | |||||
59C46E289F86C80D4341EAA3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Files.cpp; path = ../../src/native/android/juce_android_Files.cpp; sourceTree = SOURCE_ROOT; }; | |||||
FA82460758BDCB2DCCE1EAAA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Fonts.cpp; path = ../../src/native/android/juce_android_Fonts.cpp; sourceTree = SOURCE_ROOT; }; | |||||
CE06EEED7426AA45C27B629C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_GraphicsContext.cpp; path = ../../src/native/android/juce_android_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; | |||||
1D74C9567283836ECC70E48B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Messaging.cpp; path = ../../src/native/android/juce_android_Messaging.cpp; sourceTree = SOURCE_ROOT; }; | |||||
40216CE846A54CE706131A23 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Midi.cpp; path = ../../src/native/android/juce_android_Midi.cpp; sourceTree = SOURCE_ROOT; }; | |||||
E646726910F110DC34DD1662 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Misc.cpp; path = ../../src/native/android/juce_android_Misc.cpp; sourceTree = SOURCE_ROOT; }; | |||||
9AF9F1C0D766D4F894E4A7B0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_NativeCode.cpp; path = ../../src/native/android/juce_android_NativeCode.cpp; sourceTree = SOURCE_ROOT; }; | |||||
902C32F471DA6C435E80372B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_android_NativeIncludes.h; path = ../../src/native/android/juce_android_NativeIncludes.h; sourceTree = SOURCE_ROOT; }; | |||||
A404CD721E2A0F0CAE9326C5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Network.cpp; path = ../../src/native/android/juce_android_Network.cpp; sourceTree = SOURCE_ROOT; }; | |||||
32B7C3609BDA01AA09740139 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_OpenGLComponent.cpp; path = ../../src/native/android/juce_android_OpenGLComponent.cpp; sourceTree = SOURCE_ROOT; }; | |||||
CEF7210E311274F1DFAB6882 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_SystemStats.cpp; path = ../../src/native/android/juce_android_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; | |||||
755C440534C0EB494572B3F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Threads.cpp; path = ../../src/native/android/juce_android_Threads.cpp; sourceTree = SOURCE_ROOT; }; | |||||
EE855319AF344A05C92580C7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_WebBrowserComponent.cpp; path = ../../src/native/android/juce_android_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | |||||
FCD02A40985242A8A6648311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Windowing.cpp; path = ../../src/native/android/juce_android_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | |||||
76E2084D2148068F9138A816 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../src/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; | 76E2084D2148068F9138A816 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../src/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; | ||||
33F16EE4F38C9B76E7FAEF78 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../src/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; | 33F16EE4F38C9B76E7FAEF78 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../src/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; | ||||
4007410FACA2F865FD8EF769 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../src/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; | 4007410FACA2F865FD8EF769 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../src/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; | ||||
@@ -1798,11 +1831,30 @@ | |||||
5D32C8856093B33438AEB758, | 5D32C8856093B33438AEB758, | ||||
8758E6857070D7E5406FDE3F, | 8758E6857070D7E5406FDE3F, | ||||
8E8BE2F1C182E418BBA6903C ); name = windows; sourceTree = "<group>"; }; | 8E8BE2F1C182E418BBA6903C ); name = windows; sourceTree = "<group>"; }; | ||||
FBE56423C0482E49EF317C85 = { isa = PBXGroup; children = ( | |||||
03B9D3D9042E85BDD691325E, | |||||
13C661B79E1E9508512A6B21, | |||||
F2F68E50F42BD0F124E89E2C, | |||||
59C46E289F86C80D4341EAA3, | |||||
FA82460758BDCB2DCCE1EAAA, | |||||
CE06EEED7426AA45C27B629C, | |||||
1D74C9567283836ECC70E48B, | |||||
40216CE846A54CE706131A23, | |||||
E646726910F110DC34DD1662, | |||||
9AF9F1C0D766D4F894E4A7B0, | |||||
902C32F471DA6C435E80372B, | |||||
A404CD721E2A0F0CAE9326C5, | |||||
32B7C3609BDA01AA09740139, | |||||
CEF7210E311274F1DFAB6882, | |||||
755C440534C0EB494572B3F3, | |||||
EE855319AF344A05C92580C7, | |||||
FCD02A40985242A8A6648311 ); name = android; sourceTree = "<group>"; }; | |||||
B3E58752D519C56B78A95ACE = { isa = PBXGroup; children = ( | B3E58752D519C56B78A95ACE = { isa = PBXGroup; children = ( | ||||
DDB94A7300C3D1F2E9E51C47, | DDB94A7300C3D1F2E9E51C47, | ||||
1004A23965A4DB0FCC441ED3, | 1004A23965A4DB0FCC441ED3, | ||||
13513EE40AD6BAB30E26C88B, | 13513EE40AD6BAB30E26C88B, | ||||
64DE2D4534D79E74C40A0DEE ); name = native; sourceTree = "<group>"; }; | |||||
64DE2D4534D79E74C40A0DEE, | |||||
FBE56423C0482E49EF317C85 ); name = native; sourceTree = "<group>"; }; | |||||
C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = ( | C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = ( | ||||
76E2084D2148068F9138A816, | 76E2084D2148068F9138A816, | ||||
33F16EE4F38C9B76E7FAEF78, | 33F16EE4F38C9B76E7FAEF78, | ||||
@@ -2281,6 +2333,22 @@ | |||||
6801797B247CB3A6890C0AB0, | 6801797B247CB3A6890C0AB0, | ||||
B0B82AB2D9B0950F67B11BEA, | B0B82AB2D9B0950F67B11BEA, | ||||
379B4A89E5403B57A2009E76, | 379B4A89E5403B57A2009E76, | ||||
6ED121D4FEE575408B9612AB, | |||||
9ADE436BC62FB84E297C1CA0, | |||||
03D534E5B18011C3E03CDD40, | |||||
06E2ED69E9FAC199D559F276, | |||||
9801CCC32F01818B39CFD88E, | |||||
FE553DDF4F83DABF13DF4A2B, | |||||
68DB48B0EC9E5E37C6B5281C, | |||||
96E9017FBE104E9EADC586B1, | |||||
BA6C6EF4C88D49C640DA7BF6, | |||||
0B124D9CE361014F815A5958, | |||||
C701E3FCB168A3B4A31C4242, | |||||
04F6D85CCF26A7F6DE589876, | |||||
62912A2DA2F01212517938E7, | |||||
36D770FCDAC86084A495B96E, | |||||
DA2A4714F1A6957A4F2B8D48, | |||||
CE9A64287FCEF00DD2BA6AEE, | |||||
2AC6F3BFAAA21E21076A9F8D, | 2AC6F3BFAAA21E21076A9F8D, | ||||
B8DD4DB0BD1A6B38BBF92413, | B8DD4DB0BD1A6B38BBF92413, | ||||
63BEC07A51CB8E516B38ECD4, | 63BEC07A51CB8E516B38ECD4, | ||||
@@ -933,6 +933,25 @@ | |||||
<File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | ||||
<File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | ||||
</Filter> | </Filter> | ||||
<Filter Name="android"> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Audio.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_CameraDevice.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_FileChooser.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Files.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Fonts.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_GraphicsContext.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Messaging.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Midi.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Misc.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeCode.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeIncludes.h"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Network.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_OpenGLComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_SystemStats.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Threads.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Windowing.cpp"/> | |||||
</Filter> | |||||
</Filter> | </Filter> | ||||
<Filter Name="text"> | <Filter Name="text"> | ||||
<File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | <File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | ||||
@@ -933,6 +933,25 @@ | |||||
<File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | ||||
<File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | ||||
</Filter> | </Filter> | ||||
<Filter Name="android"> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Audio.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_CameraDevice.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_FileChooser.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Files.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Fonts.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_GraphicsContext.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Messaging.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Midi.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Misc.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeCode.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeIncludes.h"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Network.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_OpenGLComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_SystemStats.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Threads.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Windowing.cpp"/> | |||||
</Filter> | |||||
</Filter> | </Filter> | ||||
<Filter Name="text"> | <Filter Name="text"> | ||||
<File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | <File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | ||||
@@ -935,6 +935,25 @@ | |||||
<File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | ||||
<File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | <File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | ||||
</Filter> | </Filter> | ||||
<Filter Name="android"> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Audio.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_CameraDevice.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_FileChooser.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Files.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Fonts.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_GraphicsContext.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Messaging.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Midi.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Misc.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeCode.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_NativeIncludes.h"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Network.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_OpenGLComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_SystemStats.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Threads.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"/> | |||||
<File RelativePath="..\..\src\native\android\juce_android_Windowing.cpp"/> | |||||
</Filter> | |||||
</Filter> | </Filter> | ||||
<Filter Name="text"> | <Filter Name="text"> | ||||
<File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | <File RelativePath="..\..\src\text\juce_CharacterFunctions.cpp"/> | ||||
@@ -413,6 +413,22 @@ | |||||
<ClCompile Include="..\..\src\native\windows\juce_win32_WASAPI.cpp"/> | <ClCompile Include="..\..\src\native\windows\juce_win32_WASAPI.cpp"/> | ||||
<ClCompile Include="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | <ClCompile Include="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/> | ||||
<ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | <ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp"/> | ||||
<ClCompile Include="..\..\src\native\android\juce_android_Audio.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_CameraDevice.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_FileChooser.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Files.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Fonts.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_GraphicsContext.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Messaging.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Midi.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Misc.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_NativeCode.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Network.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_OpenGLComponent.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_SystemStats.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Threads.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"/> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Windowing.cpp"/> | |||||
<ClCompile Include="..\..\src\text\juce_CharacterFunctions.cpp"/> | <ClCompile Include="..\..\src\text\juce_CharacterFunctions.cpp"/> | ||||
<ClCompile Include="..\..\src\text\juce_Identifier.cpp"/> | <ClCompile Include="..\..\src\text\juce_Identifier.cpp"/> | ||||
<ClCompile Include="..\..\src\text\juce_LocalisedStrings.cpp"/> | <ClCompile Include="..\..\src\text\juce_LocalisedStrings.cpp"/> | ||||
@@ -756,6 +772,7 @@ | |||||
<ClInclude Include="..\..\src\native\windows\juce_win32_AutoLinkLibraries.h"/> | <ClInclude Include="..\..\src\native\windows\juce_win32_AutoLinkLibraries.h"/> | ||||
<ClInclude Include="..\..\src\native\windows\juce_win32_DynamicLibraryLoader.h"/> | <ClInclude Include="..\..\src\native\windows\juce_win32_DynamicLibraryLoader.h"/> | ||||
<ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"/> | <ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"/> | ||||
<ClInclude Include="..\..\src\native\android\juce_android_NativeIncludes.h"/> | |||||
<ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"/> | <ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"/> | ||||
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF8.h"/> | <ClInclude Include="..\..\src\text\juce_CharPointer_UTF8.h"/> | ||||
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF16.h"/> | <ClInclude Include="..\..\src\text\juce_CharPointer_UTF16.h"/> | ||||
@@ -173,6 +173,9 @@ | |||||
<Filter Include="Juce\Source\native\windows"> | <Filter Include="Juce\Source\native\windows"> | ||||
<UniqueIdentifier>{CFBC5FA1-5A68-B012-A852-1D798CD2CBDF}</UniqueIdentifier> | <UniqueIdentifier>{CFBC5FA1-5A68-B012-A852-1D798CD2CBDF}</UniqueIdentifier> | ||||
</Filter> | </Filter> | ||||
<Filter Include="Juce\Source\native\android"> | |||||
<UniqueIdentifier>{31BF14BA-F3B3-9EAE-8D43-0972CA67D1CF}</UniqueIdentifier> | |||||
</Filter> | |||||
<Filter Include="Juce\Source\text"> | <Filter Include="Juce\Source\text"> | ||||
<UniqueIdentifier>{56CD7BE1-9B0B-A873-6126-8F47C2268CD3}</UniqueIdentifier> | <UniqueIdentifier>{56CD7BE1-9B0B-A873-6126-8F47C2268CD3}</UniqueIdentifier> | ||||
</Filter> | </Filter> | ||||
@@ -1174,6 +1177,54 @@ | |||||
<ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp"> | <ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp"> | ||||
<Filter>Juce\Source\native\windows</Filter> | <Filter>Juce\Source\native\windows</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="..\..\src\native\android\juce_android_Audio.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_CameraDevice.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_FileChooser.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Files.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Fonts.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_GraphicsContext.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Messaging.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Midi.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Misc.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_NativeCode.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Network.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_OpenGLComponent.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_SystemStats.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Threads.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_WebBrowserComponent.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\native\android\juce_android_Windowing.cpp"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="..\..\src\text\juce_CharacterFunctions.cpp"> | <ClCompile Include="..\..\src\text\juce_CharacterFunctions.cpp"> | ||||
<Filter>Juce\Source\text</Filter> | <Filter>Juce\Source\text</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
@@ -2199,6 +2250,9 @@ | |||||
<ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"> | <ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"> | ||||
<Filter>Juce\Source\native\windows</Filter> | <Filter>Juce\Source\native\windows</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="..\..\src\native\android\juce_android_NativeIncludes.h"> | |||||
<Filter>Juce\Source\native\android</Filter> | |||||
</ClInclude> | |||||
<ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"> | <ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"> | ||||
<Filter>Juce\Source\text</Filter> | <Filter>Juce\Source\text</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
@@ -325,6 +325,22 @@ | |||||
6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; }; | 6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; }; | ||||
B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; }; | B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; }; | ||||
379B4A89E5403B57A2009E76 = { isa = PBXBuildFile; fileRef = 8E8BE2F1C182E418BBA6903C; }; | 379B4A89E5403B57A2009E76 = { isa = PBXBuildFile; fileRef = 8E8BE2F1C182E418BBA6903C; }; | ||||
6ED121D4FEE575408B9612AB = { isa = PBXBuildFile; fileRef = 03B9D3D9042E85BDD691325E; }; | |||||
9ADE436BC62FB84E297C1CA0 = { isa = PBXBuildFile; fileRef = 13C661B79E1E9508512A6B21; }; | |||||
03D534E5B18011C3E03CDD40 = { isa = PBXBuildFile; fileRef = F2F68E50F42BD0F124E89E2C; }; | |||||
06E2ED69E9FAC199D559F276 = { isa = PBXBuildFile; fileRef = 59C46E289F86C80D4341EAA3; }; | |||||
9801CCC32F01818B39CFD88E = { isa = PBXBuildFile; fileRef = FA82460758BDCB2DCCE1EAAA; }; | |||||
FE553DDF4F83DABF13DF4A2B = { isa = PBXBuildFile; fileRef = CE06EEED7426AA45C27B629C; }; | |||||
68DB48B0EC9E5E37C6B5281C = { isa = PBXBuildFile; fileRef = 1D74C9567283836ECC70E48B; }; | |||||
96E9017FBE104E9EADC586B1 = { isa = PBXBuildFile; fileRef = 40216CE846A54CE706131A23; }; | |||||
BA6C6EF4C88D49C640DA7BF6 = { isa = PBXBuildFile; fileRef = E646726910F110DC34DD1662; }; | |||||
0B124D9CE361014F815A5958 = { isa = PBXBuildFile; fileRef = 9AF9F1C0D766D4F894E4A7B0; }; | |||||
C701E3FCB168A3B4A31C4242 = { isa = PBXBuildFile; fileRef = A404CD721E2A0F0CAE9326C5; }; | |||||
04F6D85CCF26A7F6DE589876 = { isa = PBXBuildFile; fileRef = 32B7C3609BDA01AA09740139; }; | |||||
62912A2DA2F01212517938E7 = { isa = PBXBuildFile; fileRef = CEF7210E311274F1DFAB6882; }; | |||||
36D770FCDAC86084A495B96E = { isa = PBXBuildFile; fileRef = 755C440534C0EB494572B3F3; }; | |||||
DA2A4714F1A6957A4F2B8D48 = { isa = PBXBuildFile; fileRef = EE855319AF344A05C92580C7; }; | |||||
CE9A64287FCEF00DD2BA6AEE = { isa = PBXBuildFile; fileRef = FCD02A40985242A8A6648311; }; | |||||
2AC6F3BFAAA21E21076A9F8D = { isa = PBXBuildFile; fileRef = 76E2084D2148068F9138A816; }; | 2AC6F3BFAAA21E21076A9F8D = { isa = PBXBuildFile; fileRef = 76E2084D2148068F9138A816; }; | ||||
B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; }; | B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; }; | ||||
63BEC07A51CB8E516B38ECD4 = { isa = PBXBuildFile; fileRef = 4A97C8D2FF6454DDD3AF4BE5; }; | 63BEC07A51CB8E516B38ECD4 = { isa = PBXBuildFile; fileRef = 4A97C8D2FF6454DDD3AF4BE5; }; | ||||
@@ -997,6 +1013,23 @@ | |||||
5D32C8856093B33438AEB758 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WASAPI.cpp; path = ../../src/native/windows/juce_win32_WASAPI.cpp; sourceTree = SOURCE_ROOT; }; | 5D32C8856093B33438AEB758 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WASAPI.cpp; path = ../../src/native/windows/juce_win32_WASAPI.cpp; sourceTree = SOURCE_ROOT; }; | ||||
8758E6857070D7E5406FDE3F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../src/native/windows/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | 8758E6857070D7E5406FDE3F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_WebBrowserComponent.cpp; path = ../../src/native/windows/juce_win32_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | ||||
8E8BE2F1C182E418BBA6903C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../src/native/windows/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | 8E8BE2F1C182E418BBA6903C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_win32_Windowing.cpp; path = ../../src/native/windows/juce_win32_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | ||||
03B9D3D9042E85BDD691325E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Audio.cpp; path = ../../src/native/android/juce_android_Audio.cpp; sourceTree = SOURCE_ROOT; }; | |||||
13C661B79E1E9508512A6B21 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_CameraDevice.cpp; path = ../../src/native/android/juce_android_CameraDevice.cpp; sourceTree = SOURCE_ROOT; }; | |||||
F2F68E50F42BD0F124E89E2C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_FileChooser.cpp; path = ../../src/native/android/juce_android_FileChooser.cpp; sourceTree = SOURCE_ROOT; }; | |||||
59C46E289F86C80D4341EAA3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Files.cpp; path = ../../src/native/android/juce_android_Files.cpp; sourceTree = SOURCE_ROOT; }; | |||||
FA82460758BDCB2DCCE1EAAA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Fonts.cpp; path = ../../src/native/android/juce_android_Fonts.cpp; sourceTree = SOURCE_ROOT; }; | |||||
CE06EEED7426AA45C27B629C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_GraphicsContext.cpp; path = ../../src/native/android/juce_android_GraphicsContext.cpp; sourceTree = SOURCE_ROOT; }; | |||||
1D74C9567283836ECC70E48B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Messaging.cpp; path = ../../src/native/android/juce_android_Messaging.cpp; sourceTree = SOURCE_ROOT; }; | |||||
40216CE846A54CE706131A23 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Midi.cpp; path = ../../src/native/android/juce_android_Midi.cpp; sourceTree = SOURCE_ROOT; }; | |||||
E646726910F110DC34DD1662 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Misc.cpp; path = ../../src/native/android/juce_android_Misc.cpp; sourceTree = SOURCE_ROOT; }; | |||||
9AF9F1C0D766D4F894E4A7B0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_NativeCode.cpp; path = ../../src/native/android/juce_android_NativeCode.cpp; sourceTree = SOURCE_ROOT; }; | |||||
902C32F471DA6C435E80372B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_android_NativeIncludes.h; path = ../../src/native/android/juce_android_NativeIncludes.h; sourceTree = SOURCE_ROOT; }; | |||||
A404CD721E2A0F0CAE9326C5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Network.cpp; path = ../../src/native/android/juce_android_Network.cpp; sourceTree = SOURCE_ROOT; }; | |||||
32B7C3609BDA01AA09740139 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_OpenGLComponent.cpp; path = ../../src/native/android/juce_android_OpenGLComponent.cpp; sourceTree = SOURCE_ROOT; }; | |||||
CEF7210E311274F1DFAB6882 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_SystemStats.cpp; path = ../../src/native/android/juce_android_SystemStats.cpp; sourceTree = SOURCE_ROOT; }; | |||||
755C440534C0EB494572B3F3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Threads.cpp; path = ../../src/native/android/juce_android_Threads.cpp; sourceTree = SOURCE_ROOT; }; | |||||
EE855319AF344A05C92580C7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_WebBrowserComponent.cpp; path = ../../src/native/android/juce_android_WebBrowserComponent.cpp; sourceTree = SOURCE_ROOT; }; | |||||
FCD02A40985242A8A6648311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_android_Windowing.cpp; path = ../../src/native/android/juce_android_Windowing.cpp; sourceTree = SOURCE_ROOT; }; | |||||
76E2084D2148068F9138A816 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../src/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; | 76E2084D2148068F9138A816 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_CharacterFunctions.cpp; path = ../../src/text/juce_CharacterFunctions.cpp; sourceTree = SOURCE_ROOT; }; | ||||
33F16EE4F38C9B76E7FAEF78 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../src/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; | 33F16EE4F38C9B76E7FAEF78 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharacterFunctions.h; path = ../../src/text/juce_CharacterFunctions.h; sourceTree = SOURCE_ROOT; }; | ||||
4007410FACA2F865FD8EF769 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../src/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; | 4007410FACA2F865FD8EF769 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_CharPointer_UTF8.h; path = ../../src/text/juce_CharPointer_UTF8.h; sourceTree = SOURCE_ROOT; }; | ||||
@@ -1798,11 +1831,30 @@ | |||||
5D32C8856093B33438AEB758, | 5D32C8856093B33438AEB758, | ||||
8758E6857070D7E5406FDE3F, | 8758E6857070D7E5406FDE3F, | ||||
8E8BE2F1C182E418BBA6903C ); name = windows; sourceTree = "<group>"; }; | 8E8BE2F1C182E418BBA6903C ); name = windows; sourceTree = "<group>"; }; | ||||
FBE56423C0482E49EF317C85 = { isa = PBXGroup; children = ( | |||||
03B9D3D9042E85BDD691325E, | |||||
13C661B79E1E9508512A6B21, | |||||
F2F68E50F42BD0F124E89E2C, | |||||
59C46E289F86C80D4341EAA3, | |||||
FA82460758BDCB2DCCE1EAAA, | |||||
CE06EEED7426AA45C27B629C, | |||||
1D74C9567283836ECC70E48B, | |||||
40216CE846A54CE706131A23, | |||||
E646726910F110DC34DD1662, | |||||
9AF9F1C0D766D4F894E4A7B0, | |||||
902C32F471DA6C435E80372B, | |||||
A404CD721E2A0F0CAE9326C5, | |||||
32B7C3609BDA01AA09740139, | |||||
CEF7210E311274F1DFAB6882, | |||||
755C440534C0EB494572B3F3, | |||||
EE855319AF344A05C92580C7, | |||||
FCD02A40985242A8A6648311 ); name = android; sourceTree = "<group>"; }; | |||||
B3E58752D519C56B78A95ACE = { isa = PBXGroup; children = ( | B3E58752D519C56B78A95ACE = { isa = PBXGroup; children = ( | ||||
DDB94A7300C3D1F2E9E51C47, | DDB94A7300C3D1F2E9E51C47, | ||||
1004A23965A4DB0FCC441ED3, | 1004A23965A4DB0FCC441ED3, | ||||
13513EE40AD6BAB30E26C88B, | 13513EE40AD6BAB30E26C88B, | ||||
64DE2D4534D79E74C40A0DEE ); name = native; sourceTree = "<group>"; }; | |||||
64DE2D4534D79E74C40A0DEE, | |||||
FBE56423C0482E49EF317C85 ); name = native; sourceTree = "<group>"; }; | |||||
C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = ( | C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = ( | ||||
76E2084D2148068F9138A816, | 76E2084D2148068F9138A816, | ||||
33F16EE4F38C9B76E7FAEF78, | 33F16EE4F38C9B76E7FAEF78, | ||||
@@ -2285,6 +2337,22 @@ | |||||
6801797B247CB3A6890C0AB0, | 6801797B247CB3A6890C0AB0, | ||||
B0B82AB2D9B0950F67B11BEA, | B0B82AB2D9B0950F67B11BEA, | ||||
379B4A89E5403B57A2009E76, | 379B4A89E5403B57A2009E76, | ||||
6ED121D4FEE575408B9612AB, | |||||
9ADE436BC62FB84E297C1CA0, | |||||
03D534E5B18011C3E03CDD40, | |||||
06E2ED69E9FAC199D559F276, | |||||
9801CCC32F01818B39CFD88E, | |||||
FE553DDF4F83DABF13DF4A2B, | |||||
68DB48B0EC9E5E37C6B5281C, | |||||
96E9017FBE104E9EADC586B1, | |||||
BA6C6EF4C88D49C640DA7BF6, | |||||
0B124D9CE361014F815A5958, | |||||
C701E3FCB168A3B4A31C4242, | |||||
04F6D85CCF26A7F6DE589876, | |||||
62912A2DA2F01212517938E7, | |||||
36D770FCDAC86084A495B96E, | |||||
DA2A4714F1A6957A4F2B8D48, | |||||
CE9A64287FCEF00DD2BA6AEE, | |||||
2AC6F3BFAAA21E21076A9F8D, | 2AC6F3BFAAA21E21076A9F8D, | ||||
B8DD4DB0BD1A6B38BBF92413, | B8DD4DB0BD1A6B38BBF92413, | ||||
63BEC07A51CB8E516B38ECD4, | 63BEC07A51CB8E516B38ECD4, | ||||
@@ -1429,6 +1429,42 @@ | |||||
<FILE id="u1rCbQqVT" name="juce_win32_Windowing.cpp" compile="1" resource="0" | <FILE id="u1rCbQqVT" name="juce_win32_Windowing.cpp" compile="1" resource="0" | ||||
file="src/native/windows/juce_win32_Windowing.cpp"/> | file="src/native/windows/juce_win32_Windowing.cpp"/> | ||||
</GROUP> | </GROUP> | ||||
<GROUP id="oKVTWQ" name="android"> | |||||
<FILE id="JBId31" name="juce_android_Audio.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Audio.cpp"/> | |||||
<FILE id="svLEk9" name="juce_android_CameraDevice.cpp" compile="1" | |||||
resource="0" file="src/native/android/juce_android_CameraDevice.cpp"/> | |||||
<FILE id="p8LoRE" name="juce_android_FileChooser.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_FileChooser.cpp"/> | |||||
<FILE id="vphAaz" name="juce_android_Files.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Files.cpp"/> | |||||
<FILE id="XrSKE" name="juce_android_Fonts.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Fonts.cpp"/> | |||||
<FILE id="VFjwst" name="juce_android_GraphicsContext.cpp" compile="1" | |||||
resource="0" file="src/native/android/juce_android_GraphicsContext.cpp"/> | |||||
<FILE id="TV84om" name="juce_android_Messaging.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Messaging.cpp"/> | |||||
<FILE id="mJh1wV" name="juce_android_Midi.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Midi.cpp"/> | |||||
<FILE id="cTwU1I" name="juce_android_Misc.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Misc.cpp"/> | |||||
<FILE id="kCijWU" name="juce_android_NativeCode.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_NativeCode.cpp"/> | |||||
<FILE id="nE5bBA" name="juce_android_NativeIncludes.h" compile="0" | |||||
resource="0" file="src/native/android/juce_android_NativeIncludes.h"/> | |||||
<FILE id="fXioLO" name="juce_android_Network.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Network.cpp"/> | |||||
<FILE id="YQ8ZrU" name="juce_android_OpenGLComponent.cpp" compile="1" | |||||
resource="0" file="src/native/android/juce_android_OpenGLComponent.cpp"/> | |||||
<FILE id="dEw2jT" name="juce_android_SystemStats.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_SystemStats.cpp"/> | |||||
<FILE id="M4x7Lf" name="juce_android_Threads.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Threads.cpp"/> | |||||
<FILE id="IyYfds" name="juce_android_WebBrowserComponent.cpp" compile="1" | |||||
resource="0" file="src/native/android/juce_android_WebBrowserComponent.cpp"/> | |||||
<FILE id="RN0NVL" name="juce_android_Windowing.cpp" compile="1" resource="0" | |||||
file="src/native/android/juce_android_Windowing.cpp"/> | |||||
</GROUP> | |||||
</GROUP> | </GROUP> | ||||
<GROUP id="DmPUetFJW" name="text"> | <GROUP id="DmPUetFJW" name="text"> | ||||
<FILE id="jr5l0DTZv" name="juce_CharacterFunctions.cpp" compile="1" | <FILE id="jr5l0DTZv" name="juce_CharacterFunctions.cpp" compile="1" | ||||
@@ -253754,7 +253754,23 @@ const String File::getVolumeLabel() const | |||||
int File::getVolumeSerialNumber() const | int File::getVolumeSerialNumber() const | ||||
{ | { | ||||
return 0; // xxx | |||||
int result = 0; | |||||
/* int fd = open (getFullPathName().toUTF8(), O_RDONLY | O_NONBLOCK); | |||||
char info [512]; | |||||
#ifndef HDIO_GET_IDENTITY | |||||
#define HDIO_GET_IDENTITY 0x030d | |||||
#endif | |||||
if (ioctl (fd, HDIO_GET_IDENTITY, info) == 0) | |||||
{ | |||||
DBG (String (info + 20, 20)); | |||||
result = String (info + 20, 20).trim().getIntValue(); | |||||
} | |||||
close (fd);*/ | |||||
return result; | |||||
} | } | ||||
void juce_runSystemCommand (const String& command) | void juce_runSystemCommand (const String& command) | ||||
@@ -263645,7 +263661,23 @@ const String File::getVolumeLabel() const | |||||
int File::getVolumeSerialNumber() const | int File::getVolumeSerialNumber() const | ||||
{ | { | ||||
return 0; // xxx | |||||
int result = 0; | |||||
/* int fd = open (getFullPathName().toUTF8(), O_RDONLY | O_NONBLOCK); | |||||
char info [512]; | |||||
#ifndef HDIO_GET_IDENTITY | |||||
#define HDIO_GET_IDENTITY 0x030d | |||||
#endif | |||||
if (ioctl (fd, HDIO_GET_IDENTITY, info) == 0) | |||||
{ | |||||
DBG (String (info + 20, 20)); | |||||
result = String (info + 20, 20).trim().getIntValue(); | |||||
} | |||||
close (fd);*/ | |||||
return result; | |||||
} | } | ||||
void juce_runSystemCommand (const String& command) | void juce_runSystemCommand (const String& command) | ||||
@@ -275429,7 +275461,7 @@ public: | |||||
{ | { | ||||
if (JUCEApplication::getInstance() != 0) | if (JUCEApplication::getInstance() != 0) | ||||
{ | { | ||||
JUCEApplication::getInstance()->anotherInstanceStarted (nsStringToJuce (filename)); | |||||
JUCEApplication::getInstance()->anotherInstanceStarted (quotedIfContainsSpaces (filename)); | |||||
return YES; | return YES; | ||||
} | } | ||||
@@ -275440,18 +275472,10 @@ public: | |||||
{ | { | ||||
StringArray files; | StringArray files; | ||||
for (unsigned int i = 0; i < [filenames count]; ++i) | for (unsigned int i = 0; i < [filenames count]; ++i) | ||||
{ | |||||
String filename (nsStringToJuce ((NSString*) [filenames objectAtIndex: i])); | |||||
if (filename.containsChar (' ')) | |||||
filename = filename.quoted('"'); | |||||
files.add (filename); | |||||
} | |||||
files.add (quotedIfContainsSpaces ((NSString*) [filenames objectAtIndex: i])); | |||||
if (files.size() > 0 && JUCEApplication::getInstance() != 0) | if (files.size() > 0 && JUCEApplication::getInstance() != 0) | ||||
{ | |||||
JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" ")); | JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" ")); | ||||
} | |||||
} | } | ||||
virtual void focusChanged() | virtual void focusChanged() | ||||
@@ -275487,6 +275511,15 @@ private: | |||||
CFRunLoopRef runLoop; | CFRunLoopRef runLoop; | ||||
CFRunLoopSourceRef runLoopSource; | CFRunLoopSourceRef runLoopSource; | ||||
MessageQueue messageQueue; | MessageQueue messageQueue; | ||||
static const String quotedIfContainsSpaces (NSString* file) | |||||
{ | |||||
String s (nsStringToJuce (file)); | |||||
if (s.containsChar (' ')) | |||||
s = s.quoted ('"'); | |||||
return s; | |||||
} | |||||
}; | }; | ||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
@@ -278925,7 +278958,23 @@ const String File::getVolumeLabel() const | |||||
int File::getVolumeSerialNumber() const | int File::getVolumeSerialNumber() const | ||||
{ | { | ||||
return 0; // xxx | |||||
int result = 0; | |||||
/* int fd = open (getFullPathName().toUTF8(), O_RDONLY | O_NONBLOCK); | |||||
char info [512]; | |||||
#ifndef HDIO_GET_IDENTITY | |||||
#define HDIO_GET_IDENTITY 0x030d | |||||
#endif | |||||
if (ioctl (fd, HDIO_GET_IDENTITY, info) == 0) | |||||
{ | |||||
DBG (String (info + 20, 20)); | |||||
result = String (info + 20, 20).trim().getIntValue(); | |||||
} | |||||
close (fd);*/ | |||||
return result; | |||||
} | } | ||||
void juce_runSystemCommand (const String& command) | void juce_runSystemCommand (const String& command) | ||||
@@ -279178,7 +279227,7 @@ void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask) | |||||
bool File::copyInternal (const File& dest) const | bool File::copyInternal (const File& dest) const | ||||
{ | { | ||||
// TODO this is a brute-force copy, better to use an OS function if one exists.. | |||||
// TODO | |||||
FileInputStream in (*this); | FileInputStream in (*this); | ||||
@@ -279202,7 +279251,7 @@ bool File::copyInternal (const File& dest) const | |||||
void File::findFileSystemRoots (Array<File>& destArray) | void File::findFileSystemRoots (Array<File>& destArray) | ||||
{ | { | ||||
// TODO appropriate on android? | |||||
// TODO | |||||
destArray.add (File ("/")); | destArray.add (File ("/")); | ||||
} | } | ||||
@@ -279224,7 +279273,7 @@ bool File::isOnRemovableDrive() const | |||||
bool File::isHidden() const | bool File::isHidden() const | ||||
{ | { | ||||
// TODO is this appropriate for android? | |||||
// TODO | |||||
return getFileName().startsWithChar ('.'); | return getFileName().startsWithChar ('.'); | ||||
} | } | ||||
@@ -279248,7 +279297,7 @@ namespace | |||||
const File File::getLinkedTarget() const | const File File::getLinkedTarget() const | ||||
{ | { | ||||
// TODO - same as linux? | |||||
// TODO | |||||
return juce_readlink (getFullPathName().toUTF8(), *this); | return juce_readlink (getFullPathName().toUTF8(), *this); | ||||
} | } | ||||
@@ -279257,7 +279306,7 @@ const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | |||||
const File File::getSpecialLocation (const SpecialLocationType type) | const File File::getSpecialLocation (const SpecialLocationType type) | ||||
{ | { | ||||
// TODO this stuff is all copied from linux, needs sanity-checking for android | |||||
// TODO | |||||
switch (type) | switch (type) | ||||
{ | { | ||||
@@ -279340,8 +279389,6 @@ bool File::moveToTrash() const | |||||
return false; | return false; | ||||
} | } | ||||
// TODO If the normal posix directory functions work, the following stuff should all be fine... | |||||
class DirectoryIterator::NativeIterator::Pimpl | class DirectoryIterator::NativeIterator::Pimpl | ||||
{ | { | ||||
public: | public: | ||||
@@ -279630,7 +279677,7 @@ void PlatformUtilities::beep() | |||||
void Logger::outputDebugString (const String& text) | void Logger::outputDebugString (const String& text) | ||||
{ | { | ||||
// TODO is this ok..? | |||||
// TODO | |||||
std::cerr << text << std::endl; | std::cerr << text << std::endl; | ||||
} | } | ||||
@@ -279655,7 +279702,7 @@ bool SystemStats::isOperatingSystem64Bit() | |||||
namespace LinuxStatsHelpers | namespace LinuxStatsHelpers | ||||
{ | { | ||||
// TODO would this work? If not, the CPU info functions aren't of huge importance.. | |||||
// TODO | |||||
const String getCpuInfo (const char* const key) | const String getCpuInfo (const char* const key) | ||||
{ | { | ||||
StringArray lines; | StringArray lines; | ||||
@@ -279693,7 +279740,7 @@ int SystemStats::getMemorySizeInMegabytes() | |||||
int SystemStats::getPageSize() | int SystemStats::getPageSize() | ||||
{ | { | ||||
// TODO if this doesn't work, just return 0, it's not important | |||||
// TODO | |||||
return sysconf (_SC_PAGESIZE); | return sysconf (_SC_PAGESIZE); | ||||
} | } | ||||
@@ -279720,15 +279767,14 @@ const String SystemStats::getFullUserName() | |||||
void SystemStats::initialiseStats() | void SystemStats::initialiseStats() | ||||
{ | { | ||||
// TODO these flags should be set, but if we're only running on ARM they can all just be false | |||||
// TODO | |||||
const String flags (LinuxStatsHelpers::getCpuInfo ("flags")); | const String flags (LinuxStatsHelpers::getCpuInfo ("flags")); | ||||
cpuFlags.hasMMX = flags.contains ("mmx"); | cpuFlags.hasMMX = flags.contains ("mmx"); | ||||
cpuFlags.hasSSE = flags.contains ("sse"); | cpuFlags.hasSSE = flags.contains ("sse"); | ||||
cpuFlags.hasSSE2 = flags.contains ("sse2"); | cpuFlags.hasSSE2 = flags.contains ("sse2"); | ||||
cpuFlags.has3DNow = flags.contains ("3dnow"); | cpuFlags.has3DNow = flags.contains ("3dnow"); | ||||
// TODO this should probably be set to the number of cores if possible | |||||
// TODO | |||||
cpuFlags.numCpus = LinuxStatsHelpers::getCpuInfo ("processor").getIntValue() + 1; | cpuFlags.numCpus = LinuxStatsHelpers::getCpuInfo ("processor").getIntValue() + 1; | ||||
} | } | ||||
@@ -279736,8 +279782,7 @@ void PlatformUtilities::fpuReset() {} | |||||
uint32 juce_millisecondsSinceStartup() throw() | uint32 juce_millisecondsSinceStartup() throw() | ||||
{ | { | ||||
// TODO must return a monotonically rising clock with decent accuracy | |||||
// TODO | |||||
timespec t; | timespec t; | ||||
clock_gettime (CLOCK_MONOTONIC, &t); | clock_gettime (CLOCK_MONOTONIC, &t); | ||||
@@ -279786,14 +279831,10 @@ bool Time::setSystemTimeToThisTime() const | |||||
live in juce_posix_SharedCode.h! | live in juce_posix_SharedCode.h! | ||||
*/ | */ | ||||
// TODO all the main thread code lives inside juce_posix_SharedCode.h, so if there's | |||||
// anything in there that doesn't work with android, it'd need to be #ifdef'ed out in that file and | |||||
// done in this file instead.. | |||||
// sets the process to 0=low priority, 1=normal, 2=high, 3=realtime | // sets the process to 0=low priority, 1=normal, 2=high, 3=realtime | ||||
void Process::setPriority (ProcessPriority prior) | void Process::setPriority (ProcessPriority prior) | ||||
{ | { | ||||
// TODO this might work, but if not, it might need tweaking | |||||
// TODO | |||||
struct sched_param param; | struct sched_param param; | ||||
int policy, maxp, minp; | int policy, maxp, minp; | ||||
@@ -279822,7 +279863,7 @@ void Process::setPriority (ProcessPriority prior) | |||||
void Process::terminate() | void Process::terminate() | ||||
{ | { | ||||
// TODO correct way to kill the process? | |||||
// TODO | |||||
exit (0); | exit (0); | ||||
} | } | ||||
@@ -279850,8 +279891,7 @@ void Process::lowerPrivilege() {} | |||||
void MACAddress::findAllAddresses (Array<MACAddress>& result) | void MACAddress::findAllAddresses (Array<MACAddress>& result) | ||||
{ | { | ||||
// TODO not a big priority to do this | |||||
// TODO | |||||
} | } | ||||
bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAddress, | bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAddress, | ||||
@@ -279859,13 +279899,11 @@ bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAdd | |||||
const String& bodyText, | const String& bodyText, | ||||
const StringArray& filesToAttach) | const StringArray& filesToAttach) | ||||
{ | { | ||||
// TODO might be nice, but low priority | |||||
// TODO | |||||
return false; | return false; | ||||
} | } | ||||
// TODO This class needs to act as a HTTP or FTP stream | |||||
class WebInputStream : public InputStream | class WebInputStream : public InputStream | ||||
{ | { | ||||
public: | public: | ||||
@@ -279874,7 +279912,7 @@ public: | |||||
URL::OpenStreamProgressCallback* progressCallback, void* progressCallbackContext, | URL::OpenStreamProgressCallback* progressCallback, void* progressCallbackContext, | ||||
const String& headers_, int timeOutMs_, StringPairArray* responseHeaders) | const String& headers_, int timeOutMs_, StringPairArray* responseHeaders) | ||||
{ | { | ||||
// TODO try to open, set this flag if it fails | |||||
// TODO | |||||
openedOk = false; | openedOk = false; | ||||
} | } | ||||
@@ -279964,15 +280002,11 @@ bool juce_dispatchNextMessageOnSystemQueue (const bool returnIfNoPendingMessages | |||||
bool juce_postMessageToSystemQueue (Message* message) | bool juce_postMessageToSystemQueue (Message* message) | ||||
{ | { | ||||
// TODO Must use some kind of mechanism to post the given message to the system | |||||
// queue, in such a way that juce_dispatchNextMessageOnSystemQueue will be able | |||||
// to deliver it when it arrives | |||||
// TODO | |||||
return true; | return true; | ||||
} | } | ||||
// TODO this stuff will probably work as it is.. | |||||
class AsyncFunctionCaller : public AsyncUpdater | class AsyncFunctionCaller : public AsyncUpdater | ||||
{ | { | ||||
public: | public: | ||||
@@ -280013,7 +280047,6 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* func | |||||
void MessageManager::broadcastMessage (const String&) | void MessageManager::broadcastMessage (const String&) | ||||
{ | { | ||||
// TODO no need to bother with this | |||||
} | } | ||||
#endif | #endif | ||||
@@ -280029,26 +280062,20 @@ const StringArray Font::findAllTypefaceNames() | |||||
{ | { | ||||
StringArray results; | StringArray results; | ||||
// TODO find all the typefaces | |||||
// TODO | |||||
return results; | return results; | ||||
} | } | ||||
void Font::getPlatformDefaultFontNames (String& defaultSans, String& defaultSerif, String& defaultFixed, String& defaultFallback) | void Font::getPlatformDefaultFontNames (String& defaultSans, String& defaultSerif, String& defaultFixed, String& defaultFallback) | ||||
{ | { | ||||
// TODO these need to be set to some kind of sensible defaults.. | |||||
// TODO | |||||
defaultSans = "Verdana"; | defaultSans = "Verdana"; | ||||
defaultSerif = "Times"; | defaultSerif = "Times"; | ||||
defaultFixed = "Lucida Console"; | defaultFixed = "Lucida Console"; | ||||
defaultFallback = "Tahoma"; | defaultFallback = "Tahoma"; | ||||
} | } | ||||
// TODO the nature of this class depends on the way it's going to be drawn - if the rendering | |||||
// engine draws the glyphs itself (e.g. the CoreGraphicsContext), then this may only need | |||||
// to hold some kind of platform-specific font handle, which the rendering engine can use. | |||||
// If the glyphs are drawn as shapes (as done by the software renderer), then this will need | |||||
// to make sure the getOutlineForGlyph method works. | |||||
class AndroidTypeface : public Typeface | class AndroidTypeface : public Typeface | ||||
{ | { | ||||
public: | public: | ||||
@@ -280060,35 +280087,28 @@ public: | |||||
float getAscent() const | float getAscent() const | ||||
{ | { | ||||
return 0; // TODO this is the font's ascent expressed as a proportion of its height, so should be 0 -> 1.0f | |||||
return 0; // TODO | |||||
} | } | ||||
float getDescent() const | float getDescent() const | ||||
{ | { | ||||
return 0; // TODO this is font's decscent expressed as a proportion of its height, so should be 0 -> 1.0f | |||||
return 0; // TODO | |||||
} | } | ||||
float getStringWidth (const String& text) | float getStringWidth (const String& text) | ||||
{ | { | ||||
// TODO this must lay out the given text and return the width of the text as a multiple of the font's height | |||||
// TODO | |||||
return 0; | return 0; | ||||
} | } | ||||
void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) | void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) | ||||
{ | { | ||||
// TODO this must lay out the given text, and return the set of glyph numbers used, and their | |||||
// positions, in the arrays provided. | |||||
// The glyph numbers are whatever is appropriate for use by the rendering engine, and the offsets | |||||
// are expressed as distances along the X axis from the left of the first character, and are | |||||
// measured in multiples of the font's height (like all other sizes in the typeface) | |||||
// TODO | |||||
} | } | ||||
bool getOutlineForGlyph (int glyphNumber, Path& destPath) | bool getOutlineForGlyph (int glyphNumber, Path& destPath) | ||||
{ | { | ||||
// TODO must return the path that can be used to draw the given glyph number (where the glyph | |||||
// number will have been returned by the getGlyphPositions method). | |||||
// The path must have its origin at the character's left-hand baseline, and must be scaled so that | |||||
// the font's height maps onto a length of 1.0f in the path. | |||||
// TODO | |||||
return false; | return false; | ||||
} | } | ||||
@@ -280110,8 +280130,7 @@ const Typeface::Ptr Typeface::createSystemTypefaceFor (const Font& font) | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE | #if JUCE_INCLUDED_FILE | ||||
// TODO - implement this lot! Probably need to make it wrap a Java2D graphics context. | |||||
// TODO | |||||
class AndroidLowLevelGraphicsContext : public LowLevelGraphicsContext | class AndroidLowLevelGraphicsContext : public LowLevelGraphicsContext | ||||
{ | { | ||||
public: | public: | ||||
@@ -280253,15 +280272,6 @@ private: | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE | #if JUCE_INCLUDED_FILE | ||||
/* | |||||
TODO The main windowing object | |||||
As well as implementing all the methods below, the ComponentPeer base class has a whole bunch | |||||
of callback methods like handlePaint, handleMouseEvent, handleKeyPress, handleFocusGain, etc which | |||||
must be called by the subclass when the appropriate events occur. | |||||
*/ | |||||
class AndroidComponentPeer : public ComponentPeer | class AndroidComponentPeer : public ComponentPeer | ||||
{ | { | ||||
public: | public: | ||||
@@ -280269,8 +280279,7 @@ public: | |||||
AndroidComponentPeer (Component* const component, const int windowStyleFlags) | AndroidComponentPeer (Component* const component, const int windowStyleFlags) | ||||
: ComponentPeer (component, windowStyleFlags) | : ComponentPeer (component, windowStyleFlags) | ||||
{ | { | ||||
// TODO create the window, obeying the appropriate style flags, which | |||||
// are from the set of flags in ComponentPeer::StyleFlags | |||||
// TODO | |||||
} | } | ||||
~AndroidComponentPeer() | ~AndroidComponentPeer() | ||||
@@ -280279,7 +280288,7 @@ public: | |||||
void* getNativeHandle() const | void* getNativeHandle() const | ||||
{ | { | ||||
return 0; // TODO gets returned by Component::getWindowHandle() so should be whatever makes sense | |||||
return 0; // TODO | |||||
} | } | ||||
void setVisible (bool shouldBeVisible) | void setVisible (bool shouldBeVisible) | ||||
@@ -280292,7 +280301,7 @@ public: | |||||
void setPosition (int x, int y) | void setPosition (int x, int y) | ||||
{ | { | ||||
// TODO relative to desktop top-left | |||||
// TODO | |||||
} | } | ||||
void setSize (int w, int h) | void setSize (int w, int h) | ||||
@@ -280301,36 +280310,36 @@ public: | |||||
void setBounds (int x, int y, int w, int h, bool isNowFullScreen) | void setBounds (int x, int y, int w, int h, bool isNowFullScreen) | ||||
{ | { | ||||
// TODO relative to desktop top-left | |||||
// TODO | |||||
} | } | ||||
const Rectangle<int> getBounds() const | const Rectangle<int> getBounds() const | ||||
{ | { | ||||
// TODO relative to desktop top-left | |||||
// TODO | |||||
return Rectangle<int>(); | return Rectangle<int>(); | ||||
} | } | ||||
const Point<int> getScreenPosition() const | const Point<int> getScreenPosition() const | ||||
{ | { | ||||
// TODO relative to desktop top-left | |||||
// TODO | |||||
return Point<int>(); | return Point<int>(); | ||||
} | } | ||||
const Point<int> localToGlobal (const Point<int>& relativePosition) | const Point<int> localToGlobal (const Point<int>& relativePosition) | ||||
{ | { | ||||
// TODO probably ok as it is.. | |||||
// TODO | |||||
return relativePosition + getScreenPosition(); | return relativePosition + getScreenPosition(); | ||||
} | } | ||||
const Point<int> globalToLocal (const Point<int>& screenPosition) | const Point<int> globalToLocal (const Point<int>& screenPosition) | ||||
{ | { | ||||
// TODO probably ok as it is.. | |||||
// TODO | |||||
return screenPosition - getScreenPosition(); | return screenPosition - getScreenPosition(); | ||||
} | } | ||||
void setMinimised (bool shouldBeMinimised) | void setMinimised (bool shouldBeMinimised) | ||||
{ | { | ||||
// TODO probably irrelevant on android | |||||
// TODO | |||||
} | } | ||||
bool isMinimised() const | bool isMinimised() const | ||||
@@ -280350,12 +280359,12 @@ public: | |||||
void setIcon (const Image& newIcon) | void setIcon (const Image& newIcon) | ||||
{ | { | ||||
// TODO probably irrelevant | |||||
// TODO | |||||
} | } | ||||
bool contains (const Point<int>& position, bool trueIfInAChildWindow) const | bool contains (const Point<int>& position, bool trueIfInAChildWindow) const | ||||
{ | { | ||||
// TODO should check that other windows aren't in front of this point | |||||
// TODO | |||||
return isPositiveAndBelow (position.getX(), component->getWidth()) | return isPositiveAndBelow (position.getX(), component->getWidth()) | ||||
&& isPositiveAndBelow (position.getY(), component->getHeight()); | && isPositiveAndBelow (position.getY(), component->getHeight()); | ||||
@@ -280369,7 +280378,7 @@ public: | |||||
bool setAlwaysOnTop (bool alwaysOnTop) | bool setAlwaysOnTop (bool alwaysOnTop) | ||||
{ | { | ||||
// TODO probably not needed | |||||
// TODO | |||||
return false; | return false; | ||||
} | } | ||||
@@ -280396,23 +280405,22 @@ public: | |||||
void textInputRequired (const Point<int>& position) | void textInputRequired (const Point<int>& position) | ||||
{ | { | ||||
// TODO called when the on-screen keyboard should appear - the position indicates roughly where | |||||
// the text entry position is | |||||
// TODO | |||||
} | } | ||||
void repaint (const Rectangle<int>& area) | void repaint (const Rectangle<int>& area) | ||||
{ | { | ||||
// TODO invalidate the given area (relative to this window's top left) | |||||
// TODO | |||||
} | } | ||||
void performAnyPendingRepaintsNow() | void performAnyPendingRepaintsNow() | ||||
{ | { | ||||
// TODO probably not needed | |||||
// TODO | |||||
} | } | ||||
void setAlpha (float newAlpha) | void setAlpha (float newAlpha) | ||||
{ | { | ||||
// TODO changes the window's overall transparency | |||||
// TODO | |||||
} | } | ||||
private: | private: | ||||
@@ -280427,7 +280435,7 @@ ComponentPeer* Component::createNewPeer (int styleFlags, void*) | |||||
bool Desktop::canUseSemiTransparentWindows() throw() | bool Desktop::canUseSemiTransparentWindows() throw() | ||||
{ | { | ||||
return true; // TODO presumably this is true | |||||
return true; // TODO | |||||
} | } | ||||
Desktop::DisplayOrientation Desktop::getCurrentOrientation() const | Desktop::DisplayOrientation Desktop::getCurrentOrientation() const | ||||
@@ -280468,21 +280476,20 @@ void ModifierKeys::updateCurrentModifiers() throw() | |||||
const ModifierKeys ModifierKeys::getCurrentModifiersRealtime() throw() | const ModifierKeys ModifierKeys::getCurrentModifiersRealtime() throw() | ||||
{ | { | ||||
// TODO must return the state of mouse buttons, so if there are any | |||||
// touches underway, this should set the left-button flag | |||||
// TODO | |||||
return ModifierKeys(); | return ModifierKeys(); | ||||
} | } | ||||
bool Process::isForegroundProcess() | bool Process::isForegroundProcess() | ||||
{ | { | ||||
return true; // TODO ? | |||||
return true; // TODO | |||||
} | } | ||||
bool AlertWindow::showNativeDialogBox (const String& title, | bool AlertWindow::showNativeDialogBox (const String& title, | ||||
const String& bodyText, | const String& bodyText, | ||||
bool isOkCancel) | bool isOkCancel) | ||||
{ | { | ||||
// TODO just show a simple native box | |||||
// TODO | |||||
} | } | ||||
@@ -280493,7 +280500,7 @@ Image::SharedImage* Image::SharedImage::createNativeImage (PixelFormat format, i | |||||
void Desktop::setScreenSaverEnabled (const bool isEnabled) | void Desktop::setScreenSaverEnabled (const bool isEnabled) | ||||
{ | { | ||||
// TODO low priority, but might need doing at some point | |||||
// TODO | |||||
} | } | ||||
bool Desktop::isScreenSaverEnabled() | bool Desktop::isScreenSaverEnabled() | ||||
@@ -280507,7 +280514,7 @@ void juce_setKioskComponent (Component* kioskModeComponent, bool enableOrDisable | |||||
void juce_updateMultiMonitorInfo (Array <Rectangle<int> >& monitorCoords, const bool clipToWorkArea) | void juce_updateMultiMonitorInfo (Array <Rectangle<int> >& monitorCoords, const bool clipToWorkArea) | ||||
{ | { | ||||
// TODO must set the correct screen size in this rectangle.. | |||||
// TODO | |||||
monitorCoords.add (Rectangle<int> (0, 0, 640, 480)); | monitorCoords.add (Rectangle<int> (0, 0, 640, 480)); | ||||
} | } | ||||
@@ -280516,7 +280523,7 @@ const Image juce_createIconForFile (const File& file) | |||||
{ | { | ||||
Image image; | Image image; | ||||
// TODO returns a file's icon.. No need to implement yet. | |||||
// TODO | |||||
return image; | return image; | ||||
} | } | ||||
@@ -280624,7 +280631,7 @@ void FileChooser::showPlatformDialog (Array<File>& results, | |||||
bool selectMultipleFiles, | bool selectMultipleFiles, | ||||
FilePreviewComponent* extraInfoComponent) | FilePreviewComponent* extraInfoComponent) | ||||
{ | { | ||||
// TODO probably not important to implement this right away.. | |||||
// TODO | |||||
} | } | ||||
@@ -280660,8 +280667,6 @@ const String SystemClipboard::getTextFromClipboard() | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE && JUCE_WEB_BROWSER | #if JUCE_INCLUDED_FILE && JUCE_WEB_BROWSER | ||||
// TODO this stuff isn't a high priority, but is where an embedded web browser would be done.. | |||||
WebBrowserComponent::WebBrowserComponent (const bool unloadPageWhenBrowserIsHidden_) | WebBrowserComponent::WebBrowserComponent (const bool unloadPageWhenBrowserIsHidden_) | ||||
: browser (0), | : browser (0), | ||||
blankPageShown (false), | blankPageShown (false), | ||||
@@ -280759,8 +280764,7 @@ bool WebBrowserComponent::pageAboutToLoad (const String& url) | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE && JUCE_OPENGL | #if JUCE_INCLUDED_FILE && JUCE_OPENGL | ||||
// TODO - not urgent to implement the opengl stuff.. | |||||
// TODO | |||||
OpenGLContext* OpenGLComponent::createContext() | OpenGLContext* OpenGLComponent::createContext() | ||||
{ | { | ||||
return 0; | return 0; | ||||
@@ -280791,8 +280795,6 @@ void OpenGLPixelFormat::getAvailablePixelFormats (Component* component, | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE | #if JUCE_INCLUDED_FILE | ||||
// TODO not a big priority, the stuff in here should act as stubs for the midi classes | |||||
const StringArray MidiOutput::getDevices() | const StringArray MidiOutput::getDevices() | ||||
{ | { | ||||
StringArray devices; | StringArray devices; | ||||
@@ -280891,7 +280893,7 @@ public: | |||||
numInputChannels = 2; | numInputChannels = 2; | ||||
numOutputChannels = 2; | numOutputChannels = 2; | ||||
// TODO initialise as needed.. | |||||
// TODO | |||||
} | } | ||||
~AndroidAudioIODevice() | ~AndroidAudioIODevice() | ||||
@@ -280902,7 +280904,7 @@ public: | |||||
const StringArray getOutputChannelNames() | const StringArray getOutputChannelNames() | ||||
{ | { | ||||
StringArray s; | StringArray s; | ||||
s.add ("Left"); // TODO if the device is anything other than stereo, this might need to be smarter | |||||
s.add ("Left"); // TODO | |||||
s.add ("Right"); | s.add ("Right"); | ||||
return s; | return s; | ||||
} | } | ||||
@@ -280940,7 +280942,7 @@ public: | |||||
activeInputChans.setRange (2, activeInputChans.getHighestBit(), false); | activeInputChans.setRange (2, activeInputChans.getHighestBit(), false); | ||||
numInputChannels = activeInputChans.countNumberOfSetBits(); | numInputChannels = activeInputChans.countNumberOfSetBits(); | ||||
// TODO actually open it here, setting lastError if it fails.. | |||||
// TODO | |||||
actualBufferSize = 0; // whatever is possible based on preferredBufferSize | actualBufferSize = 0; // whatever is possible based on preferredBufferSize | ||||
@@ -280955,18 +280957,18 @@ public: | |||||
{ | { | ||||
isRunning = false; | isRunning = false; | ||||
// TODO close the device here | |||||
// TODO | |||||
} | } | ||||
} | } | ||||
int getOutputLatencyInSamples() | int getOutputLatencyInSamples() | ||||
{ | { | ||||
return 0; // TODO should be found out if poss | |||||
return 0; // TODO | |||||
} | } | ||||
int getInputLatencyInSamples() | int getInputLatencyInSamples() | ||||
{ | { | ||||
return 0; // TODO should be found out if poss | |||||
return 0; // TODO | |||||
} | } | ||||
bool isOpen() { return isRunning; } | bool isOpen() { return isRunning; } | ||||
@@ -280978,7 +280980,7 @@ public: | |||||
const String getLastError() { return lastError; } | const String getLastError() { return lastError; } | ||||
bool isPlaying() { return isRunning && callback != 0; } | bool isPlaying() { return isRunning && callback != 0; } | ||||
// TODO the start/stop methods are probably ok to leave as they are... | |||||
// TODO | |||||
void start (AudioIODeviceCallback* newCallback) | void start (AudioIODeviceCallback* newCallback) | ||||
{ | { | ||||
@@ -281023,7 +281025,7 @@ private: | |||||
JUCE_DECLARE_NON_COPYABLE (AndroidAudioIODevice); | JUCE_DECLARE_NON_COPYABLE (AndroidAudioIODevice); | ||||
}; | }; | ||||
// TODO assuming there's only one type of audio device, this class is pretty much ok as it is... | |||||
// TODO | |||||
class AndroidAudioIODeviceType : public AudioIODeviceType | class AndroidAudioIODeviceType : public AudioIODeviceType | ||||
{ | { | ||||
public: | public: | ||||
@@ -281084,7 +281086,7 @@ AudioIODeviceType* juce_createAudioIODeviceType_Android() | |||||
// compiled on its own). | // compiled on its own). | ||||
#if JUCE_INCLUDED_FILE && JUCE_USE_CAMERA | #if JUCE_INCLUDED_FILE && JUCE_USE_CAMERA | ||||
// TODO this is an internal data structure that can be used to hold all the platform-specific handles and stuff | |||||
// TODO | |||||
class AndroidCameraInternal | class AndroidCameraInternal | ||||
{ | { | ||||
public: | public: | ||||
@@ -281105,7 +281107,7 @@ CameraDevice::CameraDevice (const String& name_, int /*index*/) | |||||
{ | { | ||||
internal = new AndroidCameraInternal(); | internal = new AndroidCameraInternal(); | ||||
// TODO probably initialisation here | |||||
// TODO | |||||
} | } | ||||
CameraDevice::~CameraDevice() | CameraDevice::~CameraDevice() | ||||
@@ -281117,7 +281119,7 @@ CameraDevice::~CameraDevice() | |||||
Component* CameraDevice::createViewerComponent() | Component* CameraDevice::createViewerComponent() | ||||
{ | { | ||||
// TODO returns some kind of Component that can preview the camera | |||||
// TODO | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -281157,7 +281159,7 @@ const StringArray CameraDevice::getAvailableDevices() | |||||
{ | { | ||||
StringArray devs; | StringArray devs; | ||||
// TODO scan for devices.. | |||||
// TODO | |||||
return devs; | return devs; | ||||
} | } | ||||
@@ -281166,7 +281168,7 @@ CameraDevice* CameraDevice::openDevice (int index, | |||||
int minWidth, int minHeight, | int minWidth, int minHeight, | ||||
int maxWidth, int maxHeight) | int maxWidth, int maxHeight) | ||||
{ | { | ||||
// TODO opens a device, returning a new CameraDevice object if this works. | |||||
// TODO | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -0,0 +1,239 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
class AndroidAudioIODevice : public AudioIODevice | |||||
{ | |||||
public: | |||||
//============================================================================== | |||||
AndroidAudioIODevice (const String& deviceName) | |||||
: AudioIODevice (deviceName, "Audio"), | |||||
callback (0), | |||||
sampleRate (0), | |||||
numInputChannels (0), | |||||
numOutputChannels (0), | |||||
actualBufferSize (0), | |||||
isRunning (false) | |||||
{ | |||||
numInputChannels = 2; | |||||
numOutputChannels = 2; | |||||
// TODO | |||||
} | |||||
~AndroidAudioIODevice() | |||||
{ | |||||
close(); | |||||
} | |||||
const StringArray getOutputChannelNames() | |||||
{ | |||||
StringArray s; | |||||
s.add ("Left"); // TODO | |||||
s.add ("Right"); | |||||
return s; | |||||
} | |||||
const StringArray getInputChannelNames() | |||||
{ | |||||
StringArray s; | |||||
s.add ("Left"); | |||||
s.add ("Right"); | |||||
return s; | |||||
} | |||||
int getNumSampleRates() { return 1;} | |||||
double getSampleRate (int index) { return sampleRate; } | |||||
int getNumBufferSizesAvailable() { return 1; } | |||||
int getBufferSizeSamples (int index) { return getDefaultBufferSize(); } | |||||
int getDefaultBufferSize() { return 1024; } | |||||
const String open (const BigInteger& inputChannels, | |||||
const BigInteger& outputChannels, | |||||
double sampleRate, | |||||
int bufferSize) | |||||
{ | |||||
close(); | |||||
lastError = String::empty; | |||||
int preferredBufferSize = (bufferSize <= 0) ? getDefaultBufferSize() : bufferSize; | |||||
activeOutputChans = outputChannels; | |||||
activeOutputChans.setRange (2, activeOutputChans.getHighestBit(), false); | |||||
numOutputChannels = activeOutputChans.countNumberOfSetBits(); | |||||
activeInputChans = inputChannels; | |||||
activeInputChans.setRange (2, activeInputChans.getHighestBit(), false); | |||||
numInputChannels = activeInputChans.countNumberOfSetBits(); | |||||
// TODO | |||||
actualBufferSize = 0; // whatever is possible based on preferredBufferSize | |||||
isRunning = true; | |||||
return lastError; | |||||
} | |||||
void close() | |||||
{ | |||||
if (isRunning) | |||||
{ | |||||
isRunning = false; | |||||
// TODO | |||||
} | |||||
} | |||||
int getOutputLatencyInSamples() | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
int getInputLatencyInSamples() | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
bool isOpen() { return isRunning; } | |||||
int getCurrentBufferSizeSamples() { return actualBufferSize; } | |||||
int getCurrentBitDepth() { return 16; } | |||||
double getCurrentSampleRate() { return sampleRate; } | |||||
const BigInteger getActiveOutputChannels() const { return activeOutputChans; } | |||||
const BigInteger getActiveInputChannels() const { return activeInputChans; } | |||||
const String getLastError() { return lastError; } | |||||
bool isPlaying() { return isRunning && callback != 0; } | |||||
// TODO | |||||
void start (AudioIODeviceCallback* newCallback) | |||||
{ | |||||
if (isRunning && callback != newCallback) | |||||
{ | |||||
if (newCallback != 0) | |||||
newCallback->audioDeviceAboutToStart (this); | |||||
const ScopedLock sl (callbackLock); | |||||
callback = newCallback; | |||||
} | |||||
} | |||||
void stop() | |||||
{ | |||||
if (isRunning) | |||||
{ | |||||
AudioIODeviceCallback* lastCallback; | |||||
{ | |||||
const ScopedLock sl (callbackLock); | |||||
lastCallback = callback; | |||||
callback = 0; | |||||
} | |||||
if (lastCallback != 0) | |||||
lastCallback->audioDeviceStopped(); | |||||
} | |||||
} | |||||
private: | |||||
//================================================================================================== | |||||
CriticalSection callbackLock; | |||||
AudioIODeviceCallback* callback; | |||||
double sampleRate; | |||||
int numInputChannels, numOutputChannels; | |||||
int actualBufferSize; | |||||
bool isRunning; | |||||
String lastError; | |||||
BigInteger activeOutputChans, activeInputChans; | |||||
JUCE_DECLARE_NON_COPYABLE (AndroidAudioIODevice); | |||||
}; | |||||
//============================================================================== | |||||
// TODO | |||||
class AndroidAudioIODeviceType : public AudioIODeviceType | |||||
{ | |||||
public: | |||||
AndroidAudioIODeviceType() | |||||
: AudioIODeviceType ("Android Audio") | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void scanForDevices() | |||||
{ | |||||
} | |||||
const StringArray getDeviceNames (bool wantInputNames) const | |||||
{ | |||||
StringArray s; | |||||
s.add ("Android Audio"); | |||||
return s; | |||||
} | |||||
int getDefaultDeviceIndex (bool forInput) const | |||||
{ | |||||
return 0; | |||||
} | |||||
int getIndexOfDevice (AudioIODevice* device, bool asInput) const | |||||
{ | |||||
return device != 0 ? 0 : -1; | |||||
} | |||||
bool hasSeparateInputsAndOutputs() const { return false; } | |||||
AudioIODevice* createDevice (const String& outputDeviceName, | |||||
const String& inputDeviceName) | |||||
{ | |||||
if (outputDeviceName.isNotEmpty() || inputDeviceName.isNotEmpty()) | |||||
return new AndroidAudioIODevice (outputDeviceName.isNotEmpty() ? outputDeviceName | |||||
: inputDeviceName); | |||||
return 0; | |||||
} | |||||
private: | |||||
//============================================================================== | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidAudioIODeviceType); | |||||
}; | |||||
//============================================================================== | |||||
AudioIODeviceType* juce_createAudioIODeviceType_Android() | |||||
{ | |||||
return new AndroidAudioIODeviceType(); | |||||
} | |||||
#endif |
@@ -0,0 +1,122 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE && JUCE_USE_CAMERA | |||||
//============================================================================== | |||||
// TODO | |||||
class AndroidCameraInternal | |||||
{ | |||||
public: | |||||
AndroidCameraInternal() | |||||
{ | |||||
} | |||||
~AndroidCameraInternal() | |||||
{ | |||||
} | |||||
private: | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidCameraInternal); | |||||
}; | |||||
//============================================================================== | |||||
CameraDevice::CameraDevice (const String& name_, int /*index*/) | |||||
: name (name_) | |||||
{ | |||||
internal = new AndroidCameraInternal(); | |||||
// TODO | |||||
} | |||||
CameraDevice::~CameraDevice() | |||||
{ | |||||
stopRecording(); | |||||
delete static_cast <AndroidCameraInternal*> (internal); | |||||
internal = 0; | |||||
} | |||||
Component* CameraDevice::createViewerComponent() | |||||
{ | |||||
// TODO | |||||
return 0; | |||||
} | |||||
const String CameraDevice::getFileExtension() | |||||
{ | |||||
return ".m4a"; // TODO correct? | |||||
} | |||||
void CameraDevice::startRecordingToFile (const File& file, int quality) | |||||
{ | |||||
// TODO | |||||
} | |||||
const Time CameraDevice::getTimeOfFirstRecordedFrame() const | |||||
{ | |||||
// TODO | |||||
return Time(); | |||||
} | |||||
void CameraDevice::stopRecording() | |||||
{ | |||||
// TODO | |||||
} | |||||
void CameraDevice::addListener (Listener* listenerToAdd) | |||||
{ | |||||
// TODO | |||||
} | |||||
void CameraDevice::removeListener (Listener* listenerToRemove) | |||||
{ | |||||
// TODO | |||||
} | |||||
const StringArray CameraDevice::getAvailableDevices() | |||||
{ | |||||
StringArray devs; | |||||
// TODO | |||||
return devs; | |||||
} | |||||
CameraDevice* CameraDevice::openDevice (int index, | |||||
int minWidth, int minHeight, | |||||
int maxWidth, int maxHeight) | |||||
{ | |||||
// TODO | |||||
return 0; | |||||
} | |||||
#endif |
@@ -0,0 +1,49 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
void FileChooser::showPlatformDialog (Array<File>& results, | |||||
const String& title, | |||||
const File& currentFileOrDirectory, | |||||
const String& filter, | |||||
bool selectsDirectory, | |||||
bool selectsFiles, | |||||
bool isSaveDialogue, | |||||
bool warnAboutOverwritingExistingFiles, | |||||
bool selectMultipleFiles, | |||||
FilePreviewComponent* extraInfoComponent) | |||||
{ | |||||
// TODO | |||||
} | |||||
#endif |
@@ -0,0 +1,290 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
bool File::copyInternal (const File& dest) const | |||||
{ | |||||
// TODO | |||||
FileInputStream in (*this); | |||||
if (dest.deleteFile()) | |||||
{ | |||||
{ | |||||
FileOutputStream out (dest); | |||||
if (out.failedToOpen()) | |||||
return false; | |||||
if (out.writeFromInputStream (in, -1) == getSize()) | |||||
return true; | |||||
} | |||||
dest.deleteFile(); | |||||
} | |||||
return false; | |||||
} | |||||
void File::findFileSystemRoots (Array<File>& destArray) | |||||
{ | |||||
// TODO | |||||
destArray.add (File ("/")); | |||||
} | |||||
//============================================================================== | |||||
bool File::isOnCDRomDrive() const | |||||
{ | |||||
return false; | |||||
} | |||||
bool File::isOnHardDisk() const | |||||
{ | |||||
return true; | |||||
} | |||||
bool File::isOnRemovableDrive() const | |||||
{ | |||||
return false; | |||||
} | |||||
bool File::isHidden() const | |||||
{ | |||||
// TODO | |||||
return getFileName().startsWithChar ('.'); | |||||
} | |||||
//============================================================================== | |||||
namespace | |||||
{ | |||||
const File juce_readlink (const String& file, const File& defaultFile) | |||||
{ | |||||
const int size = 8192; | |||||
HeapBlock<char> buffer; | |||||
buffer.malloc (size + 4); | |||||
const size_t numBytes = readlink (file.toUTF8(), buffer, size); | |||||
if (numBytes > 0 && numBytes <= size) | |||||
return File (file).getSiblingFile (String::fromUTF8 (buffer, (int) numBytes)); | |||||
return defaultFile; | |||||
} | |||||
} | |||||
const File File::getLinkedTarget() const | |||||
{ | |||||
// TODO | |||||
return juce_readlink (getFullPathName().toUTF8(), *this); | |||||
} | |||||
//============================================================================== | |||||
const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | |||||
const File File::getSpecialLocation (const SpecialLocationType type) | |||||
{ | |||||
// TODO | |||||
switch (type) | |||||
{ | |||||
case userHomeDirectory: | |||||
{ | |||||
const char* homeDir = getenv ("HOME"); | |||||
if (homeDir == 0) | |||||
{ | |||||
struct passwd* const pw = getpwuid (getuid()); | |||||
if (pw != 0) | |||||
homeDir = pw->pw_dir; | |||||
} | |||||
return File (String::fromUTF8 (homeDir)); | |||||
} | |||||
case userDocumentsDirectory: | |||||
case userMusicDirectory: | |||||
case userMoviesDirectory: | |||||
case userApplicationDataDirectory: | |||||
return File ("~"); | |||||
case userDesktopDirectory: | |||||
return File ("~/Desktop"); | |||||
case commonApplicationDataDirectory: | |||||
return File ("/var"); | |||||
case globalApplicationsDirectory: | |||||
return File ("/usr"); | |||||
case tempDirectory: | |||||
{ | |||||
File tmp ("/var/tmp"); | |||||
if (! tmp.isDirectory()) | |||||
{ | |||||
tmp = "/tmp"; | |||||
if (! tmp.isDirectory()) | |||||
tmp = File::getCurrentWorkingDirectory(); | |||||
} | |||||
return tmp; | |||||
} | |||||
case invokedExecutableFile: | |||||
if (juce_Argv0 != 0) | |||||
return File (String::fromUTF8 (juce_Argv0)); | |||||
// deliberate fall-through... | |||||
case currentExecutableFile: | |||||
case currentApplicationFile: | |||||
return juce_getExecutableFile(); | |||||
case hostApplicationPath: | |||||
return juce_readlink ("/proc/self/exe", juce_getExecutableFile()); | |||||
default: | |||||
jassertfalse; // unknown type? | |||||
break; | |||||
} | |||||
return File::nonexistent; | |||||
} | |||||
//============================================================================== | |||||
const String File::getVersion() const | |||||
{ | |||||
return String::empty; | |||||
} | |||||
//============================================================================== | |||||
bool File::moveToTrash() const | |||||
{ | |||||
if (! exists()) | |||||
return true; | |||||
// TODO | |||||
return false; | |||||
} | |||||
//============================================================================== | |||||
class DirectoryIterator::NativeIterator::Pimpl | |||||
{ | |||||
public: | |||||
Pimpl (const File& directory, const String& wildCard_) | |||||
: parentDir (File::addTrailingSeparator (directory.getFullPathName())), | |||||
wildCard (wildCard_), | |||||
dir (opendir (directory.getFullPathName().toUTF8())) | |||||
{ | |||||
wildcardUTF8 = wildCard.toUTF8(); | |||||
} | |||||
~Pimpl() | |||||
{ | |||||
if (dir != 0) | |||||
closedir (dir); | |||||
} | |||||
bool next (String& filenameFound, | |||||
bool* const isDir, bool* const isHidden, int64* const fileSize, | |||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | |||||
{ | |||||
if (dir != 0) | |||||
{ | |||||
for (;;) | |||||
{ | |||||
struct dirent* const de = readdir (dir); | |||||
if (de == 0) | |||||
break; | |||||
if (fnmatch (wildcardUTF8, de->d_name, FNM_CASEFOLD) == 0) | |||||
{ | |||||
filenameFound = String::fromUTF8 (de->d_name); | |||||
updateStatInfoForFile (parentDir + filenameFound, isDir, fileSize, modTime, creationTime, isReadOnly); | |||||
if (isHidden != 0) | |||||
*isHidden = filenameFound.startsWithChar ('.'); | |||||
return true; | |||||
} | |||||
} | |||||
} | |||||
return false; | |||||
} | |||||
private: | |||||
String parentDir, wildCard; | |||||
const char* wildcardUTF8; | |||||
DIR* dir; | |||||
JUCE_DECLARE_NON_COPYABLE (Pimpl); | |||||
}; | |||||
DirectoryIterator::NativeIterator::NativeIterator (const File& directory, const String& wildCard) | |||||
: pimpl (new DirectoryIterator::NativeIterator::Pimpl (directory, wildCard)) | |||||
{ | |||||
} | |||||
DirectoryIterator::NativeIterator::~NativeIterator() | |||||
{ | |||||
} | |||||
bool DirectoryIterator::NativeIterator::next (String& filenameFound, | |||||
bool* const isDir, bool* const isHidden, int64* const fileSize, | |||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | |||||
{ | |||||
return pimpl->next (filenameFound, isDir, isHidden, fileSize, modTime, creationTime, isReadOnly); | |||||
} | |||||
//============================================================================== | |||||
bool PlatformUtilities::openDocument (const String& fileName, const String& parameters) | |||||
{ | |||||
} | |||||
void File::revealToUser() const | |||||
{ | |||||
} | |||||
#endif |
@@ -0,0 +1,98 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
const StringArray Font::findAllTypefaceNames() | |||||
{ | |||||
StringArray results; | |||||
// TODO | |||||
return results; | |||||
} | |||||
void Font::getPlatformDefaultFontNames (String& defaultSans, String& defaultSerif, String& defaultFixed, String& defaultFallback) | |||||
{ | |||||
// TODO | |||||
defaultSans = "Verdana"; | |||||
defaultSerif = "Times"; | |||||
defaultFixed = "Lucida Console"; | |||||
defaultFallback = "Tahoma"; | |||||
} | |||||
//============================================================================== | |||||
class AndroidTypeface : public Typeface | |||||
{ | |||||
public: | |||||
AndroidTypeface (const Font& font) | |||||
: Typeface (font.getTypefaceName()) | |||||
{ | |||||
// TODO | |||||
} | |||||
float getAscent() const | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
float getDescent() const | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
float getStringWidth (const String& text) | |||||
{ | |||||
// TODO | |||||
return 0; | |||||
} | |||||
void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool getOutlineForGlyph (int glyphNumber, Path& destPath) | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
private: | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidTypeface); | |||||
}; | |||||
//============================================================================== | |||||
const Typeface::Ptr Typeface::createSystemTypefaceFor (const Font& font) | |||||
{ | |||||
return new AndroidTypeface (font); | |||||
} | |||||
#endif |
@@ -0,0 +1,169 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
// TODO | |||||
class AndroidLowLevelGraphicsContext : public LowLevelGraphicsContext | |||||
{ | |||||
public: | |||||
AndroidLowLevelGraphicsContext() | |||||
{ | |||||
} | |||||
~AndroidLowLevelGraphicsContext() | |||||
{ | |||||
} | |||||
bool isVectorDevice() const { return false; } | |||||
//============================================================================== | |||||
void setOrigin (int x, int y) | |||||
{ | |||||
} | |||||
void addTransform (const AffineTransform& transform) | |||||
{ | |||||
} | |||||
float getScaleFactor() | |||||
{ | |||||
return 1.0f; | |||||
} | |||||
bool clipToRectangle (const Rectangle<int>& r) | |||||
{ | |||||
return false; | |||||
} | |||||
bool clipToRectangleList (const RectangleList& clipRegion) | |||||
{ | |||||
return false; | |||||
} | |||||
void excludeClipRectangle (const Rectangle<int>& r) | |||||
{ | |||||
} | |||||
void clipToPath (const Path& path, const AffineTransform& transform) | |||||
{ | |||||
} | |||||
void clipToImageAlpha (const Image& sourceImage, const AffineTransform& transform) | |||||
{ | |||||
} | |||||
bool clipRegionIntersects (const Rectangle<int>& r) | |||||
{ | |||||
return true; | |||||
} | |||||
const Rectangle<int> getClipBounds() const | |||||
{ | |||||
return Rectangle<int>(); | |||||
} | |||||
bool isClipEmpty() const | |||||
{ | |||||
return false; | |||||
} | |||||
void saveState() | |||||
{ | |||||
} | |||||
void restoreState() | |||||
{ | |||||
} | |||||
void beginTransparencyLayer (float opacity) | |||||
{ | |||||
} | |||||
void endTransparencyLayer() | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void setFill (const FillType& fillType) | |||||
{ | |||||
} | |||||
void setOpacity (float newOpacity) | |||||
{ | |||||
} | |||||
void setInterpolationQuality (Graphics::ResamplingQuality quality) | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void fillRect (const Rectangle<int>& r, bool replaceExistingContents) | |||||
{ | |||||
} | |||||
void fillPath (const Path& path, const AffineTransform& transform) | |||||
{ | |||||
} | |||||
void drawImage (const Image& sourceImage, const AffineTransform& transform, bool fillEntireClipAsTiles) | |||||
{ | |||||
} | |||||
void drawLine (const Line <float>& line) | |||||
{ | |||||
} | |||||
void drawVerticalLine (int x, float top, float bottom) | |||||
{ | |||||
} | |||||
void drawHorizontalLine (int y, float left, float right) | |||||
{ | |||||
} | |||||
void setFont (const Font& newFont) | |||||
{ | |||||
} | |||||
const Font getFont() | |||||
{ | |||||
return Font(); | |||||
} | |||||
void drawGlyph (int glyphNumber, const AffineTransform& transform) | |||||
{ | |||||
} | |||||
private: | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidLowLevelGraphicsContext); | |||||
}; | |||||
#endif |
@@ -0,0 +1,114 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
void MessageManager::doPlatformSpecificInitialisation() | |||||
{ | |||||
} | |||||
void MessageManager::doPlatformSpecificShutdown() | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
bool juce_dispatchNextMessageOnSystemQueue (const bool returnIfNoPendingMessages) | |||||
{ | |||||
// TODO | |||||
/* | |||||
The idea here is that this will check the system message queue, pull off a | |||||
message if there is one, deliver it, and return true if a message was delivered. | |||||
If the queue's empty, return false. | |||||
If the message is one of our special ones (i.e. a Message object being delivered, | |||||
this must call MessageManager::getInstance()->deliverMessage() to deliver it | |||||
*/ | |||||
return true; | |||||
} | |||||
//============================================================================== | |||||
bool juce_postMessageToSystemQueue (Message* message) | |||||
{ | |||||
// TODO | |||||
return true; | |||||
} | |||||
//============================================================================== | |||||
class AsyncFunctionCaller : public AsyncUpdater | |||||
{ | |||||
public: | |||||
static void* call (MessageCallbackFunction* func_, void* parameter_) | |||||
{ | |||||
if (MessageManager::getInstance()->isThisTheMessageThread()) | |||||
return func_ (parameter_); | |||||
AsyncFunctionCaller caller (func_, parameter_); | |||||
caller.triggerAsyncUpdate(); | |||||
caller.finished.wait(); | |||||
return caller.result; | |||||
} | |||||
void handleAsyncUpdate() | |||||
{ | |||||
result = (*func) (parameter); | |||||
finished.signal(); | |||||
} | |||||
private: | |||||
WaitableEvent finished; | |||||
MessageCallbackFunction* func; | |||||
void* parameter; | |||||
void* volatile result; | |||||
AsyncFunctionCaller (MessageCallbackFunction* func_, void* parameter_) | |||||
: result (0), func (func_), parameter (parameter_) | |||||
{} | |||||
JUCE_DECLARE_NON_COPYABLE (AsyncFunctionCaller); | |||||
}; | |||||
void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* func, void* parameter) | |||||
{ | |||||
return AsyncFunctionCaller::call (func, parameter); | |||||
} | |||||
//============================================================================== | |||||
void MessageManager::broadcastMessage (const String&) | |||||
{ | |||||
} | |||||
#endif |
@@ -0,0 +1,107 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
const StringArray MidiOutput::getDevices() | |||||
{ | |||||
StringArray devices; | |||||
return devices; | |||||
} | |||||
int MidiOutput::getDefaultDeviceIndex() | |||||
{ | |||||
return 0; | |||||
} | |||||
MidiOutput* MidiOutput::openDevice (int index) | |||||
{ | |||||
return 0; | |||||
} | |||||
MidiOutput::~MidiOutput() | |||||
{ | |||||
} | |||||
void MidiOutput::reset() | |||||
{ | |||||
} | |||||
bool MidiOutput::getVolume (float&, float&) | |||||
{ | |||||
return false; | |||||
} | |||||
void MidiOutput::setVolume (float, float) | |||||
{ | |||||
} | |||||
void MidiOutput::sendMessageNow (const MidiMessage&) | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
MidiInput::MidiInput (const String& name_) | |||||
: name (name_), | |||||
internal (0) | |||||
{ | |||||
} | |||||
MidiInput::~MidiInput() | |||||
{ | |||||
} | |||||
void MidiInput::start() | |||||
{ | |||||
} | |||||
void MidiInput::stop() | |||||
{ | |||||
} | |||||
int MidiInput::getDefaultDeviceIndex() | |||||
{ | |||||
return 0; | |||||
} | |||||
const StringArray MidiInput::getDevices() | |||||
{ | |||||
StringArray devs; | |||||
return devs; | |||||
} | |||||
MidiInput* MidiInput::openDevice (int index, MidiInputCallback* callback) | |||||
{ | |||||
return 0; | |||||
} | |||||
#endif |
@@ -0,0 +1,47 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
void SystemClipboard::copyTextToClipboard (const String& text) | |||||
{ | |||||
// TODO | |||||
} | |||||
const String SystemClipboard::getTextFromClipboard() | |||||
{ | |||||
String result; | |||||
// TODO | |||||
return result; | |||||
} | |||||
#endif |
@@ -0,0 +1,117 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
/* | |||||
This file wraps together all the android-specific code, so that | |||||
we can include all the native headers just once, and compile all our | |||||
platform-specific stuff in one big lump, keeping it out of the way of | |||||
the rest of the codebase. | |||||
*/ | |||||
#include "../../core/juce_TargetPlatform.h" | |||||
#if JUCE_ANDROID | |||||
#undef JUCE_BUILD_NATIVE | |||||
#define JUCE_BUILD_NATIVE 1 | |||||
#include "juce_android_NativeIncludes.h" | |||||
#include "../../core/juce_StandardHeader.h" | |||||
BEGIN_JUCE_NAMESPACE | |||||
//============================================================================== | |||||
#include "../../core/juce_Singleton.h" | |||||
#include "../../maths/juce_Random.h" | |||||
#include "../../core/juce_SystemStats.h" | |||||
#include "../../threads/juce_Process.h" | |||||
#include "../../threads/juce_Thread.h" | |||||
#include "../../threads/juce_InterProcessLock.h" | |||||
#include "../../io/files/juce_FileInputStream.h" | |||||
#include "../../io/files/juce_FileOutputStream.h" | |||||
#include "../../io/files/juce_NamedPipe.h" | |||||
#include "../../io/files/juce_DirectoryIterator.h" | |||||
#include "../../io/network/juce_URL.h" | |||||
#include "../../io/network/juce_MACAddress.h" | |||||
#include "../../core/juce_PlatformUtilities.h" | |||||
#include "../../text/juce_LocalisedStrings.h" | |||||
#include "../../utilities/juce_DeletedAtShutdown.h" | |||||
#include "../../application/juce_Application.h" | |||||
#include "../../utilities/juce_SystemClipboard.h" | |||||
#include "../../events/juce_MessageManager.h" | |||||
#include "../../gui/graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h" | |||||
#include "../../gui/graphics/imaging/juce_ImageFileFormat.h" | |||||
#include "../../gui/graphics/imaging/juce_CameraDevice.h" | |||||
#include "../../gui/components/windows/juce_ComponentPeer.h" | |||||
#include "../../gui/components/windows/juce_AlertWindow.h" | |||||
#include "../../gui/components/juce_Desktop.h" | |||||
#include "../../gui/components/menus/juce_MenuBarModel.h" | |||||
#include "../../gui/components/special/juce_OpenGLComponent.h" | |||||
#include "../../gui/components/special/juce_QuickTimeMovieComponent.h" | |||||
#include "../../gui/components/mouse/juce_DragAndDropContainer.h" | |||||
#include "../../gui/components/mouse/juce_MouseInputSource.h" | |||||
#include "../../gui/components/keyboard/juce_KeyPressMappingSet.h" | |||||
#include "../../gui/components/layout/juce_ComponentMovementWatcher.h" | |||||
#include "../../gui/components/special/juce_ActiveXControlComponent.h" | |||||
#include "../../gui/components/special/juce_WebBrowserComponent.h" | |||||
#include "../../gui/components/special/juce_DropShadower.h" | |||||
#include "../../gui/components/special/juce_SystemTrayIconComponent.h" | |||||
#include "../../gui/components/filebrowser/juce_FileChooser.h" | |||||
#include "../../gui/components/lookandfeel/juce_LookAndFeel.h" | |||||
#include "../../audio/audio_file_formats/juce_AudioCDBurner.h" | |||||
#include "../../audio/audio_file_formats/juce_AudioCDReader.h" | |||||
#include "../../audio/audio_sources/juce_AudioSource.h" | |||||
#include "../../audio/dsp/juce_AudioDataConverters.h" | |||||
#include "../../audio/devices/juce_AudioIODeviceType.h" | |||||
#include "../../audio/devices/juce_MidiOutput.h" | |||||
#include "../../audio/devices/juce_MidiInput.h" | |||||
#include "../../containers/juce_ScopedValueSetter.h" | |||||
#include "../common/juce_MidiDataConcatenator.h" | |||||
//============================================================================== | |||||
#define JUCE_INCLUDED_FILE 1 | |||||
// Now include the actual code files.. | |||||
#include "../common/juce_posix_SharedCode.h" | |||||
#include "juce_android_Files.cpp" | |||||
#include "../common/juce_posix_NamedPipe.cpp" | |||||
#include "juce_android_SystemStats.cpp" | |||||
#include "juce_android_Threads.cpp" | |||||
#include "juce_android_Network.cpp" | |||||
#include "juce_android_Messaging.cpp" | |||||
#include "juce_android_Fonts.cpp" | |||||
#include "juce_android_GraphicsContext.cpp" | |||||
#include "juce_android_Windowing.cpp" | |||||
#include "juce_android_FileChooser.cpp" | |||||
#include "juce_android_Misc.cpp" | |||||
#include "juce_android_WebBrowserComponent.cpp" | |||||
#include "juce_android_OpenGLComponent.cpp" | |||||
#include "juce_android_Midi.cpp" | |||||
#include "juce_android_Audio.cpp" | |||||
#include "juce_android_CameraDevice.cpp" | |||||
END_JUCE_NAMESPACE | |||||
#endif |
@@ -0,0 +1,54 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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_ANDROID_NATIVEINCLUDES_JUCEHEADER__ | |||||
#define __JUCE_ANDROID_NATIVEINCLUDES_JUCEHEADER__ | |||||
#include "../../core/juce_TargetPlatform.h" | |||||
#include "../../../juce_Config.h" | |||||
#include <pthread.h> | |||||
#include <sched.h> | |||||
#include <sys/time.h> | |||||
#include <utime.h> | |||||
#include <errno.h> | |||||
#include <fcntl.h> | |||||
#include <dlfcn.h> | |||||
#include <sys/stat.h> | |||||
#include <sys/statfs.h> | |||||
#include <sys/ptrace.h> | |||||
#include <sys/sysinfo.h> | |||||
#include <pwd.h> | |||||
#include <dirent.h> | |||||
#include <fnmatch.h> | |||||
#if JUCE_OPENGL | |||||
#include <GLES/gl.h> | |||||
#endif | |||||
#endif // __JUCE_ANDROID_NATIVEINCLUDES_JUCEHEADER__ |
@@ -0,0 +1,112 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
void MACAddress::findAllAddresses (Array<MACAddress>& result) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAddress, | |||||
const String& emailSubject, | |||||
const String& bodyText, | |||||
const StringArray& filesToAttach) | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
//============================================================================== | |||||
class WebInputStream : public InputStream | |||||
{ | |||||
public: | |||||
//============================================================================== | |||||
WebInputStream (const String& address_, bool isPost_, const MemoryBlock& postData_, | |||||
URL::OpenStreamProgressCallback* progressCallback, void* progressCallbackContext, | |||||
const String& headers_, int timeOutMs_, StringPairArray* responseHeaders) | |||||
{ | |||||
// TODO | |||||
openedOk = false; | |||||
} | |||||
~WebInputStream() | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
bool isExhausted() | |||||
{ | |||||
return true; // TODO | |||||
} | |||||
int64 getPosition() | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
int64 getTotalLength() | |||||
{ | |||||
return -1; // TODO | |||||
} | |||||
int read (void* buffer, int bytesToRead) | |||||
{ | |||||
// TODO | |||||
return 0; | |||||
} | |||||
bool setPosition (int64 wantedPos) | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
//============================================================================== | |||||
bool openedOk; | |||||
private: | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WebInputStream); | |||||
}; | |||||
InputStream* URL::createNativeStream (const String& address, bool isPost, const MemoryBlock& postData, | |||||
OpenStreamProgressCallback* progressCallback, void* progressCallbackContext, | |||||
const String& headers, const int timeOutMs, StringPairArray* responseHeaders) | |||||
{ | |||||
ScopedPointer <WebInputStream> wi (new WebInputStream (address, isPost, postData, | |||||
progressCallback, progressCallbackContext, | |||||
headers, timeOutMs, responseHeaders)); | |||||
return wi->openedOk ? wi.release() : 0; | |||||
} | |||||
#endif |
@@ -0,0 +1,55 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE && JUCE_OPENGL | |||||
//============================================================================== | |||||
// TODO | |||||
OpenGLContext* OpenGLComponent::createContext() | |||||
{ | |||||
return 0; | |||||
} | |||||
void* OpenGLComponent::getNativeWindowHandle() const | |||||
{ | |||||
return 0; | |||||
} | |||||
void juce_glViewport (const int w, const int h) | |||||
{ | |||||
// glViewport (0, 0, w, h); | |||||
} | |||||
void OpenGLPixelFormat::getAvailablePixelFormats (Component* component, | |||||
OwnedArray <OpenGLPixelFormat>& results) | |||||
{ | |||||
} | |||||
#endif |
@@ -0,0 +1,185 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
void PlatformUtilities::beep() | |||||
{ | |||||
// TODO | |||||
} | |||||
//============================================================================== | |||||
void Logger::outputDebugString (const String& text) | |||||
{ | |||||
// TODO | |||||
std::cerr << text << std::endl; | |||||
} | |||||
//============================================================================== | |||||
SystemStats::OperatingSystemType SystemStats::getOperatingSystemType() | |||||
{ | |||||
return Android; | |||||
} | |||||
const String SystemStats::getOperatingSystemName() | |||||
{ | |||||
return "Android"; | |||||
} | |||||
bool SystemStats::isOperatingSystem64Bit() | |||||
{ | |||||
#if JUCE_64BIT | |||||
return true; | |||||
#else | |||||
return false; | |||||
#endif | |||||
} | |||||
//============================================================================== | |||||
namespace LinuxStatsHelpers | |||||
{ | |||||
// TODO | |||||
const String getCpuInfo (const char* const key) | |||||
{ | |||||
StringArray lines; | |||||
lines.addLines (File ("/proc/cpuinfo").loadFileAsString()); | |||||
for (int i = lines.size(); --i >= 0;) // (NB - it's important that this runs in reverse order) | |||||
if (lines[i].startsWithIgnoreCase (key)) | |||||
return lines[i].fromFirstOccurrenceOf (":", false, false).trim(); | |||||
return String::empty; | |||||
} | |||||
} | |||||
const String SystemStats::getCpuVendor() | |||||
{ | |||||
return LinuxStatsHelpers::getCpuInfo ("vendor_id"); | |||||
} | |||||
int SystemStats::getCpuSpeedInMegaherz() | |||||
{ | |||||
return roundToInt (LinuxStatsHelpers::getCpuInfo ("cpu MHz").getFloatValue()); | |||||
} | |||||
int SystemStats::getMemorySizeInMegabytes() | |||||
{ | |||||
// TODO | |||||
struct sysinfo sysi; | |||||
if (sysinfo (&sysi) == 0) | |||||
return (sysi.totalram * sysi.mem_unit / (1024 * 1024)); | |||||
return 0; | |||||
} | |||||
int SystemStats::getPageSize() | |||||
{ | |||||
// TODO | |||||
return sysconf (_SC_PAGESIZE); | |||||
} | |||||
//============================================================================== | |||||
const String SystemStats::getLogonName() | |||||
{ | |||||
// TODO | |||||
const char* user = getenv ("USER"); | |||||
if (user == 0) | |||||
{ | |||||
struct passwd* const pw = getpwuid (getuid()); | |||||
if (pw != 0) | |||||
user = pw->pw_name; | |||||
} | |||||
return String::fromUTF8 (user); | |||||
} | |||||
const String SystemStats::getFullUserName() | |||||
{ | |||||
return getLogonName(); | |||||
} | |||||
//============================================================================== | |||||
void SystemStats::initialiseStats() | |||||
{ | |||||
// TODO | |||||
const String flags (LinuxStatsHelpers::getCpuInfo ("flags")); | |||||
cpuFlags.hasMMX = flags.contains ("mmx"); | |||||
cpuFlags.hasSSE = flags.contains ("sse"); | |||||
cpuFlags.hasSSE2 = flags.contains ("sse2"); | |||||
cpuFlags.has3DNow = flags.contains ("3dnow"); | |||||
// TODO | |||||
cpuFlags.numCpus = LinuxStatsHelpers::getCpuInfo ("processor").getIntValue() + 1; | |||||
} | |||||
void PlatformUtilities::fpuReset() {} | |||||
//============================================================================== | |||||
uint32 juce_millisecondsSinceStartup() throw() | |||||
{ | |||||
// TODO | |||||
timespec t; | |||||
clock_gettime (CLOCK_MONOTONIC, &t); | |||||
return t.tv_sec * 1000 + t.tv_nsec / 1000000; | |||||
} | |||||
int64 Time::getHighResolutionTicks() throw() | |||||
{ | |||||
// TODO | |||||
timespec t; | |||||
clock_gettime (CLOCK_MONOTONIC, &t); | |||||
return (t.tv_sec * (int64) 1000000) + (t.tv_nsec / (int64) 1000); | |||||
} | |||||
int64 Time::getHighResolutionTicksPerSecond() throw() | |||||
{ | |||||
// TODO | |||||
return 1000000; // (microseconds) | |||||
} | |||||
double Time::getMillisecondCounterHiRes() throw() | |||||
{ | |||||
return getHighResolutionTicks() * 0.001; | |||||
} | |||||
bool Time::setSystemTimeToThisTime() const | |||||
{ | |||||
jassertfalse; | |||||
return false; | |||||
} | |||||
#endif |
@@ -0,0 +1,86 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
/* | |||||
Note that a lot of methods that you'd expect to find in this file actually | |||||
live in juce_posix_SharedCode.h! | |||||
*/ | |||||
//============================================================================== | |||||
// sets the process to 0=low priority, 1=normal, 2=high, 3=realtime | |||||
void Process::setPriority (ProcessPriority prior) | |||||
{ | |||||
// TODO | |||||
struct sched_param param; | |||||
int policy, maxp, minp; | |||||
const int p = (int) prior; | |||||
if (p <= 1) | |||||
policy = SCHED_OTHER; | |||||
else | |||||
policy = SCHED_RR; | |||||
minp = sched_get_priority_min (policy); | |||||
maxp = sched_get_priority_max (policy); | |||||
if (p < 2) | |||||
param.sched_priority = 0; | |||||
else if (p == 2 ) | |||||
// Set to middle of lower realtime priority range | |||||
param.sched_priority = minp + (maxp - minp) / 4; | |||||
else | |||||
// Set to middle of higher realtime priority range | |||||
param.sched_priority = minp + (3 * (maxp - minp) / 4); | |||||
pthread_setschedparam (pthread_self(), policy, ¶m); | |||||
} | |||||
void Process::terminate() | |||||
{ | |||||
// TODO | |||||
exit (0); | |||||
} | |||||
JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() | |||||
{ | |||||
return false; | |||||
} | |||||
JUCE_API bool JUCE_CALLTYPE Process::isRunningUnderDebugger() | |||||
{ | |||||
return juce_isRunningUnderDebugger(); | |||||
} | |||||
void Process::raisePrivilege() {} | |||||
void Process::lowerPrivilege() {} | |||||
#endif |
@@ -0,0 +1,123 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_android_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE && JUCE_WEB_BROWSER | |||||
//============================================================================== | |||||
WebBrowserComponent::WebBrowserComponent (const bool unloadPageWhenBrowserIsHidden_) | |||||
: browser (0), | |||||
blankPageShown (false), | |||||
unloadPageWhenBrowserIsHidden (unloadPageWhenBrowserIsHidden_) | |||||
{ | |||||
setOpaque (true); | |||||
} | |||||
WebBrowserComponent::~WebBrowserComponent() | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void WebBrowserComponent::goToURL (const String& url, | |||||
const StringArray* headers, | |||||
const MemoryBlock* postData) | |||||
{ | |||||
lastURL = url; | |||||
lastHeaders.clear(); | |||||
if (headers != 0) | |||||
lastHeaders = *headers; | |||||
lastPostData.setSize (0); | |||||
if (postData != 0) | |||||
lastPostData = *postData; | |||||
blankPageShown = false; | |||||
} | |||||
void WebBrowserComponent::stop() | |||||
{ | |||||
} | |||||
void WebBrowserComponent::goBack() | |||||
{ | |||||
lastURL = String::empty; | |||||
blankPageShown = false; | |||||
} | |||||
void WebBrowserComponent::goForward() | |||||
{ | |||||
lastURL = String::empty; | |||||
} | |||||
void WebBrowserComponent::refresh() | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void WebBrowserComponent::paint (Graphics& g) | |||||
{ | |||||
g.fillAll (Colours::white); | |||||
} | |||||
void WebBrowserComponent::checkWindowAssociation() | |||||
{ | |||||
} | |||||
void WebBrowserComponent::reloadLastURL() | |||||
{ | |||||
if (lastURL.isNotEmpty()) | |||||
{ | |||||
goToURL (lastURL, &lastHeaders, &lastPostData); | |||||
lastURL = String::empty; | |||||
} | |||||
} | |||||
void WebBrowserComponent::parentHierarchyChanged() | |||||
{ | |||||
checkWindowAssociation(); | |||||
} | |||||
void WebBrowserComponent::resized() | |||||
{ | |||||
} | |||||
void WebBrowserComponent::visibilityChanged() | |||||
{ | |||||
checkWindowAssociation(); | |||||
} | |||||
bool WebBrowserComponent::pageAboutToLoad (const String& url) | |||||
{ | |||||
return true; | |||||
} | |||||
#endif |
@@ -0,0 +1,389 @@ | |||||
/* | |||||
============================================================================== | |||||
This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
Copyright 2004-10 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. | |||||
============================================================================== | |||||
*/ | |||||
// (This file gets included by juce_win32_NativeCode.cpp, rather than being | |||||
// compiled on its own). | |||||
#if JUCE_INCLUDED_FILE | |||||
//============================================================================== | |||||
class AndroidComponentPeer : public ComponentPeer | |||||
{ | |||||
public: | |||||
//============================================================================== | |||||
AndroidComponentPeer (Component* const component, const int windowStyleFlags) | |||||
: ComponentPeer (component, windowStyleFlags) | |||||
{ | |||||
// TODO | |||||
} | |||||
~AndroidComponentPeer() | |||||
{ | |||||
} | |||||
void* getNativeHandle() const | |||||
{ | |||||
return 0; // TODO | |||||
} | |||||
void setVisible (bool shouldBeVisible) | |||||
{ | |||||
} | |||||
void setTitle (const String& title) | |||||
{ | |||||
} | |||||
void setPosition (int x, int y) | |||||
{ | |||||
// TODO | |||||
} | |||||
void setSize (int w, int h) | |||||
{ | |||||
} | |||||
void setBounds (int x, int y, int w, int h, bool isNowFullScreen) | |||||
{ | |||||
// TODO | |||||
} | |||||
const Rectangle<int> getBounds() const | |||||
{ | |||||
// TODO | |||||
return Rectangle<int>(); | |||||
} | |||||
const Point<int> getScreenPosition() const | |||||
{ | |||||
// TODO | |||||
return Point<int>(); | |||||
} | |||||
const Point<int> localToGlobal (const Point<int>& relativePosition) | |||||
{ | |||||
// TODO | |||||
return relativePosition + getScreenPosition(); | |||||
} | |||||
const Point<int> globalToLocal (const Point<int>& screenPosition) | |||||
{ | |||||
// TODO | |||||
return screenPosition - getScreenPosition(); | |||||
} | |||||
void setMinimised (bool shouldBeMinimised) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool isMinimised() const | |||||
{ | |||||
} | |||||
void setFullScreen (bool shouldBeFullScreen) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool isFullScreen() const | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
void setIcon (const Image& newIcon) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool contains (const Point<int>& position, bool trueIfInAChildWindow) const | |||||
{ | |||||
// TODO | |||||
return isPositiveAndBelow (position.getX(), component->getWidth()) | |||||
&& isPositiveAndBelow (position.getY(), component->getHeight()); | |||||
} | |||||
const BorderSize<int> getFrameSize() const | |||||
{ | |||||
// TODO | |||||
return BorderSize<int>(); | |||||
} | |||||
bool setAlwaysOnTop (bool alwaysOnTop) | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
void toFront (bool makeActive) | |||||
{ | |||||
// TODO | |||||
} | |||||
void toBehind (ComponentPeer* other) | |||||
{ | |||||
// TODO | |||||
} | |||||
//============================================================================== | |||||
bool isFocused() const | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
void grabFocus() | |||||
{ | |||||
// TODO | |||||
} | |||||
void textInputRequired (const Point<int>& position) | |||||
{ | |||||
// TODO | |||||
} | |||||
//============================================================================== | |||||
void repaint (const Rectangle<int>& area) | |||||
{ | |||||
// TODO | |||||
} | |||||
void performAnyPendingRepaintsNow() | |||||
{ | |||||
// TODO | |||||
} | |||||
void setAlpha (float newAlpha) | |||||
{ | |||||
// TODO | |||||
} | |||||
private: | |||||
//============================================================================== | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AndroidComponentPeer); | |||||
}; | |||||
ComponentPeer* Component::createNewPeer (int styleFlags, void*) | |||||
{ | |||||
return new AndroidComponentPeer (this, styleFlags); | |||||
} | |||||
//============================================================================== | |||||
bool Desktop::canUseSemiTransparentWindows() throw() | |||||
{ | |||||
return true; // TODO | |||||
} | |||||
Desktop::DisplayOrientation Desktop::getCurrentOrientation() const | |||||
{ | |||||
// TODO | |||||
return upright; | |||||
} | |||||
void Desktop::createMouseInputSources() | |||||
{ | |||||
// This creates a mouse input source for each possible finger | |||||
for (int i = 0; i < 10; ++i) | |||||
mouseSources.add (new MouseInputSource (i, false)); | |||||
} | |||||
const Point<int> MouseInputSource::getCurrentMousePosition() | |||||
{ | |||||
// TODO | |||||
return Point<int>(); | |||||
} | |||||
void Desktop::setMousePosition (const Point<int>& newPosition) | |||||
{ | |||||
// not needed | |||||
} | |||||
//============================================================================== | |||||
bool KeyPress::isKeyCurrentlyDown (const int keyCode) | |||||
{ | |||||
// TODO | |||||
return false; | |||||
} | |||||
void ModifierKeys::updateCurrentModifiers() throw() | |||||
{ | |||||
// not needed | |||||
} | |||||
const ModifierKeys ModifierKeys::getCurrentModifiersRealtime() throw() | |||||
{ | |||||
// TODO | |||||
return ModifierKeys(); | |||||
} | |||||
//============================================================================== | |||||
bool Process::isForegroundProcess() | |||||
{ | |||||
return true; // TODO | |||||
} | |||||
//============================================================================== | |||||
bool AlertWindow::showNativeDialogBox (const String& title, | |||||
const String& bodyText, | |||||
bool isOkCancel) | |||||
{ | |||||
// TODO | |||||
} | |||||
//============================================================================== | |||||
Image::SharedImage* Image::SharedImage::createNativeImage (PixelFormat format, int width, int height, bool clearImage) | |||||
{ | |||||
return createSoftwareImage (format, width, height, clearImage); | |||||
} | |||||
void Desktop::setScreenSaverEnabled (const bool isEnabled) | |||||
{ | |||||
// TODO | |||||
} | |||||
bool Desktop::isScreenSaverEnabled() | |||||
{ | |||||
return true; | |||||
} | |||||
//============================================================================== | |||||
void juce_setKioskComponent (Component* kioskModeComponent, bool enableOrDisable, bool /*allowMenusAndBars*/) | |||||
{ | |||||
} | |||||
//============================================================================== | |||||
void juce_updateMultiMonitorInfo (Array <Rectangle<int> >& monitorCoords, const bool clipToWorkArea) | |||||
{ | |||||
// TODO | |||||
monitorCoords.add (Rectangle<int> (0, 0, 640, 480)); | |||||
} | |||||
//============================================================================== | |||||
const Image juce_createIconForFile (const File& file) | |||||
{ | |||||
Image image; | |||||
// TODO | |||||
return image; | |||||
} | |||||
//============================================================================== | |||||
void* MouseCursor::createMouseCursorFromImage (const Image& image, int hotspotX, int hotspotY) | |||||
{ | |||||
return 0; | |||||
} | |||||
void MouseCursor::deleteMouseCursor (void* const cursorHandle, const bool isStandard) | |||||
{ | |||||
} | |||||
void* MouseCursor::createStandardMouseCursor (const MouseCursor::StandardCursorType type) | |||||
{ | |||||
return 0; | |||||
} | |||||
//============================================================================== | |||||
void MouseCursor::showInWindow (ComponentPeer*) const {} | |||||
void MouseCursor::showInAllWindows() const {} | |||||
//============================================================================== | |||||
bool DragAndDropContainer::performExternalDragDropOfFiles (const StringArray& files, const bool canMove) | |||||
{ | |||||
return false; | |||||
} | |||||
bool DragAndDropContainer::performExternalDragDropOfText (const String& text) | |||||
{ | |||||
return false; | |||||
} | |||||
//============================================================================== | |||||
const int extendedKeyModifier = 0x10000; | |||||
const int KeyPress::spaceKey = ' '; | |||||
const int KeyPress::returnKey = 0x0d; | |||||
const int KeyPress::escapeKey = 0x1b; | |||||
const int KeyPress::backspaceKey = 0x7f; | |||||
const int KeyPress::leftKey = extendedKeyModifier + 1; | |||||
const int KeyPress::rightKey = extendedKeyModifier + 2; | |||||
const int KeyPress::upKey = extendedKeyModifier + 3; | |||||
const int KeyPress::downKey = extendedKeyModifier + 4; | |||||
const int KeyPress::pageUpKey = extendedKeyModifier + 5; | |||||
const int KeyPress::pageDownKey = extendedKeyModifier + 6; | |||||
const int KeyPress::endKey = extendedKeyModifier + 7; | |||||
const int KeyPress::homeKey = extendedKeyModifier + 8; | |||||
const int KeyPress::deleteKey = extendedKeyModifier + 9; | |||||
const int KeyPress::insertKey = -1; | |||||
const int KeyPress::tabKey = 9; | |||||
const int KeyPress::F1Key = extendedKeyModifier + 10; | |||||
const int KeyPress::F2Key = extendedKeyModifier + 11; | |||||
const int KeyPress::F3Key = extendedKeyModifier + 12; | |||||
const int KeyPress::F4Key = extendedKeyModifier + 13; | |||||
const int KeyPress::F5Key = extendedKeyModifier + 14; | |||||
const int KeyPress::F6Key = extendedKeyModifier + 16; | |||||
const int KeyPress::F7Key = extendedKeyModifier + 17; | |||||
const int KeyPress::F8Key = extendedKeyModifier + 18; | |||||
const int KeyPress::F9Key = extendedKeyModifier + 19; | |||||
const int KeyPress::F10Key = extendedKeyModifier + 20; | |||||
const int KeyPress::F11Key = extendedKeyModifier + 21; | |||||
const int KeyPress::F12Key = extendedKeyModifier + 22; | |||||
const int KeyPress::F13Key = extendedKeyModifier + 23; | |||||
const int KeyPress::F14Key = extendedKeyModifier + 24; | |||||
const int KeyPress::F15Key = extendedKeyModifier + 25; | |||||
const int KeyPress::F16Key = extendedKeyModifier + 26; | |||||
const int KeyPress::numberPad0 = extendedKeyModifier + 27; | |||||
const int KeyPress::numberPad1 = extendedKeyModifier + 28; | |||||
const int KeyPress::numberPad2 = extendedKeyModifier + 29; | |||||
const int KeyPress::numberPad3 = extendedKeyModifier + 30; | |||||
const int KeyPress::numberPad4 = extendedKeyModifier + 31; | |||||
const int KeyPress::numberPad5 = extendedKeyModifier + 32; | |||||
const int KeyPress::numberPad6 = extendedKeyModifier + 33; | |||||
const int KeyPress::numberPad7 = extendedKeyModifier + 34; | |||||
const int KeyPress::numberPad8 = extendedKeyModifier + 35; | |||||
const int KeyPress::numberPad9 = extendedKeyModifier + 36; | |||||
const int KeyPress::numberPadAdd = extendedKeyModifier + 37; | |||||
const int KeyPress::numberPadSubtract = extendedKeyModifier + 38; | |||||
const int KeyPress::numberPadMultiply = extendedKeyModifier + 39; | |||||
const int KeyPress::numberPadDivide = extendedKeyModifier + 40; | |||||
const int KeyPress::numberPadSeparator = extendedKeyModifier + 41; | |||||
const int KeyPress::numberPadDecimalPoint = extendedKeyModifier + 42; | |||||
const int KeyPress::numberPadEquals = extendedKeyModifier + 43; | |||||
const int KeyPress::numberPadDelete = extendedKeyModifier + 44; | |||||
const int KeyPress::playKey = extendedKeyModifier + 45; | |||||
const int KeyPress::stopKey = extendedKeyModifier + 46; | |||||
const int KeyPress::fastForwardKey = extendedKeyModifier + 47; | |||||
const int KeyPress::rewindKey = extendedKeyModifier + 48; | |||||
#endif |
@@ -551,7 +551,23 @@ const String File::getVolumeLabel() const | |||||
int File::getVolumeSerialNumber() const | int File::getVolumeSerialNumber() const | ||||
{ | { | ||||
return 0; // xxx | |||||
int result = 0; | |||||
/* int fd = open (getFullPathName().toUTF8(), O_RDONLY | O_NONBLOCK); | |||||
char info [512]; | |||||
#ifndef HDIO_GET_IDENTITY | |||||
#define HDIO_GET_IDENTITY 0x030d | |||||
#endif | |||||
if (ioctl (fd, HDIO_GET_IDENTITY, info) == 0) | |||||
{ | |||||
DBG (String (info + 20, 20)); | |||||
result = String (info + 20, 20).trim().getIntValue(); | |||||
} | |||||
close (fd);*/ | |||||
return result; | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -72,7 +72,7 @@ public: | |||||
{ | { | ||||
if (JUCEApplication::getInstance() != 0) | if (JUCEApplication::getInstance() != 0) | ||||
{ | { | ||||
JUCEApplication::getInstance()->anotherInstanceStarted (nsStringToJuce (filename)); | |||||
JUCEApplication::getInstance()->anotherInstanceStarted (quotedIfContainsSpaces (filename)); | |||||
return YES; | return YES; | ||||
} | } | ||||
@@ -83,18 +83,10 @@ public: | |||||
{ | { | ||||
StringArray files; | StringArray files; | ||||
for (unsigned int i = 0; i < [filenames count]; ++i) | for (unsigned int i = 0; i < [filenames count]; ++i) | ||||
{ | |||||
String filename (nsStringToJuce ((NSString*) [filenames objectAtIndex: i])); | |||||
if (filename.containsChar (' ')) | |||||
filename = filename.quoted('"'); | |||||
files.add (filename); | |||||
} | |||||
files.add (quotedIfContainsSpaces ((NSString*) [filenames objectAtIndex: i])); | |||||
if (files.size() > 0 && JUCEApplication::getInstance() != 0) | if (files.size() > 0 && JUCEApplication::getInstance() != 0) | ||||
{ | |||||
JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" ")); | JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" ")); | ||||
} | |||||
} | } | ||||
virtual void focusChanged() | virtual void focusChanged() | ||||
@@ -130,6 +122,15 @@ private: | |||||
CFRunLoopRef runLoop; | CFRunLoopRef runLoop; | ||||
CFRunLoopSourceRef runLoopSource; | CFRunLoopSourceRef runLoopSource; | ||||
MessageQueue messageQueue; | MessageQueue messageQueue; | ||||
static const String quotedIfContainsSpaces (NSString* file) | |||||
{ | |||||
String s (nsStringToJuce (file)); | |||||
if (s.containsChar (' ')) | |||||
s = s.quoted ('"'); | |||||
return s; | |||||
} | |||||
}; | }; | ||||