]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/Android/CAndroidAssetReader.cpp
Reduce IrrCompileConfig usage to files that actually need it
[irrlicht.git] / source / Irrlicht / Android / CAndroidAssetReader.cpp
1 // Copyright (C) 2002-2011 Nikolaus Gebhardt\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h\r
4 \r
5 \r
6 #ifdef   _IRR_COMPILE_ANDROID_ASSET_READER_\r
7 \r
8 #include "CAndroidAssetReader.h"\r
9 \r
10 #include "CReadFile.h"\r
11 #include "coreutil.h"\r
12 #include "CAndroidAssetReader.h"\r
13 #include "CIrrDeviceAndroid.h"\r
14 \r
15 #include <android_native_app_glue.h>\r
16 #include <android/native_activity.h>\r
17 \r
18 namespace irr\r
19 {\r
20 namespace io\r
21 {\r
22 \r
23 CAndroidAssetReader::CAndroidAssetReader(AAssetManager *assetManager, const io::path &filename)\r
24         : AssetManager(assetManager), Filename(filename)\r
25 {\r
26         Asset = AAssetManager_open(AssetManager, \r
27                                         core::stringc(filename).c_str(),\r
28                                     AASSET_MODE_RANDOM);\r
29 \r
30 }\r
31 \r
32 CAndroidAssetReader::~CAndroidAssetReader()\r
33 {\r
34         if(Asset)\r
35                 AAsset_close(Asset);\r
36 }\r
37 \r
38 size_t CAndroidAssetReader::read(void* buffer, size_t sizeToRead)\r
39 {\r
40         int readBytes = AAsset_read(Asset, buffer, sizeToRead);\r
41         if ( readBytes >= 0 )\r
42                 return size_t(readBytes);\r
43         return 0;       // direct fd access is not possible (for example, if the asset is compressed). \r
44 }\r
45       \r
46 bool CAndroidAssetReader::seek(long finalPos, bool relativeMovement)\r
47 {\r
48         off_t status =  AAsset_seek(Asset, finalPos, relativeMovement ? SEEK_CUR : SEEK_SET);\r
49 \r
50         return status+1;\r
51 }\r
52 \r
53 long CAndroidAssetReader::getSize() const\r
54 {\r
55         return AAsset_getLength(Asset);\r
56 }\r
57       \r
58 long CAndroidAssetReader::getPos() const\r
59 {\r
60         return AAsset_getLength(Asset) - AAsset_getRemainingLength(Asset);\r
61 }\r
62       \r
63 const io::path& CAndroidAssetReader::getFileName() const\r
64 {\r
65         return Filename;\r
66 }\r
67 \r
68 \r
69 } // end namespace io\r
70 } // end namespace irr\r
71 \r
72 #endif //  _IRR_COMPILE_ANDROID_ASSET_READER_\r