summaryrefslogtreecommitdiff
path: root/libs/rs/rsFileA3D.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/rs/rsFileA3D.cpp')
-rw-r--r--libs/rs/rsFileA3D.cpp63
1 files changed, 42 insertions, 21 deletions
diff --git a/libs/rs/rsFileA3D.cpp b/libs/rs/rsFileA3D.cpp
index 0c8692d3f489..d34ddd68b77e 100644
--- a/libs/rs/rsFileA3D.cpp
+++ b/libs/rs/rsFileA3D.cpp
@@ -35,6 +35,7 @@ FileA3D::FileA3D(Context *rsc) : ObjectBase(rsc) {
mData = NULL;
mWriteStream = NULL;
mReadStream = NULL;
+ mAsset = NULL;
mMajorVersion = 0;
mMinorVersion = 1;
@@ -57,6 +58,9 @@ FileA3D::~FileA3D() {
if (mAlloc) {
free(mAlloc);
}
+ if (mAsset) {
+ delete mAsset;
+ }
}
void FileA3D::parseHeader(IStream *headerStream) {
@@ -83,6 +87,11 @@ void FileA3D::parseHeader(IStream *headerStream) {
}
}
+bool FileA3D::load(Asset *asset) {
+ mAsset = asset;
+ return load(asset->getBuffer(false), asset->getLength());
+}
+
bool FileA3D::load(const void *data, size_t length) {
const uint8_t *localData = (const uint8_t *)data;
@@ -357,26 +366,6 @@ void FileA3D::appendToFile(ObjectBase *obj) {
mWriteStream->align(4);
}
-namespace android {
-namespace renderscript {
-
-RsFile rsi_FileOpen(Context *rsc, char const *path, unsigned int len) {
- FileA3D *fa3d = new FileA3D(rsc);
-
- FILE *f = fopen("/sdcard/test.a3d", "rb");
- if (f) {
- fa3d->load(f);
- fclose(f);
- fa3d->incUserRef();
- return fa3d;
- }
- delete fa3d;
- return NULL;
-}
-
-}
-}
-
RsObjectBase rsaFileA3DGetEntryByIndex(RsContext con, uint32_t index, RsFile file) {
FileA3D *fa3d = static_cast<FileA3D *>(file);
if (!fa3d) {
@@ -422,7 +411,7 @@ void rsaFileA3DGetIndexEntries(RsContext con, RsFileIndexEntry *fileEntries, uin
}
}
-RsFile rsaFileA3DCreateFromAssetStream(RsContext con, const void *data, uint32_t len) {
+RsFile rsaFileA3DCreateFromMemory(RsContext con, const void *data, uint32_t len) {
if (data == NULL) {
LOGE("File load failed. Asset stream is NULL");
return NULL;
@@ -435,3 +424,35 @@ RsFile rsaFileA3DCreateFromAssetStream(RsContext con, const void *data, uint32_t
fa3d->load(data, len);
return fa3d;
}
+
+RsFile rsaFileA3DCreateFromAsset(RsContext con, void *_asset) {
+ Context *rsc = static_cast<Context *>(con);
+ Asset *asset = static_cast<Asset *>(_asset);
+ FileA3D *fa3d = new FileA3D(rsc);
+ fa3d->incUserRef();
+
+ fa3d->load(asset);
+ return fa3d;
+}
+
+RsFile rsaFileA3DCreateFromFile(RsContext con, const char *path) {
+ if (path == NULL) {
+ LOGE("File load failed. Path is NULL");
+ return NULL;
+ }
+
+ Context *rsc = static_cast<Context *>(con);
+ FileA3D *fa3d = NULL;
+
+ FILE *f = fopen(path, "rb");
+ if (f) {
+ fa3d = new FileA3D(rsc);
+ fa3d->incUserRef();
+ fa3d->load(f);
+ fclose(f);
+ } else {
+ LOGE("Could not open file %s", path);
+ }
+
+ return fa3d;
+}