Browse Source

Added an initial set of Android stub files.

tags/2021-05-28
Julian Storer 14 years ago
parent
commit
9ea6fb4cd1
29 changed files with 2907 additions and 136 deletions
  1. +96
    -0
      Builds/Linux/Makefile
  2. +69
    -1
      Builds/MacOSX/Juce.xcodeproj/project.pbxproj
  3. +19
    -0
      Builds/VisualStudio2005/Juce.vcproj
  4. +19
    -0
      Builds/VisualStudio2008/Juce.vcproj
  5. +19
    -0
      Builds/VisualStudio2008_DLL/Juce.vcproj
  6. +17
    -0
      Builds/VisualStudio2010/Juce.vcxproj
  7. +54
    -0
      Builds/VisualStudio2010/Juce.vcxproj.filters
  8. +69
    -1
      Builds/iOS/Juce.xcodeproj/project.pbxproj
  9. +36
    -0
      Juce.jucer
  10. +125
    -123
      juce_amalgamated.cpp
  11. +239
    -0
      src/native/android/juce_android_Audio.cpp
  12. +122
    -0
      src/native/android/juce_android_CameraDevice.cpp
  13. +49
    -0
      src/native/android/juce_android_FileChooser.cpp
  14. +290
    -0
      src/native/android/juce_android_Files.cpp
  15. +98
    -0
      src/native/android/juce_android_Fonts.cpp
  16. +169
    -0
      src/native/android/juce_android_GraphicsContext.cpp
  17. +114
    -0
      src/native/android/juce_android_Messaging.cpp
  18. +107
    -0
      src/native/android/juce_android_Midi.cpp
  19. +47
    -0
      src/native/android/juce_android_Misc.cpp
  20. +117
    -0
      src/native/android/juce_android_NativeCode.cpp
  21. +54
    -0
      src/native/android/juce_android_NativeIncludes.h
  22. +112
    -0
      src/native/android/juce_android_Network.cpp
  23. +55
    -0
      src/native/android/juce_android_OpenGLComponent.cpp
  24. +185
    -0
      src/native/android/juce_android_SystemStats.cpp
  25. +86
    -0
      src/native/android/juce_android_Threads.cpp
  26. +123
    -0
      src/native/android/juce_android_WebBrowserComponent.cpp
  27. +389
    -0
      src/native/android/juce_android_Windowing.cpp
  28. +17
    -1
      src/native/common/juce_posix_SharedCode.h
  29. +11
    -10
      src/native/mac/juce_mac_MessageManager.mm

+ 96
- 0
Builds/Linux/Makefile View File

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


+ 69
- 1
Builds/MacOSX/Juce.xcodeproj/project.pbxproj View File

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


+ 19
- 0
Builds/VisualStudio2005/Juce.vcproj View File

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


+ 19
- 0
Builds/VisualStudio2008/Juce.vcproj View File

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


+ 19
- 0
Builds/VisualStudio2008_DLL/Juce.vcproj View File

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


+ 17
- 0
Builds/VisualStudio2010/Juce.vcxproj View File

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


+ 54
- 0
Builds/VisualStudio2010/Juce.vcxproj.filters View File

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


+ 69
- 1
Builds/iOS/Juce.xcodeproj/project.pbxproj View File

@@ -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
- 0
Juce.jucer View File

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


+ 125
- 123
juce_amalgamated.cpp View File

@@ -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
- 0
src/native/android/juce_android_Audio.cpp View 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
- 0
src/native/android/juce_android_CameraDevice.cpp View 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
- 0
src/native/android/juce_android_FileChooser.cpp View 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
- 0
src/native/android/juce_android_Files.cpp View 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
- 0
src/native/android/juce_android_Fonts.cpp View 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
- 0
src/native/android/juce_android_GraphicsContext.cpp View 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
- 0
src/native/android/juce_android_Messaging.cpp View 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
- 0
src/native/android/juce_android_Midi.cpp View 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
- 0
src/native/android/juce_android_Misc.cpp View 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
- 0
src/native/android/juce_android_NativeCode.cpp View 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
- 0
src/native/android/juce_android_NativeIncludes.h View 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
- 0
src/native/android/juce_android_Network.cpp View 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
- 0
src/native/android/juce_android_OpenGLComponent.cpp View 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
- 0
src/native/android/juce_android_SystemStats.cpp View 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
- 0
src/native/android/juce_android_Threads.cpp View 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, &param);
}
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
- 0
src/native/android/juce_android_WebBrowserComponent.cpp View 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
- 0
src/native/android/juce_android_Windowing.cpp View 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

+ 17
- 1
src/native/common/juce_posix_SharedCode.h View File

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


+ 11
- 10
src/native/mac/juce_mac_MessageManager.mm View File

@@ -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…
Cancel
Save