summaryrefslogtreecommitdiffstats
path: root/graphics/java/android/renderscript/FileA3D.java
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/java/android/renderscript/FileA3D.java')
-rw-r--r--graphics/java/android/renderscript/FileA3D.java105
1 files changed, 55 insertions, 50 deletions
diff --git a/graphics/java/android/renderscript/FileA3D.java b/graphics/java/android/renderscript/FileA3D.java
index af85d8e..c3e5faf 100644
--- a/graphics/java/android/renderscript/FileA3D.java
+++ b/graphics/java/android/renderscript/FileA3D.java
@@ -16,11 +16,12 @@
package android.renderscript;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import android.content.res.Resources;
import android.content.res.AssetManager;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
@@ -32,28 +33,33 @@ import android.util.TypedValue;
**/
public class FileA3D extends BaseObj {
+ // This will go away in the clean up pass,
+ // trying to avoid multiproject submits
public enum ClassID {
UNKNOWN,
- MESH,
- TYPE,
- ELEMENT,
- ALLOCATION,
- PROGRAM_VERTEX,
- PROGRAM_RASTER,
- PROGRAM_FRAGMENT,
- PROGRAM_STORE,
- SAMPLER,
- ANIMATION,
- ADAPTER_1D,
- ADAPTER_2D,
- SCRIPT_C;
+ MESH;
public static ClassID toClassID(int intID) {
return ClassID.values()[intID];
}
}
+ public enum EntryType {
+
+ UNKNOWN (0),
+ MESH (1);
+
+ int mID;
+ EntryType(int id) {
+ mID = id;
+ }
+
+ static EntryType toEntryType(int intID) {
+ return EntryType.values()[intID];
+ }
+ }
+
// Read only class with index entries
public static class IndexEntry {
RenderScript mRS;
@@ -61,6 +67,7 @@ public class FileA3D extends BaseObj {
int mID;
String mName;
ClassID mClassID;
+ EntryType mEntryType;
BaseObj mLoadedObj;
public String getName() {
@@ -71,18 +78,27 @@ public class FileA3D extends BaseObj {
return mClassID;
}
+ public EntryType getEntryType() {
+ return mEntryType;
+ }
+
public BaseObj getObject() {
mRS.validate();
BaseObj obj = internalCreate(mRS, this);
return obj;
}
+ public Mesh getMesh() {
+ return (Mesh)getObject();
+ }
+
static synchronized BaseObj internalCreate(RenderScript rs, IndexEntry entry) {
if(entry.mLoadedObj != null) {
return entry.mLoadedObj;
}
- if(entry.mClassID == ClassID.UNKNOWN) {
+ // to be purged on cleanup
+ if(entry.mEntryType == EntryType.UNKNOWN) {
return null;
}
@@ -91,51 +107,23 @@ public class FileA3D extends BaseObj {
return null;
}
- switch (entry.mClassID) {
+ switch (entry.mEntryType) {
case MESH:
entry.mLoadedObj = new Mesh(objectID, rs);
break;
- case TYPE:
- entry.mLoadedObj = new Type(objectID, rs);
- break;
- case ELEMENT:
- entry.mLoadedObj = null;
- break;
- case ALLOCATION:
- entry.mLoadedObj = null;
- break;
- case PROGRAM_VERTEX:
- entry.mLoadedObj = new ProgramVertex(objectID, rs);
- break;
- case PROGRAM_RASTER:
- break;
- case PROGRAM_FRAGMENT:
- break;
- case PROGRAM_STORE:
- break;
- case SAMPLER:
- break;
- case ANIMATION:
- break;
- case ADAPTER_1D:
- break;
- case ADAPTER_2D:
- break;
- case SCRIPT_C:
- break;
}
entry.mLoadedObj.updateFromNative();
-
return entry.mLoadedObj;
}
- IndexEntry(RenderScript rs, int index, int id, String name, ClassID classID) {
+ IndexEntry(RenderScript rs, int index, int id, String name, EntryType type) {
mRS = rs;
mIndex = index;
mID = id;
mName = name;
- mClassID = classID;
+ mEntryType = type;
+ mClassID = mEntryType == EntryType.MESH ? ClassID.MESH : ClassID.UNKNOWN;
mLoadedObj = null;
}
}
@@ -161,11 +149,11 @@ public class FileA3D extends BaseObj {
mRS.nFileA3DGetIndexEntries(getID(), numFileEntries, ids, names);
for(int i = 0; i < numFileEntries; i ++) {
- mFileEntries[i] = new IndexEntry(mRS, i, getID(), names[i], ClassID.toClassID(ids[i]));
+ mFileEntries[i] = new IndexEntry(mRS, i, getID(), names[i], EntryType.toEntryType(ids[i]));
}
}
- public int getNumIndexEntries() {
+ public int getIndexEntryCount() {
if(mFileEntries == null) {
return 0;
}
@@ -173,12 +161,29 @@ public class FileA3D extends BaseObj {
}
public IndexEntry getIndexEntry(int index) {
- if(getNumIndexEntries() == 0 || index < 0 || index >= mFileEntries.length) {
+ if(getIndexEntryCount() == 0 || index < 0 || index >= mFileEntries.length) {
return null;
}
return mFileEntries[index];
}
+ // API cleanup stand-ins
+ // TODO: implement ermaining loading mechanisms
+ static public FileA3D createFromAsset(RenderScript rs, AssetManager mgr, String path)
+ throws IllegalArgumentException {
+ return null;
+ }
+
+ static public FileA3D createFromFile(RenderScript rs, String path)
+ throws IllegalArgumentException {
+ return null;
+ }
+
+ static public FileA3D createFromFile(RenderScript rs, File path)
+ throws IllegalArgumentException {
+ return createFromFile(rs, path.getAbsolutePath());
+ }
+
static public FileA3D createFromResource(RenderScript rs, Resources res, int id)
throws IllegalArgumentException {