mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-22 01:34:21 +00:00
Added an initial set of Android stub files.
This commit is contained in:
parent
e235912ae5
commit
9ea6fb4cd1
29 changed files with 2907 additions and 136 deletions
|
|
@ -330,6 +330,22 @@ OBJECTS := \
|
|||
$(OBJDIR)/juce_win32_WASAPI_c7c6c3c3.o \
|
||||
$(OBJDIR)/juce_win32_WebBrowserComponent_2a4dd461.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_Identifier_e99ee619.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"
|
||||
@$(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
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_CharacterFunctions.cpp"
|
||||
|
|
|
|||
|
|
@ -325,6 +325,22 @@
|
|||
6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; };
|
||||
B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; };
|
||||
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; };
|
||||
B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -1798,11 +1831,30 @@
|
|||
5D32C8856093B33438AEB758,
|
||||
8758E6857070D7E5406FDE3F,
|
||||
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 = (
|
||||
DDB94A7300C3D1F2E9E51C47,
|
||||
1004A23965A4DB0FCC441ED3,
|
||||
13513EE40AD6BAB30E26C88B,
|
||||
64DE2D4534D79E74C40A0DEE ); name = native; sourceTree = "<group>"; };
|
||||
64DE2D4534D79E74C40A0DEE,
|
||||
FBE56423C0482E49EF317C85 ); name = native; sourceTree = "<group>"; };
|
||||
C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = (
|
||||
76E2084D2148068F9138A816,
|
||||
33F16EE4F38C9B76E7FAEF78,
|
||||
|
|
@ -2281,6 +2333,22 @@
|
|||
6801797B247CB3A6890C0AB0,
|
||||
B0B82AB2D9B0950F67B11BEA,
|
||||
379B4A89E5403B57A2009E76,
|
||||
6ED121D4FEE575408B9612AB,
|
||||
9ADE436BC62FB84E297C1CA0,
|
||||
03D534E5B18011C3E03CDD40,
|
||||
06E2ED69E9FAC199D559F276,
|
||||
9801CCC32F01818B39CFD88E,
|
||||
FE553DDF4F83DABF13DF4A2B,
|
||||
68DB48B0EC9E5E37C6B5281C,
|
||||
96E9017FBE104E9EADC586B1,
|
||||
BA6C6EF4C88D49C640DA7BF6,
|
||||
0B124D9CE361014F815A5958,
|
||||
C701E3FCB168A3B4A31C4242,
|
||||
04F6D85CCF26A7F6DE589876,
|
||||
62912A2DA2F01212517938E7,
|
||||
36D770FCDAC86084A495B96E,
|
||||
DA2A4714F1A6957A4F2B8D48,
|
||||
CE9A64287FCEF00DD2BA6AEE,
|
||||
2AC6F3BFAAA21E21076A9F8D,
|
||||
B8DD4DB0BD1A6B38BBF92413,
|
||||
63BEC07A51CB8E516B38ECD4,
|
||||
|
|
|
|||
|
|
@ -933,6 +933,25 @@
|
|||
<File RelativePath="..\..\src\native\windows\juce_win32_WebBrowserComponent.cpp"/>
|
||||
<File RelativePath="..\..\src\native\windows\juce_win32_Windowing.cpp"/>
|
||||
</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 Name="text">
|
||||
<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_Windowing.cpp"/>
|
||||
</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 Name="text">
|
||||
<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_Windowing.cpp"/>
|
||||
</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 Name="text">
|
||||
<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_WebBrowserComponent.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_Identifier.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_DynamicLibraryLoader.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_CharPointer_UTF8.h"/>
|
||||
<ClInclude Include="..\..\src\text\juce_CharPointer_UTF16.h"/>
|
||||
|
|
|
|||
|
|
@ -173,6 +173,9 @@
|
|||
<Filter Include="Juce\Source\native\windows">
|
||||
<UniqueIdentifier>{CFBC5FA1-5A68-B012-A852-1D798CD2CBDF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Juce\Source\native\android">
|
||||
<UniqueIdentifier>{31BF14BA-F3B3-9EAE-8D43-0972CA67D1CF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Juce\Source\text">
|
||||
<UniqueIdentifier>{56CD7BE1-9B0B-A873-6126-8F47C2268CD3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -1174,6 +1177,54 @@
|
|||
<ClCompile Include="..\..\src\native\windows\juce_win32_Windowing.cpp">
|
||||
<Filter>Juce\Source\native\windows</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\text</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -2199,6 +2250,9 @@
|
|||
<ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h">
|
||||
<Filter>Juce\Source\native\windows</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\native\android\juce_android_NativeIncludes.h">
|
||||
<Filter>Juce\Source\native\android</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\text\juce_CharacterFunctions.h">
|
||||
<Filter>Juce\Source\text</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -325,6 +325,22 @@
|
|||
6801797B247CB3A6890C0AB0 = { isa = PBXBuildFile; fileRef = 5D32C8856093B33438AEB758; };
|
||||
B0B82AB2D9B0950F67B11BEA = { isa = PBXBuildFile; fileRef = 8758E6857070D7E5406FDE3F; };
|
||||
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; };
|
||||
B8DD4DB0BD1A6B38BBF92413 = { isa = PBXBuildFile; fileRef = 8273A206FB309671284959DD; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -1798,11 +1831,30 @@
|
|||
5D32C8856093B33438AEB758,
|
||||
8758E6857070D7E5406FDE3F,
|
||||
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 = (
|
||||
DDB94A7300C3D1F2E9E51C47,
|
||||
1004A23965A4DB0FCC441ED3,
|
||||
13513EE40AD6BAB30E26C88B,
|
||||
64DE2D4534D79E74C40A0DEE ); name = native; sourceTree = "<group>"; };
|
||||
64DE2D4534D79E74C40A0DEE,
|
||||
FBE56423C0482E49EF317C85 ); name = native; sourceTree = "<group>"; };
|
||||
C6B52BCD0CB1B809D6DE555A = { isa = PBXGroup; children = (
|
||||
76E2084D2148068F9138A816,
|
||||
33F16EE4F38C9B76E7FAEF78,
|
||||
|
|
@ -2285,6 +2337,22 @@
|
|||
6801797B247CB3A6890C0AB0,
|
||||
B0B82AB2D9B0950F67B11BEA,
|
||||
379B4A89E5403B57A2009E76,
|
||||
6ED121D4FEE575408B9612AB,
|
||||
9ADE436BC62FB84E297C1CA0,
|
||||
03D534E5B18011C3E03CDD40,
|
||||
06E2ED69E9FAC199D559F276,
|
||||
9801CCC32F01818B39CFD88E,
|
||||
FE553DDF4F83DABF13DF4A2B,
|
||||
68DB48B0EC9E5E37C6B5281C,
|
||||
96E9017FBE104E9EADC586B1,
|
||||
BA6C6EF4C88D49C640DA7BF6,
|
||||
0B124D9CE361014F815A5958,
|
||||
C701E3FCB168A3B4A31C4242,
|
||||
04F6D85CCF26A7F6DE589876,
|
||||
62912A2DA2F01212517938E7,
|
||||
36D770FCDAC86084A495B96E,
|
||||
DA2A4714F1A6957A4F2B8D48,
|
||||
CE9A64287FCEF00DD2BA6AEE,
|
||||
2AC6F3BFAAA21E21076A9F8D,
|
||||
B8DD4DB0BD1A6B38BBF92413,
|
||||
63BEC07A51CB8E516B38ECD4,
|
||||
|
|
|
|||
36
Juce.jucer
36
Juce.jucer
|
|
@ -1429,6 +1429,42 @@
|
|||
<FILE id="u1rCbQqVT" name="juce_win32_Windowing.cpp" compile="1" resource="0"
|
||||
file="src/native/windows/juce_win32_Windowing.cpp"/>
|
||||
</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 id="DmPUetFJW" name="text">
|
||||
<FILE id="jr5l0DTZv" name="juce_CharacterFunctions.cpp" compile="1"
|
||||
|
|
|
|||
|
|
@ -253754,7 +253754,23 @@ const String File::getVolumeLabel() 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)
|
||||
|
|
@ -263645,7 +263661,23 @@ const String File::getVolumeLabel() 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)
|
||||
|
|
@ -275429,7 +275461,7 @@ public:
|
|||
{
|
||||
if (JUCEApplication::getInstance() != 0)
|
||||
{
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (nsStringToJuce (filename));
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (quotedIfContainsSpaces (filename));
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
|
@ -275440,18 +275472,10 @@ public:
|
|||
{
|
||||
StringArray files;
|
||||
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)
|
||||
{
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" "));
|
||||
}
|
||||
}
|
||||
|
||||
virtual void focusChanged()
|
||||
|
|
@ -275487,6 +275511,15 @@ private:
|
|||
CFRunLoopRef runLoop;
|
||||
CFRunLoopSourceRef runLoopSource;
|
||||
MessageQueue messageQueue;
|
||||
|
||||
static const String quotedIfContainsSpaces (NSString* file)
|
||||
{
|
||||
String s (nsStringToJuce (file));
|
||||
if (s.containsChar (' '))
|
||||
s = s.quoted ('"');
|
||||
|
||||
return s;
|
||||
}
|
||||
};
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
@ -278925,7 +278958,23 @@ const String File::getVolumeLabel() 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)
|
||||
|
|
@ -279178,7 +279227,7 @@ void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask)
|
|||
|
||||
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);
|
||||
|
||||
|
|
@ -279202,7 +279251,7 @@ bool File::copyInternal (const File& dest) const
|
|||
|
||||
void File::findFileSystemRoots (Array<File>& destArray)
|
||||
{
|
||||
// TODO appropriate on android?
|
||||
// TODO
|
||||
|
||||
destArray.add (File ("/"));
|
||||
}
|
||||
|
|
@ -279224,7 +279273,7 @@ bool File::isOnRemovableDrive() const
|
|||
|
||||
bool File::isHidden() const
|
||||
{
|
||||
// TODO is this appropriate for android?
|
||||
// TODO
|
||||
|
||||
return getFileName().startsWithChar ('.');
|
||||
}
|
||||
|
|
@ -279248,7 +279297,7 @@ namespace
|
|||
|
||||
const File File::getLinkedTarget() const
|
||||
{
|
||||
// TODO - same as linux?
|
||||
// TODO
|
||||
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)
|
||||
{
|
||||
|
||||
// TODO this stuff is all copied from linux, needs sanity-checking for android
|
||||
// TODO
|
||||
|
||||
switch (type)
|
||||
{
|
||||
|
|
@ -279340,8 +279389,6 @@ bool File::moveToTrash() const
|
|||
return false;
|
||||
}
|
||||
|
||||
// TODO If the normal posix directory functions work, the following stuff should all be fine...
|
||||
|
||||
class DirectoryIterator::NativeIterator::Pimpl
|
||||
{
|
||||
public:
|
||||
|
|
@ -279630,7 +279677,7 @@ void PlatformUtilities::beep()
|
|||
|
||||
void Logger::outputDebugString (const String& text)
|
||||
{
|
||||
// TODO is this ok..?
|
||||
// TODO
|
||||
std::cerr << text << std::endl;
|
||||
}
|
||||
|
||||
|
|
@ -279655,7 +279702,7 @@ bool SystemStats::isOperatingSystem64Bit()
|
|||
|
||||
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)
|
||||
{
|
||||
StringArray lines;
|
||||
|
|
@ -279693,7 +279740,7 @@ int SystemStats::getMemorySizeInMegabytes()
|
|||
|
||||
int SystemStats::getPageSize()
|
||||
{
|
||||
// TODO if this doesn't work, just return 0, it's not important
|
||||
// TODO
|
||||
return sysconf (_SC_PAGESIZE);
|
||||
}
|
||||
|
||||
|
|
@ -279720,15 +279767,14 @@ const String SystemStats::getFullUserName()
|
|||
|
||||
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"));
|
||||
cpuFlags.hasMMX = flags.contains ("mmx");
|
||||
cpuFlags.hasSSE = flags.contains ("sse");
|
||||
cpuFlags.hasSSE2 = flags.contains ("sse2");
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -279736,8 +279782,7 @@ void PlatformUtilities::fpuReset() {}
|
|||
|
||||
uint32 juce_millisecondsSinceStartup() throw()
|
||||
{
|
||||
// TODO must return a monotonically rising clock with decent accuracy
|
||||
|
||||
// TODO
|
||||
timespec t;
|
||||
clock_gettime (CLOCK_MONOTONIC, &t);
|
||||
|
||||
|
|
@ -279786,14 +279831,10 @@ bool Time::setSystemTimeToThisTime() const
|
|||
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
|
||||
void Process::setPriority (ProcessPriority prior)
|
||||
{
|
||||
// TODO this might work, but if not, it might need tweaking
|
||||
// TODO
|
||||
|
||||
struct sched_param param;
|
||||
int policy, maxp, minp;
|
||||
|
|
@ -279822,7 +279863,7 @@ void Process::setPriority (ProcessPriority prior)
|
|||
|
||||
void Process::terminate()
|
||||
{
|
||||
// TODO correct way to kill the process?
|
||||
// TODO
|
||||
exit (0);
|
||||
}
|
||||
|
||||
|
|
@ -279850,8 +279891,7 @@ void Process::lowerPrivilege() {}
|
|||
|
||||
void MACAddress::findAllAddresses (Array<MACAddress>& result)
|
||||
{
|
||||
// TODO not a big priority to do this
|
||||
|
||||
// TODO
|
||||
}
|
||||
|
||||
bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAddress,
|
||||
|
|
@ -279859,13 +279899,11 @@ bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAdd
|
|||
const String& bodyText,
|
||||
const StringArray& filesToAttach)
|
||||
{
|
||||
// TODO might be nice, but low priority
|
||||
// TODO
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO This class needs to act as a HTTP or FTP stream
|
||||
|
||||
class WebInputStream : public InputStream
|
||||
{
|
||||
public:
|
||||
|
|
@ -279874,7 +279912,7 @@ public:
|
|||
URL::OpenStreamProgressCallback* progressCallback, void* progressCallbackContext,
|
||||
const String& headers_, int timeOutMs_, StringPairArray* responseHeaders)
|
||||
{
|
||||
// TODO try to open, set this flag if it fails
|
||||
// TODO
|
||||
openedOk = false;
|
||||
}
|
||||
|
||||
|
|
@ -279964,15 +280002,11 @@ bool juce_dispatchNextMessageOnSystemQueue (const bool returnIfNoPendingMessages
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
// TODO this stuff will probably work as it is..
|
||||
|
||||
class AsyncFunctionCaller : public AsyncUpdater
|
||||
{
|
||||
public:
|
||||
|
|
@ -280013,7 +280047,6 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* func
|
|||
|
||||
void MessageManager::broadcastMessage (const String&)
|
||||
{
|
||||
// TODO no need to bother with this
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -280029,26 +280062,20 @@ const StringArray Font::findAllTypefaceNames()
|
|||
{
|
||||
StringArray results;
|
||||
|
||||
// TODO find all the typefaces
|
||||
// TODO
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
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";
|
||||
defaultSerif = "Times";
|
||||
defaultFixed = "Lucida Console";
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
|
@ -280060,35 +280087,28 @@ public:
|
|||
|
||||
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
|
||||
{
|
||||
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)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
|
||||
|
|
@ -280110,8 +280130,7 @@ const Typeface::Ptr Typeface::createSystemTypefaceFor (const Font& font)
|
|||
// compiled on its own).
|
||||
#if JUCE_INCLUDED_FILE
|
||||
|
||||
// TODO - implement this lot! Probably need to make it wrap a Java2D graphics context.
|
||||
|
||||
// TODO
|
||||
class AndroidLowLevelGraphicsContext : public LowLevelGraphicsContext
|
||||
{
|
||||
public:
|
||||
|
|
@ -280253,15 +280272,6 @@ private:
|
|||
// compiled on its own).
|
||||
#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
|
||||
{
|
||||
public:
|
||||
|
|
@ -280269,8 +280279,7 @@ public:
|
|||
AndroidComponentPeer (Component* const component, const int 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()
|
||||
|
|
@ -280279,7 +280288,7 @@ public:
|
|||
|
||||
void* getNativeHandle() const
|
||||
{
|
||||
return 0; // TODO gets returned by Component::getWindowHandle() so should be whatever makes sense
|
||||
return 0; // TODO
|
||||
}
|
||||
|
||||
void setVisible (bool shouldBeVisible)
|
||||
|
|
@ -280292,7 +280301,7 @@ public:
|
|||
|
||||
void setPosition (int x, int y)
|
||||
{
|
||||
// TODO relative to desktop top-left
|
||||
// TODO
|
||||
}
|
||||
|
||||
void setSize (int w, int h)
|
||||
|
|
@ -280301,36 +280310,36 @@ public:
|
|||
|
||||
void setBounds (int x, int y, int w, int h, bool isNowFullScreen)
|
||||
{
|
||||
// TODO relative to desktop top-left
|
||||
// TODO
|
||||
}
|
||||
|
||||
const Rectangle<int> getBounds() const
|
||||
{
|
||||
// TODO relative to desktop top-left
|
||||
// TODO
|
||||
return Rectangle<int>();
|
||||
}
|
||||
|
||||
const Point<int> getScreenPosition() const
|
||||
{
|
||||
// TODO relative to desktop top-left
|
||||
// TODO
|
||||
return Point<int>();
|
||||
}
|
||||
|
||||
const Point<int> localToGlobal (const Point<int>& relativePosition)
|
||||
{
|
||||
// TODO probably ok as it is..
|
||||
// TODO
|
||||
return relativePosition + getScreenPosition();
|
||||
}
|
||||
|
||||
const Point<int> globalToLocal (const Point<int>& screenPosition)
|
||||
{
|
||||
// TODO probably ok as it is..
|
||||
// TODO
|
||||
return screenPosition - getScreenPosition();
|
||||
}
|
||||
|
||||
void setMinimised (bool shouldBeMinimised)
|
||||
{
|
||||
// TODO probably irrelevant on android
|
||||
// TODO
|
||||
}
|
||||
|
||||
bool isMinimised() const
|
||||
|
|
@ -280350,12 +280359,12 @@ public:
|
|||
|
||||
void setIcon (const Image& newIcon)
|
||||
{
|
||||
// TODO probably irrelevant
|
||||
// TODO
|
||||
}
|
||||
|
||||
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())
|
||||
&& isPositiveAndBelow (position.getY(), component->getHeight());
|
||||
|
|
@ -280369,7 +280378,7 @@ public:
|
|||
|
||||
bool setAlwaysOnTop (bool alwaysOnTop)
|
||||
{
|
||||
// TODO probably not needed
|
||||
// TODO
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -280396,23 +280405,22 @@ public:
|
|||
|
||||
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)
|
||||
{
|
||||
// TODO invalidate the given area (relative to this window's top left)
|
||||
// TODO
|
||||
}
|
||||
|
||||
void performAnyPendingRepaintsNow()
|
||||
{
|
||||
// TODO probably not needed
|
||||
// TODO
|
||||
}
|
||||
|
||||
void setAlpha (float newAlpha)
|
||||
{
|
||||
// TODO changes the window's overall transparency
|
||||
// TODO
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -280427,7 +280435,7 @@ ComponentPeer* Component::createNewPeer (int styleFlags, void*)
|
|||
|
||||
bool Desktop::canUseSemiTransparentWindows() throw()
|
||||
{
|
||||
return true; // TODO presumably this is true
|
||||
return true; // TODO
|
||||
}
|
||||
|
||||
Desktop::DisplayOrientation Desktop::getCurrentOrientation() const
|
||||
|
|
@ -280468,21 +280476,20 @@ void ModifierKeys::updateCurrentModifiers() 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();
|
||||
}
|
||||
|
||||
bool Process::isForegroundProcess()
|
||||
{
|
||||
return true; // TODO ?
|
||||
return true; // TODO
|
||||
}
|
||||
|
||||
bool AlertWindow::showNativeDialogBox (const String& title,
|
||||
const String& bodyText,
|
||||
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)
|
||||
{
|
||||
// TODO low priority, but might need doing at some point
|
||||
// TODO
|
||||
}
|
||||
|
||||
bool Desktop::isScreenSaverEnabled()
|
||||
|
|
@ -280507,7 +280514,7 @@ void juce_setKioskComponent (Component* kioskModeComponent, bool enableOrDisable
|
|||
|
||||
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));
|
||||
}
|
||||
|
|
@ -280516,7 +280523,7 @@ const Image juce_createIconForFile (const File& file)
|
|||
{
|
||||
Image image;
|
||||
|
||||
// TODO returns a file's icon.. No need to implement yet.
|
||||
// TODO
|
||||
|
||||
return image;
|
||||
}
|
||||
|
|
@ -280624,7 +280631,7 @@ void FileChooser::showPlatformDialog (Array<File>& results,
|
|||
bool selectMultipleFiles,
|
||||
FilePreviewComponent* extraInfoComponent)
|
||||
{
|
||||
// TODO probably not important to implement this right away..
|
||||
// TODO
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -280660,8 +280667,6 @@ const String SystemClipboard::getTextFromClipboard()
|
|||
// compiled on its own).
|
||||
#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_)
|
||||
: browser (0),
|
||||
blankPageShown (false),
|
||||
|
|
@ -280759,8 +280764,7 @@ bool WebBrowserComponent::pageAboutToLoad (const String& url)
|
|||
// compiled on its own).
|
||||
#if JUCE_INCLUDED_FILE && JUCE_OPENGL
|
||||
|
||||
// TODO - not urgent to implement the opengl stuff..
|
||||
|
||||
// TODO
|
||||
OpenGLContext* OpenGLComponent::createContext()
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -280791,8 +280795,6 @@ void OpenGLPixelFormat::getAvailablePixelFormats (Component* component,
|
|||
// compiled on its own).
|
||||
#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()
|
||||
{
|
||||
StringArray devices;
|
||||
|
|
@ -280891,7 +280893,7 @@ public:
|
|||
numInputChannels = 2;
|
||||
numOutputChannels = 2;
|
||||
|
||||
// TODO initialise as needed..
|
||||
// TODO
|
||||
}
|
||||
|
||||
~AndroidAudioIODevice()
|
||||
|
|
@ -280902,7 +280904,7 @@ public:
|
|||
const StringArray getOutputChannelNames()
|
||||
{
|
||||
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");
|
||||
return s;
|
||||
}
|
||||
|
|
@ -280940,7 +280942,7 @@ public:
|
|||
activeInputChans.setRange (2, activeInputChans.getHighestBit(), false);
|
||||
numInputChannels = activeInputChans.countNumberOfSetBits();
|
||||
|
||||
// TODO actually open it here, setting lastError if it fails..
|
||||
// TODO
|
||||
|
||||
actualBufferSize = 0; // whatever is possible based on preferredBufferSize
|
||||
|
||||
|
|
@ -280955,18 +280957,18 @@ public:
|
|||
{
|
||||
isRunning = false;
|
||||
|
||||
// TODO close the device here
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
int getOutputLatencyInSamples()
|
||||
{
|
||||
return 0; // TODO should be found out if poss
|
||||
return 0; // TODO
|
||||
}
|
||||
|
||||
int getInputLatencyInSamples()
|
||||
{
|
||||
return 0; // TODO should be found out if poss
|
||||
return 0; // TODO
|
||||
}
|
||||
|
||||
bool isOpen() { return isRunning; }
|
||||
|
|
@ -280978,7 +280980,7 @@ public:
|
|||
const String getLastError() { return lastError; }
|
||||
bool isPlaying() { return isRunning && callback != 0; }
|
||||
|
||||
// TODO the start/stop methods are probably ok to leave as they are...
|
||||
// TODO
|
||||
|
||||
void start (AudioIODeviceCallback* newCallback)
|
||||
{
|
||||
|
|
@ -281023,7 +281025,7 @@ private:
|
|||
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
|
||||
{
|
||||
public:
|
||||
|
|
@ -281084,7 +281086,7 @@ AudioIODeviceType* juce_createAudioIODeviceType_Android()
|
|||
// compiled on its own).
|
||||
#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
|
||||
{
|
||||
public:
|
||||
|
|
@ -281105,7 +281107,7 @@ CameraDevice::CameraDevice (const String& name_, int /*index*/)
|
|||
{
|
||||
internal = new AndroidCameraInternal();
|
||||
|
||||
// TODO probably initialisation here
|
||||
// TODO
|
||||
}
|
||||
|
||||
CameraDevice::~CameraDevice()
|
||||
|
|
@ -281117,7 +281119,7 @@ CameraDevice::~CameraDevice()
|
|||
|
||||
Component* CameraDevice::createViewerComponent()
|
||||
{
|
||||
// TODO returns some kind of Component that can preview the camera
|
||||
// TODO
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -281157,7 +281159,7 @@ const StringArray CameraDevice::getAvailableDevices()
|
|||
{
|
||||
StringArray devs;
|
||||
|
||||
// TODO scan for devices..
|
||||
// TODO
|
||||
|
||||
return devs;
|
||||
}
|
||||
|
|
@ -281166,7 +281168,7 @@ CameraDevice* CameraDevice::openDevice (int index,
|
|||
int minWidth, int minHeight,
|
||||
int maxWidth, int maxHeight)
|
||||
{
|
||||
// TODO opens a device, returning a new CameraDevice object if this works.
|
||||
// TODO
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
239
src/native/android/juce_android_Audio.cpp
Normal file
239
src/native/android/juce_android_Audio.cpp
Normal file
|
|
@ -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
|
||||
122
src/native/android/juce_android_CameraDevice.cpp
Normal file
122
src/native/android/juce_android_CameraDevice.cpp
Normal file
|
|
@ -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
|
||||
49
src/native/android/juce_android_FileChooser.cpp
Normal file
49
src/native/android/juce_android_FileChooser.cpp
Normal file
|
|
@ -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
|
||||
290
src/native/android/juce_android_Files.cpp
Normal file
290
src/native/android/juce_android_Files.cpp
Normal file
|
|
@ -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
|
||||
98
src/native/android/juce_android_Fonts.cpp
Normal file
98
src/native/android/juce_android_Fonts.cpp
Normal file
|
|
@ -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
|
||||
169
src/native/android/juce_android_GraphicsContext.cpp
Normal file
169
src/native/android/juce_android_GraphicsContext.cpp
Normal file
|
|
@ -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
|
||||
114
src/native/android/juce_android_Messaging.cpp
Normal file
114
src/native/android/juce_android_Messaging.cpp
Normal file
|
|
@ -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
|
||||
107
src/native/android/juce_android_Midi.cpp
Normal file
107
src/native/android/juce_android_Midi.cpp
Normal file
|
|
@ -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
|
||||
47
src/native/android/juce_android_Misc.cpp
Normal file
47
src/native/android/juce_android_Misc.cpp
Normal file
|
|
@ -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
|
||||
117
src/native/android/juce_android_NativeCode.cpp
Normal file
117
src/native/android/juce_android_NativeCode.cpp
Normal file
|
|
@ -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
|
||||
54
src/native/android/juce_android_NativeIncludes.h
Normal file
54
src/native/android/juce_android_NativeIncludes.h
Normal file
|
|
@ -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__
|
||||
112
src/native/android/juce_android_Network.cpp
Normal file
112
src/native/android/juce_android_Network.cpp
Normal file
|
|
@ -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
|
||||
55
src/native/android/juce_android_OpenGLComponent.cpp
Normal file
55
src/native/android/juce_android_OpenGLComponent.cpp
Normal file
|
|
@ -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
|
||||
185
src/native/android/juce_android_SystemStats.cpp
Normal file
185
src/native/android/juce_android_SystemStats.cpp
Normal file
|
|
@ -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
|
||||
86
src/native/android/juce_android_Threads.cpp
Normal file
86
src/native/android/juce_android_Threads.cpp
Normal file
|
|
@ -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
|
||||
123
src/native/android/juce_android_WebBrowserComponent.cpp
Normal file
123
src/native/android/juce_android_WebBrowserComponent.cpp
Normal file
|
|
@ -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
|
||||
389
src/native/android/juce_android_Windowing.cpp
Normal file
389
src/native/android/juce_android_Windowing.cpp
Normal file
|
|
@ -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
|
||||
{
|
||||
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)
|
||||
{
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (nsStringToJuce (filename));
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (quotedIfContainsSpaces (filename));
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
|
@ -83,18 +83,10 @@ public:
|
|||
{
|
||||
StringArray files;
|
||||
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)
|
||||
{
|
||||
JUCEApplication::getInstance()->anotherInstanceStarted (files.joinIntoString (" "));
|
||||
}
|
||||
}
|
||||
|
||||
virtual void focusChanged()
|
||||
|
|
@ -130,6 +122,15 @@ private:
|
|||
CFRunLoopRef runLoop;
|
||||
CFRunLoopSourceRef runLoopSource;
|
||||
MessageQueue messageQueue;
|
||||
|
||||
static const String quotedIfContainsSpaces (NSString* file)
|
||||
{
|
||||
String s (nsStringToJuce (file));
|
||||
if (s.containsChar (' '))
|
||||
s = s.quoted ('"');
|
||||
|
||||
return s;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue