summaryrefslogtreecommitdiffstats
path: root/graphics/java
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-07-31 20:40:47 -0700
committerJason Sams <rjsams@android.com>2009-07-31 20:40:47 -0700
commitb8c5a84e7c23746a3fc26013e0880d3d95ca6588 (patch)
tree4adbe6b553ab125207544418aaa19a9bb22105df /graphics/java
parent3161d6dc2e1141bff233e8238d29c68b21c216cc (diff)
downloadframeworks_base-b8c5a84e7c23746a3fc26013e0880d3d95ca6588.zip
frameworks_base-b8c5a84e7c23746a3fc26013e0880d3d95ca6588.tar.gz
frameworks_base-b8c5a84e7c23746a3fc26013e0880d3d95ca6588.tar.bz2
Split RenderScript Type and Allocation into seperate classes.
Diffstat (limited to 'graphics/java')
-rw-r--r--graphics/java/android/renderscript/Allocation.java175
-rw-r--r--graphics/java/android/renderscript/Dimension.java35
-rw-r--r--graphics/java/android/renderscript/ProgramVertexAlloc.java6
-rw-r--r--graphics/java/android/renderscript/RenderScript.java194
-rw-r--r--graphics/java/android/renderscript/Type.java68
5 files changed, 288 insertions, 190 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
new file mode 100644
index 0000000..1327328
--- /dev/null
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.renderscript.Type;
+import android.util.Config;
+import android.util.Log;
+
+/**
+ * @hide
+ *
+ **/
+public class Allocation extends BaseObj {
+ Allocation(int id, RenderScript rs) {
+ super(rs);
+ mID = id;
+ }
+
+ public void uploadToTexture(int baseMipLevel) {
+ mRS.nAllocationUploadToTexture(mID, baseMipLevel);
+ }
+
+ public void destroy() {
+ mRS.nAllocationDestroy(mID);
+ mID = 0;
+ }
+
+ public void data(int[] d) {
+ mRS.nAllocationData(mID, d);
+ }
+
+ public void data(float[] d) {
+ mRS.nAllocationData(mID, d);
+ }
+
+ public void subData1D(int off, int count, int[] d) {
+ mRS.nAllocationSubData1D(mID, off, count, d);
+ }
+
+ public void subData1D(int off, int count, float[] d) {
+ mRS.nAllocationSubData1D(mID, off, count, d);
+ }
+
+ public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
+ mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+ }
+
+ public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
+ mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+ }
+
+ public class Adapter1D extends BaseObj {
+ Adapter1D(int id, RenderScript rs) {
+ super(rs);
+ mID = id;
+ }
+
+ public void destroy() {
+ mRS.nAdapter1DDestroy(mID);
+ mID = 0;
+ }
+
+ public void setConstraint(Dimension dim, int value) {
+ mRS.nAdapter1DSetConstraint(mID, dim.mID, value);
+ }
+
+ public void data(int[] d) {
+ mRS.nAdapter1DData(mID, d);
+ }
+
+ public void subData(int off, int count, int[] d) {
+ mRS.nAdapter1DSubData(mID, off, count, d);
+ }
+
+ public void data(float[] d) {
+ mRS.nAdapter1DData(mID, d);
+ }
+
+ public void subData(int off, int count, float[] d) {
+ mRS.nAdapter1DSubData(mID, off, count, d);
+ }
+ }
+
+ public Adapter1D createAdapter1D() {
+ int id = mRS.nAdapter1DCreate();
+ if (id != 0) {
+ mRS.nAdapter1DBindAllocation(id, mID);
+ }
+ return new Adapter1D(id, mRS);
+ }
+
+
+
+ // creation
+
+ private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
+ static {
+ mBitmapOptions.inScaled = false;
+ }
+
+ static public Allocation createTyped(RenderScript rs, Type type) {
+ int id = rs.nAllocationCreateTyped(type.mID);
+ return new Allocation(id, rs);
+ }
+
+ static public Allocation createSized(RenderScript rs, Element e, int count) {
+ int id;
+ if(e.mIsPredefined) {
+ id = rs.nAllocationCreatePredefSized(e.mPredefinedID, count);
+ } else {
+ id = rs.nAllocationCreateSized(e.mID, count);
+ }
+ return new Allocation(id, rs);
+ }
+
+ static public Allocation createFromBitmap(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips)
+ throws IllegalArgumentException {
+ if(!dstFmt.mIsPredefined) {
+ throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
+ }
+
+ int id = rs.nAllocationCreateFromBitmap(dstFmt.mPredefinedID, genMips, b);
+ return new Allocation(id, rs);
+ }
+
+ static public Allocation createFromBitmapBoxed(RenderScript rs, Bitmap b, Element dstFmt, boolean genMips)
+ throws IllegalArgumentException {
+ if(!dstFmt.mIsPredefined) {
+ throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
+ }
+
+ int id = rs.nAllocationCreateFromBitmapBoxed(dstFmt.mPredefinedID, genMips, b);
+ return new Allocation(id, rs);
+ }
+
+ static public Allocation createFromBitmapResource(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips)
+ throws IllegalArgumentException {
+
+ Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
+ return createFromBitmap(rs, b, dstFmt, genMips);
+ }
+
+ static public Allocation createFromBitmapResourceBoxed(RenderScript rs, Resources res, int id, Element dstFmt, boolean genMips)
+ throws IllegalArgumentException {
+
+ Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
+ return createFromBitmapBoxed(rs, b, dstFmt, genMips);
+ }
+
+
+}
+
+
diff --git a/graphics/java/android/renderscript/Dimension.java b/graphics/java/android/renderscript/Dimension.java
new file mode 100644
index 0000000..f29057d
--- /dev/null
+++ b/graphics/java/android/renderscript/Dimension.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+/**
+ * @hide
+ **/
+public enum Dimension {
+ X (0),
+ Y (1),
+ Z (2),
+ LOD (3),
+ FACE (4),
+ ARRAY_0 (100);
+
+ int mID;
+ Dimension(int id) {
+ mID = id;
+ }
+}
+
diff --git a/graphics/java/android/renderscript/ProgramVertexAlloc.java b/graphics/java/android/renderscript/ProgramVertexAlloc.java
index 424e0ad..37b037c 100644
--- a/graphics/java/android/renderscript/ProgramVertexAlloc.java
+++ b/graphics/java/android/renderscript/ProgramVertexAlloc.java
@@ -17,6 +17,8 @@
package android.renderscript;
import java.lang.Math;
+
+import android.renderscript.Element;
import android.util.Log;
@@ -33,14 +35,14 @@ public class ProgramVertexAlloc {
Matrix mProjection;
Matrix mTexture;
- public RenderScript.Allocation mAlloc;
+ public Allocation mAlloc;
public ProgramVertexAlloc(RenderScript rs) {
mModel = new Matrix();
mProjection = new Matrix();
mTexture = new Matrix();
- mAlloc = rs.allocationCreateSized(Element.USER_FLOAT, 48);
+ mAlloc = Allocation.createSized(rs, Element.USER_FLOAT, 48);
mAlloc.subData1D(MODELVIEW_OFFSET, 16, mModel.mMat);
mAlloc.subData1D(PROJECTION_OFFSET, 16, mProjection.mMat);
mAlloc.subData1D(TEXTURE_OFFSET, 16, mTexture.mMat);
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 3d4f333..dc87b6a 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -20,15 +20,11 @@ import java.io.IOException;
import java.io.InputStream;
import android.content.res.Resources;
-import android.os.Bundle;
+import android.graphics.Bitmap;
import android.util.Config;
import android.util.Log;
import android.view.Surface;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-
/**
* @hide
@@ -48,7 +44,6 @@ public class RenderScript {
private static boolean sInitialized;
native private static void _nInit();
- private static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
static {
sInitialized = false;
@@ -59,7 +54,6 @@ public class RenderScript {
} catch (UnsatisfiedLinkError e) {
Log.d(LOG_TAG, "RenderScript JNI library not found!");
}
- mBitmapOptions.inScaled = false;
}
native int nDeviceCreate();
@@ -206,6 +200,11 @@ public class RenderScript {
return mElementBuilder;
}
+ Type.Builder mTypeBuilder = new Type.Builder(this);
+ public Type.Builder typeBuilderCreate(Element e) throws IllegalStateException {
+ mTypeBuilder.begin(e);
+ return mTypeBuilder;
+ }
@@ -295,187 +294,6 @@ public class RenderScript {
}
//////////////////////////////////////////////////////////////////////////////////
- // Type
-
- public enum Dimension {
- X (0),
- Y (1),
- Z (2),
- LOD (3),
- FACE (4),
- ARRAY_0 (100);
-
- int mID;
- Dimension(int id) {
- mID = id;
- }
- }
-
- public class Type extends BaseObj {
- Type(int id) {
- super(RenderScript.this);
- mID = id;
- }
-
- public void destroy() {
- nTypeDestroy(mID);
- mID = 0;
- }
- }
-
- public void typeBegin(Element e) {
- nTypeBegin(e.mID);
- }
-
- public void typeAdd(Dimension d, int value) {
- nTypeAdd(d.mID, value);
- }
-
- public Type typeCreate() {
- int id = nTypeCreate();
- return new Type(id);
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////
- // Allocation
-
- public class Allocation extends BaseObj {
- Allocation(int id) {
- super(RenderScript.this);
- mID = id;
- }
-
- public void uploadToTexture(int baseMipLevel) {
- nAllocationUploadToTexture(mID, baseMipLevel);
- }
-
- public void destroy() {
- nAllocationDestroy(mID);
- mID = 0;
- }
-
- public void data(int[] d) {
- nAllocationData(mID, d);
- }
-
- public void data(float[] d) {
- nAllocationData(mID, d);
- }
-
- public void subData1D(int off, int count, int[] d) {
- nAllocationSubData1D(mID, off, count, d);
- }
-
- public void subData1D(int off, int count, float[] d) {
- nAllocationSubData1D(mID, off, count, d);
- }
-
- public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
- nAllocationSubData2D(mID, xoff, yoff, w, h, d);
- }
-
- public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
- nAllocationSubData2D(mID, xoff, yoff, w, h, d);
- }
- }
-
- public Allocation allocationCreateTyped(Type type) {
- int id = nAllocationCreateTyped(type.mID);
- return new Allocation(id);
- }
-
- public Allocation allocationCreateSized(Element e, int count) {
- int id;
- if(e.mIsPredefined) {
- id = nAllocationCreatePredefSized(e.mPredefinedID, count);
- } else {
- id = nAllocationCreateSized(e.mID, count);
- }
- return new Allocation(id);
- }
-
- public Allocation allocationCreateFromBitmap(Bitmap b, Element dstFmt, boolean genMips)
- throws IllegalArgumentException {
- if(!dstFmt.mIsPredefined) {
- throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
- }
-
- int id = nAllocationCreateFromBitmap(dstFmt.mPredefinedID, genMips, b);
- return new Allocation(id);
- }
-
- public Allocation allocationCreateFromBitmapBoxed(Bitmap b, Element dstFmt, boolean genMips)
- throws IllegalArgumentException {
- if(!dstFmt.mIsPredefined) {
- throw new IllegalStateException("Attempting to allocate a bitmap with a non-static element.");
- }
-
- int id = nAllocationCreateFromBitmapBoxed(dstFmt.mPredefinedID, genMips, b);
- return new Allocation(id);
- }
-
- public Allocation allocationCreateFromBitmapResource(Resources res, int id, Element dstFmt, boolean genMips)
- throws IllegalArgumentException {
-
- Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
- return allocationCreateFromBitmap(b, dstFmt, genMips);
- }
-
- public Allocation allocationCreateFromBitmapResourceBoxed(Resources res, int id, Element dstFmt, boolean genMips)
- throws IllegalArgumentException {
-
- Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
- return allocationCreateFromBitmapBoxed(b, dstFmt, genMips);
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////
- // Adapter1D
-
- public class Adapter1D extends BaseObj {
- Adapter1D(int id) {
- super(RenderScript.this);
- mID = id;
- }
-
- public void destroy() {
- nAdapter1DDestroy(mID);
- mID = 0;
- }
-
- public void bindAllocation(Allocation a) {
- nAdapter1DBindAllocation(mID, a.mID);
- }
-
- public void setConstraint(Dimension dim, int value) {
- nAdapter1DSetConstraint(mID, dim.mID, value);
- }
-
- public void data(int[] d) {
- nAdapter1DData(mID, d);
- }
-
- public void subData(int off, int count, int[] d) {
- nAdapter1DSubData(mID, off, count, d);
- }
-
- public void data(float[] d) {
- nAdapter1DData(mID, d);
- }
-
- public void subData(int off, int count, float[] d) {
- nAdapter1DSubData(mID, off, count, d);
- }
- }
-
- public Adapter1D adapter1DCreate() {
- int id = nAdapter1DCreate();
- return new Adapter1D(id);
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////
// Triangle Mesh
public class TriangleMesh extends BaseObj {
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
new file mode 100644
index 0000000..86932c4
--- /dev/null
+++ b/graphics/java/android/renderscript/Type.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.renderscript;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.util.Config;
+import android.util.Log;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+/**
+ * @hide
+ *
+ **/
+public class Type extends BaseObj {
+ Type(int id, RenderScript rs) {
+ super(rs);
+ mID = id;
+ }
+
+ public void destroy() {
+ mRS.nTypeDestroy(mID);
+ mID = 0;
+ }
+
+ public static class Builder {
+ RenderScript mRS;
+ boolean mActive = true;
+
+ Builder(RenderScript rs) {
+ mRS = rs;
+ }
+
+ public void begin(Element e) {
+ mRS.nTypeBegin(e.mID);
+ }
+
+ public void add(Dimension d, int value) {
+ mRS.nTypeAdd(d.mID, value);
+ }
+
+ public Type create() {
+ int id = mRS.nTypeCreate();
+ return new Type(id, mRS);
+ }
+ }
+
+}