summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorTim Murray <timmurray@google.com>2013-12-17 13:28:17 -0800
committerTim Murray <timmurray@google.com>2013-12-17 13:28:17 -0800
commitd1576fb039f018ea4d55abbb2c03d542011be399 (patch)
treee69fc47ea873621e2106d69e3d08c6d8e5d7fc93 /graphics
parent0a11eb10ff08ad7a683cfc7c458b6625b955df2c (diff)
downloadframeworks_base-d1576fb039f018ea4d55abbb2c03d542011be399.zip
frameworks_base-d1576fb039f018ea4d55abbb2c03d542011be399.tar.gz
frameworks_base-d1576fb039f018ea4d55abbb2c03d542011be399.tar.bz2
Move RenderScript from graphics/ to new fw/base subdirectory rs.
Change-Id: I30b6633578f063840e1bdbcc9ba513b727912a6d
Diffstat (limited to 'graphics')
-rw-r--r--graphics/java/android/renderscript/Allocation.java1865
-rw-r--r--graphics/java/android/renderscript/AllocationAdapter.java246
-rw-r--r--graphics/java/android/renderscript/BaseObj.java177
-rw-r--r--graphics/java/android/renderscript/Byte2.java391
-rw-r--r--graphics/java/android/renderscript/Byte3.java423
-rw-r--r--graphics/java/android/renderscript/Byte4.java454
-rw-r--r--graphics/java/android/renderscript/Double2.java385
-rw-r--r--graphics/java/android/renderscript/Double3.java417
-rw-r--r--graphics/java/android/renderscript/Double4.java450
-rw-r--r--graphics/java/android/renderscript/Element.java1100
-rw-r--r--graphics/java/android/renderscript/FieldPacker.java601
-rw-r--r--graphics/java/android/renderscript/FileA3D.java309
-rw-r--r--graphics/java/android/renderscript/Float2.java384
-rw-r--r--graphics/java/android/renderscript/Float3.java417
-rw-r--r--graphics/java/android/renderscript/Float4.java450
-rw-r--r--graphics/java/android/renderscript/Font.java245
-rw-r--r--graphics/java/android/renderscript/Int2.java440
-rw-r--r--graphics/java/android/renderscript/Int3.java477
-rw-r--r--graphics/java/android/renderscript/Int4.java514
-rw-r--r--graphics/java/android/renderscript/Long2.java440
-rw-r--r--graphics/java/android/renderscript/Long3.java477
-rw-r--r--graphics/java/android/renderscript/Long4.java514
-rw-r--r--graphics/java/android/renderscript/Matrix2f.java193
-rw-r--r--graphics/java/android/renderscript/Matrix3f.java318
-rw-r--r--graphics/java/android/renderscript/Matrix4f.java493
-rw-r--r--graphics/java/android/renderscript/Mesh.java828
-rw-r--r--graphics/java/android/renderscript/Path.java87
-rw-r--r--graphics/java/android/renderscript/Program.java370
-rw-r--r--graphics/java/android/renderscript/ProgramFragment.java96
-rw-r--r--graphics/java/android/renderscript/ProgramFragmentFixedFunction.java332
-rw-r--r--graphics/java/android/renderscript/ProgramRaster.java168
-rw-r--r--graphics/java/android/renderscript/ProgramStore.java442
-rw-r--r--graphics/java/android/renderscript/ProgramVertex.java154
-rw-r--r--graphics/java/android/renderscript/ProgramVertexFixedFunction.java287
-rw-r--r--graphics/java/android/renderscript/RSDriverException.java31
-rw-r--r--graphics/java/android/renderscript/RSIllegalArgumentException.java30
-rw-r--r--graphics/java/android/renderscript/RSInvalidStateException.java31
-rw-r--r--graphics/java/android/renderscript/RSRuntimeException.java30
-rw-r--r--graphics/java/android/renderscript/RSSurfaceView.java165
-rw-r--r--graphics/java/android/renderscript/RSTextureView.java194
-rw-r--r--graphics/java/android/renderscript/RenderScript.java1213
-rw-r--r--graphics/java/android/renderscript/RenderScriptGL.java333
-rw-r--r--graphics/java/android/renderscript/Sampler.java353
-rw-r--r--graphics/java/android/renderscript/Script.java464
-rw-r--r--graphics/java/android/renderscript/ScriptC.java106
-rw-r--r--graphics/java/android/renderscript/ScriptGroup.java471
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsic.java31
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java99
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicBlend.java464
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicBlur.java108
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java263
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java131
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java131
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicHistogram.java182
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicLUT.java142
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java89
-rw-r--r--graphics/java/android/renderscript/Short2.java443
-rw-r--r--graphics/java/android/renderscript/Short3.java477
-rw-r--r--graphics/java/android/renderscript/Short4.java514
-rw-r--r--graphics/java/android/renderscript/Type.java426
-rw-r--r--graphics/java/android/renderscript/package.html10
-rw-r--r--graphics/jni/Android.mk38
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp1660
63 files changed, 0 insertions, 23573 deletions
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
deleted file mode 100644
index 45dd25a..0000000
--- a/graphics/java/android/renderscript/Allocation.java
+++ /dev/null
@@ -1,1865 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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.util.HashMap;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.view.Surface;
-import android.util.Log;
-import android.graphics.Canvas;
-import android.os.Trace;
-
-/**
- * <p> This class provides the primary method through which data is passed to
- * and from RenderScript kernels. An Allocation provides the backing store for
- * a given {@link android.renderscript.Type}. </p>
- *
- * <p>An Allocation also contains a set of usage flags that denote how the
- * Allocation could be used. For example, an Allocation may have usage flags
- * specifying that it can be used from a script as well as input to a {@link
- * android.renderscript.Sampler}. A developer must synchronize across these
- * different usages using {@link android.renderscript.Allocation#syncAll} in
- * order to ensure that different users of the Allocation have a consistent view
- * of memory. For example, in the case where an Allocation is used as the output
- * of one kernel and as Sampler input in a later kernel, a developer must call
- * {@link #syncAll syncAll(Allocation.USAGE_SCRIPT)} prior to launching the
- * second kernel to ensure correctness.
- *
- * <p>An Allocation can be populated with the {@link #copyFrom} routines. For
- * more complex Element types, the {@link #copyFromUnchecked} methods can be
- * used to copy from byte arrays or similar constructs.</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class Allocation extends BaseObj {
- Type mType;
- Bitmap mBitmap;
- int mUsage;
- Allocation mAdaptedAllocation;
- int mSize;
-
- boolean mConstrainedLOD;
- boolean mConstrainedFace;
- boolean mConstrainedY;
- boolean mConstrainedZ;
- boolean mReadAllowed = true;
- boolean mWriteAllowed = true;
- int mSelectedY;
- int mSelectedZ;
- int mSelectedLOD;
- Type.CubemapFace mSelectedFace = Type.CubemapFace.POSITIVE_X;
-
- int mCurrentDimX;
- int mCurrentDimY;
- int mCurrentDimZ;
- int mCurrentCount;
- static HashMap<Long, Allocation> mAllocationMap =
- new HashMap<Long, Allocation>();
- OnBufferAvailableListener mBufferNotifier;
-
- private Element.DataType validateObjectIsPrimitiveArray(Object d, boolean checkType) {
- final Class c = d.getClass();
- if (!c.isArray()) {
- throw new RSIllegalArgumentException("Object passed is not an array of primitives.");
- }
- final Class cmp = c.getComponentType();
- if (!cmp.isPrimitive()) {
- throw new RSIllegalArgumentException("Object passed is not an Array of primitives.");
- }
-
- if (cmp == Long.TYPE) {
- if (checkType) {
- validateIsInt64();
- return mType.mElement.mType;
- }
- return Element.DataType.SIGNED_64;
- }
-
- if (cmp == Integer.TYPE) {
- if (checkType) {
- validateIsInt32();
- return mType.mElement.mType;
- }
- return Element.DataType.SIGNED_32;
- }
-
- if (cmp == Short.TYPE) {
- if (checkType) {
- validateIsInt16();
- return mType.mElement.mType;
- }
- return Element.DataType.SIGNED_16;
- }
-
- if (cmp == Byte.TYPE) {
- if (checkType) {
- validateIsInt8();
- return mType.mElement.mType;
- }
- return Element.DataType.SIGNED_8;
- }
-
- if (cmp == Float.TYPE) {
- if (checkType) {
- validateIsFloat32();
- }
- return Element.DataType.FLOAT_32;
- }
-
- if (cmp == Double.TYPE) {
- if (checkType) {
- validateIsFloat64();
- }
- return Element.DataType.FLOAT_64;
- }
- return null;
- }
-
-
- /**
- * The usage of the Allocation. These signal to RenderScript where to place
- * the Allocation in memory.
- *
- */
-
- /**
- * The Allocation will be bound to and accessed by scripts.
- */
- public static final int USAGE_SCRIPT = 0x0001;
-
- /**
- * The Allocation will be used as a texture source by one or more graphics
- * programs.
- *
- */
- public static final int USAGE_GRAPHICS_TEXTURE = 0x0002;
-
- /**
- * The Allocation will be used as a graphics mesh.
- *
- * This was deprecated in API level 16.
- *
- */
- public static final int USAGE_GRAPHICS_VERTEX = 0x0004;
-
-
- /**
- * The Allocation will be used as the source of shader constants by one or
- * more programs.
- *
- * This was deprecated in API level 16.
- *
- */
- public static final int USAGE_GRAPHICS_CONSTANTS = 0x0008;
-
- /**
- * The Allocation will be used as a target for offscreen rendering
- *
- * This was deprecated in API level 16.
- *
- */
- public static final int USAGE_GRAPHICS_RENDER_TARGET = 0x0010;
-
- /**
- * The Allocation will be used as a {@link android.view.Surface}
- * consumer. This usage will cause the Allocation to be created
- * as read-only.
- *
- */
- public static final int USAGE_IO_INPUT = 0x0020;
-
- /**
- * The Allocation will be used as a {@link android.view.Surface}
- * producer. The dimensions and format of the {@link
- * android.view.Surface} will be forced to those of the
- * Allocation.
- *
- */
- public static final int USAGE_IO_OUTPUT = 0x0040;
-
- /**
- * The Allocation's backing store will be inherited from another object
- * (usually a {@link android.graphics.Bitmap}); copying to or from the
- * original source Bitmap will cause a synchronization rather than a full
- * copy. {@link #syncAll} may also be used to synchronize the Allocation
- * and the source Bitmap.
- *
- * <p>This is set by default for allocations created with {@link
- * #createFromBitmap} in API version 18 and higher.</p>
- *
- */
- public static final int USAGE_SHARED = 0x0080;
-
- /**
- * Controls mipmap behavior when using the bitmap creation and update
- * functions.
- */
- public enum MipmapControl {
- /**
- * No mipmaps will be generated and the type generated from the incoming
- * bitmap will not contain additional LODs.
- */
- MIPMAP_NONE(0),
-
- /**
- * A full mipmap chain will be created in script memory. The Type of
- * the Allocation will contain a full mipmap chain. On upload, the full
- * chain will be transferred.
- */
- MIPMAP_FULL(1),
-
- /**
- * The Type of the Allocation will be the same as MIPMAP_NONE. It will
- * not contain mipmaps. On upload, the allocation data will contain a
- * full mipmap chain generated from the top level in script memory.
- */
- MIPMAP_ON_SYNC_TO_TEXTURE(2);
-
- int mID;
- MipmapControl(int id) {
- mID = id;
- }
- }
-
-
- private long getIDSafe() {
- if (mAdaptedAllocation != null) {
- return mAdaptedAllocation.getID(mRS);
- }
- return getID(mRS);
- }
-
-
- /**
- * Get the {@link android.renderscript.Element} of the {@link
- * android.renderscript.Type} of the Allocation.
- *
- * @return Element
- *
- */
- public Element getElement() {
- return mType.getElement();
- }
-
- /**
- * Get the usage flags of the Allocation.
- *
- * @return usage this Allocation's set of the USAGE_* flags OR'd together
- *
- */
- public int getUsage() {
- return mUsage;
- }
-
- /**
- * Get the size of the Allocation in bytes.
- *
- * @return size of the Allocation in bytes.
- *
- */
- public int getBytesSize() {
- return mType.getCount() * mType.getElement().getBytesSize();
- }
-
- private void updateCacheInfo(Type t) {
- mCurrentDimX = t.getX();
- mCurrentDimY = t.getY();
- mCurrentDimZ = t.getZ();
- mCurrentCount = mCurrentDimX;
- if (mCurrentDimY > 1) {
- mCurrentCount *= mCurrentDimY;
- }
- if (mCurrentDimZ > 1) {
- mCurrentCount *= mCurrentDimZ;
- }
- }
-
- private void setBitmap(Bitmap b) {
- mBitmap = b;
- }
-
- Allocation(long id, RenderScript rs, Type t, int usage) {
- super(id, rs);
- if ((usage & ~(USAGE_SCRIPT |
- USAGE_GRAPHICS_TEXTURE |
- USAGE_GRAPHICS_VERTEX |
- USAGE_GRAPHICS_CONSTANTS |
- USAGE_GRAPHICS_RENDER_TARGET |
- USAGE_IO_INPUT |
- USAGE_IO_OUTPUT |
- USAGE_SHARED)) != 0) {
- throw new RSIllegalArgumentException("Unknown usage specified.");
- }
-
- if ((usage & USAGE_IO_INPUT) != 0) {
- mWriteAllowed = false;
-
- if ((usage & ~(USAGE_IO_INPUT |
- USAGE_GRAPHICS_TEXTURE |
- USAGE_SCRIPT)) != 0) {
- throw new RSIllegalArgumentException("Invalid usage combination.");
- }
- }
-
- mType = t;
- mUsage = usage;
-
- if (t != null) {
- // TODO: A3D doesn't have Type info during creation, so we can't
- // calculate the size ahead of time. We can possibly add a method
- // to update the size in the future if it seems reasonable.
- mSize = mType.getCount() * mType.getElement().getBytesSize();
- updateCacheInfo(t);
- }
- try {
- RenderScript.registerNativeAllocation.invoke(RenderScript.sRuntime, mSize);
- } catch (Exception e) {
- Log.e(RenderScript.LOG_TAG, "Couldn't invoke registerNativeAllocation:" + e);
- throw new RSRuntimeException("Couldn't invoke registerNativeAllocation:" + e);
- }
- }
-
- protected void finalize() throws Throwable {
- RenderScript.registerNativeFree.invoke(RenderScript.sRuntime, mSize);
- super.finalize();
- }
-
- private void validateIsInt64() {
- if ((mType.mElement.mType == Element.DataType.SIGNED_64) ||
- (mType.mElement.mType == Element.DataType.UNSIGNED_64)) {
- return;
- }
- throw new RSIllegalArgumentException(
- "64 bit integer source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsInt32() {
- if ((mType.mElement.mType == Element.DataType.SIGNED_32) ||
- (mType.mElement.mType == Element.DataType.UNSIGNED_32)) {
- return;
- }
- throw new RSIllegalArgumentException(
- "32 bit integer source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsInt16() {
- if ((mType.mElement.mType == Element.DataType.SIGNED_16) ||
- (mType.mElement.mType == Element.DataType.UNSIGNED_16)) {
- return;
- }
- throw new RSIllegalArgumentException(
- "16 bit integer source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsInt8() {
- if ((mType.mElement.mType == Element.DataType.SIGNED_8) ||
- (mType.mElement.mType == Element.DataType.UNSIGNED_8)) {
- return;
- }
- throw new RSIllegalArgumentException(
- "8 bit integer source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsFloat32() {
- if (mType.mElement.mType == Element.DataType.FLOAT_32) {
- return;
- }
- throw new RSIllegalArgumentException(
- "32 bit float source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsFloat64() {
- if (mType.mElement.mType == Element.DataType.FLOAT_64) {
- return;
- }
- throw new RSIllegalArgumentException(
- "64 bit float source does not match allocation type " + mType.mElement.mType);
- }
-
- private void validateIsObject() {
- if ((mType.mElement.mType == Element.DataType.RS_ELEMENT) ||
- (mType.mElement.mType == Element.DataType.RS_TYPE) ||
- (mType.mElement.mType == Element.DataType.RS_ALLOCATION) ||
- (mType.mElement.mType == Element.DataType.RS_SAMPLER) ||
- (mType.mElement.mType == Element.DataType.RS_SCRIPT) ||
- (mType.mElement.mType == Element.DataType.RS_MESH) ||
- (mType.mElement.mType == Element.DataType.RS_PROGRAM_FRAGMENT) ||
- (mType.mElement.mType == Element.DataType.RS_PROGRAM_VERTEX) ||
- (mType.mElement.mType == Element.DataType.RS_PROGRAM_RASTER) ||
- (mType.mElement.mType == Element.DataType.RS_PROGRAM_STORE)) {
- return;
- }
- throw new RSIllegalArgumentException(
- "Object source does not match allocation type " + mType.mElement.mType);
- }
-
- @Override
- void updateFromNative() {
- super.updateFromNative();
- long typeID = mRS.nAllocationGetType(getID(mRS));
- if(typeID != 0) {
- mType = new Type(typeID, mRS);
- mType.updateFromNative();
- updateCacheInfo(mType);
- }
- }
-
- /**
- * Get the {@link android.renderscript.Type} of the Allocation.
- *
- * @return Type
- *
- */
- public Type getType() {
- return mType;
- }
-
- /**
- * Propagate changes from one usage of the Allocation to the
- * other usages of the Allocation.
- *
- */
- public void syncAll(int srcLocation) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "syncAll");
- switch (srcLocation) {
- case USAGE_GRAPHICS_TEXTURE:
- case USAGE_SCRIPT:
- if ((mUsage & USAGE_SHARED) != 0) {
- copyFrom(mBitmap);
- }
- break;
- case USAGE_GRAPHICS_CONSTANTS:
- case USAGE_GRAPHICS_VERTEX:
- break;
- case USAGE_SHARED:
- if ((mUsage & USAGE_SHARED) != 0) {
- copyTo(mBitmap);
- }
- break;
- default:
- throw new RSIllegalArgumentException("Source must be exactly one usage type.");
- }
- mRS.validate();
- mRS.nAllocationSyncAll(getIDSafe(), srcLocation);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Send a buffer to the output stream. The contents of the Allocation will
- * be undefined after this operation. This operation is only valid if {@link
- * #USAGE_IO_OUTPUT} is set on the Allocation.
- *
- *
- */
- public void ioSend() {
- Trace.traceBegin(RenderScript.TRACE_TAG, "ioSend");
- if ((mUsage & USAGE_IO_OUTPUT) == 0) {
- throw new RSIllegalArgumentException(
- "Can only send buffer if IO_OUTPUT usage specified.");
- }
- mRS.validate();
- mRS.nAllocationIoSend(getID(mRS));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Receive the latest input into the Allocation. This operation
- * is only valid if {@link #USAGE_IO_INPUT} is set on the Allocation.
- *
- */
- public void ioReceive() {
- Trace.traceBegin(RenderScript.TRACE_TAG, "ioReceive");
- if ((mUsage & USAGE_IO_INPUT) == 0) {
- throw new RSIllegalArgumentException(
- "Can only receive if IO_INPUT usage specified.");
- }
- mRS.validate();
- mRS.nAllocationIoReceive(getID(mRS));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy an array of RS objects to the Allocation.
- *
- * @param d Source array.
- */
- public void copyFrom(BaseObj[] d) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFrom");
- mRS.validate();
- validateIsObject();
- if (d.length != mCurrentCount) {
- throw new RSIllegalArgumentException("Array size mismatch, allocation sizeX = " +
- mCurrentCount + ", array length = " + d.length);
- }
- // FIXME: requires 64-bit path
-
- int i[] = new int[d.length];
- for (int ct=0; ct < d.length; ct++) {
- i[ct] = (int)d[ct].getID(mRS);
- }
- copy1DRangeFromUnchecked(0, mCurrentCount, i);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- private void validateBitmapFormat(Bitmap b) {
- Bitmap.Config bc = b.getConfig();
- if (bc == null) {
- throw new RSIllegalArgumentException("Bitmap has an unsupported format for this operation");
- }
- switch (bc) {
- case ALPHA_8:
- if (mType.getElement().mKind != Element.DataKind.PIXEL_A) {
- throw new RSIllegalArgumentException("Allocation kind is " +
- mType.getElement().mKind + ", type " +
- mType.getElement().mType +
- " of " + mType.getElement().getBytesSize() +
- " bytes, passed bitmap was " + bc);
- }
- break;
- case ARGB_8888:
- if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGBA) ||
- (mType.getElement().getBytesSize() != 4)) {
- throw new RSIllegalArgumentException("Allocation kind is " +
- mType.getElement().mKind + ", type " +
- mType.getElement().mType +
- " of " + mType.getElement().getBytesSize() +
- " bytes, passed bitmap was " + bc);
- }
- break;
- case RGB_565:
- if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGB) ||
- (mType.getElement().getBytesSize() != 2)) {
- throw new RSIllegalArgumentException("Allocation kind is " +
- mType.getElement().mKind + ", type " +
- mType.getElement().mType +
- " of " + mType.getElement().getBytesSize() +
- " bytes, passed bitmap was " + bc);
- }
- break;
- case ARGB_4444:
- if ((mType.getElement().mKind != Element.DataKind.PIXEL_RGBA) ||
- (mType.getElement().getBytesSize() != 2)) {
- throw new RSIllegalArgumentException("Allocation kind is " +
- mType.getElement().mKind + ", type " +
- mType.getElement().mType +
- " of " + mType.getElement().getBytesSize() +
- " bytes, passed bitmap was " + bc);
- }
- break;
-
- }
- }
-
- private void validateBitmapSize(Bitmap b) {
- if((mCurrentDimX != b.getWidth()) || (mCurrentDimY != b.getHeight())) {
- throw new RSIllegalArgumentException("Cannot update allocation from bitmap, sizes mismatch");
- }
- }
-
- private void copyFromUnchecked(Object array, Element.DataType dt, int arrayLen) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFromUnchecked");
- mRS.validate();
- if (mCurrentDimZ > 0) {
- copy3DRangeFromUnchecked(0, 0, 0, mCurrentDimX, mCurrentDimY, mCurrentDimZ, array, dt, arrayLen);
- } else if (mCurrentDimY > 0) {
- copy2DRangeFromUnchecked(0, 0, mCurrentDimX, mCurrentDimY, array, dt, arrayLen);
- } else {
- copy1DRangeFromUnchecked(0, mCurrentCount, array, dt, arrayLen);
- }
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy into this Allocation from an array. This method does not guarantee
- * that the Allocation is compatible with the input buffer; it copies memory
- * without reinterpretation.
- *
- * @param array The source data array
- */
- public void copyFromUnchecked(Object array) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFromUnchecked");
- copyFromUnchecked(array, validateObjectIsPrimitiveArray(array, false),
- java.lang.reflect.Array.getLength(array));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy into this Allocation from an array. This method does not guarantee
- * that the Allocation is compatible with the input buffer; it copies memory
- * without reinterpretation.
- *
- * @param d the source data array
- */
- public void copyFromUnchecked(int[] d) {
- copyFromUnchecked(d, Element.DataType.SIGNED_32, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This method does not guarantee
- * that the Allocation is compatible with the input buffer; it copies memory
- * without reinterpretation.
- *
- * @param d the source data array
- */
- public void copyFromUnchecked(short[] d) {
- copyFromUnchecked(d, Element.DataType.SIGNED_16, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This method does not guarantee
- * that the Allocation is compatible with the input buffer; it copies memory
- * without reinterpretation.
- *
- * @param d the source data array
- */
- public void copyFromUnchecked(byte[] d) {
- copyFromUnchecked(d, Element.DataType.SIGNED_8, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This method does not guarantee
- * that the Allocation is compatible with the input buffer; it copies memory
- * without reinterpretation.
- *
- * @param d the source data array
- */
- public void copyFromUnchecked(float[] d) {
- copyFromUnchecked(d, Element.DataType.FLOAT_32, d.length);
- }
-
-
- /**
- * Copy into this Allocation from an array. This variant is type checked
- * and will generate exceptions if the Allocation's {@link
- * android.renderscript.Element} does not match the array's
- * primitive type.
- *
- * @param array The source data array
- */
- public void copyFrom(Object array) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFrom");
- copyFromUnchecked(array, validateObjectIsPrimitiveArray(array, true),
- java.lang.reflect.Array.getLength(array));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy into this Allocation from an array. This variant is type checked
- * and will generate exceptions if the Allocation's {@link
- * android.renderscript.Element} is not a 32 bit integer type.
- *
- * @param d the source data array
- */
- public void copyFrom(int[] d) {
- validateIsInt32();
- copyFromUnchecked(d, Element.DataType.SIGNED_32, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This variant is type checked
- * and will generate exceptions if the Allocation's {@link
- * android.renderscript.Element} is not a 16 bit integer type.
- *
- * @param d the source data array
- */
- public void copyFrom(short[] d) {
- validateIsInt16();
- copyFromUnchecked(d, Element.DataType.SIGNED_16, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This variant is type checked
- * and will generate exceptions if the Allocation's {@link
- * android.renderscript.Element} is not an 8 bit integer type.
- *
- * @param d the source data array
- */
- public void copyFrom(byte[] d) {
- validateIsInt8();
- copyFromUnchecked(d, Element.DataType.SIGNED_8, d.length);
- }
-
- /**
- * Copy into this Allocation from an array. This variant is type checked
- * and will generate exceptions if the Allocation's {@link
- * android.renderscript.Element} is not a 32 bit float type.
- *
- * @param d the source data array
- */
- public void copyFrom(float[] d) {
- validateIsFloat32();
- copyFromUnchecked(d, Element.DataType.FLOAT_32, d.length);
- }
-
- /**
- * Copy into an Allocation from a {@link android.graphics.Bitmap}. The
- * height, width, and format of the bitmap must match the existing
- * allocation.
- *
- * <p>If the {@link android.graphics.Bitmap} is the same as the {@link
- * android.graphics.Bitmap} used to create the Allocation with {@link
- * #createFromBitmap} and {@link #USAGE_SHARED} is set on the Allocation,
- * this will synchronize the Allocation with the latest data from the {@link
- * android.graphics.Bitmap}, potentially avoiding the actual copy.</p>
- *
- * @param b the source bitmap
- */
- public void copyFrom(Bitmap b) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFrom");
- mRS.validate();
- if (b.getConfig() == null) {
- Bitmap newBitmap = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(newBitmap);
- c.drawBitmap(b, 0, 0, null);
- copyFrom(newBitmap);
- return;
- }
- validateBitmapSize(b);
- validateBitmapFormat(b);
- mRS.nAllocationCopyFromBitmap(getID(mRS), b);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy an Allocation from an Allocation. The types of both allocations
- * must be identical.
- *
- * @param a the source allocation
- */
- public void copyFrom(Allocation a) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyFrom");
- mRS.validate();
- if (!mType.equals(a.getType())) {
- throw new RSIllegalArgumentException("Types of allocations must match.");
- }
- copy2DRangeFrom(0, 0, mCurrentDimX, mCurrentDimY, a, 0, 0);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * This is only intended to be used by auto-generated code reflected from
- * the RenderScript script files and should not be used by developers.
- *
- * @param xoff
- * @param fp
- */
- public void setFromFieldPacker(int xoff, FieldPacker fp) {
- mRS.validate();
- int eSize = mType.mElement.getBytesSize();
- final byte[] data = fp.getData();
-
- int count = data.length / eSize;
- if ((eSize * count) != data.length) {
- throw new RSIllegalArgumentException("Field packer length " + data.length +
- " not divisible by element size " + eSize + ".");
- }
- copy1DRangeFromUnchecked(xoff, count, data);
- }
-
- /**
- * This is only intended to be used by auto-generated code reflected from
- * the RenderScript script files.
- *
- * @param xoff
- * @param component_number
- * @param fp
- */
- public void setFromFieldPacker(int xoff, int component_number, FieldPacker fp) {
- mRS.validate();
- if (component_number >= mType.mElement.mElements.length) {
- throw new RSIllegalArgumentException("Component_number " + component_number + " out of range.");
- }
- if(xoff < 0) {
- throw new RSIllegalArgumentException("Offset must be >= 0.");
- }
-
- final byte[] data = fp.getData();
- int eSize = mType.mElement.mElements[component_number].getBytesSize();
- eSize *= mType.mElement.mArraySizes[component_number];
-
- if (data.length != eSize) {
- throw new RSIllegalArgumentException("Field packer sizelength " + data.length +
- " does not match component size " + eSize + ".");
- }
-
- mRS.nAllocationElementData1D(getIDSafe(), xoff, mSelectedLOD,
- component_number, data, data.length);
- }
-
- private void data1DChecks(int off, int count, int len, int dataSize) {
- mRS.validate();
- if(off < 0) {
- throw new RSIllegalArgumentException("Offset must be >= 0.");
- }
- if(count < 1) {
- throw new RSIllegalArgumentException("Count must be >= 1.");
- }
- if((off + count) > mCurrentCount) {
- throw new RSIllegalArgumentException("Overflow, Available count " + mCurrentCount +
- ", got " + count + " at offset " + off + ".");
- }
- if(len < dataSize) {
- throw new RSIllegalArgumentException("Array too small for allocation type.");
- }
- }
-
- /**
- * Generate a mipmap chain. This is only valid if the Type of the Allocation
- * includes mipmaps.
- *
- * <p>This function will generate a complete set of mipmaps from the top
- * level LOD and place them into the script memory space.</p>
- *
- * <p>If the Allocation is also using other memory spaces, a call to {@link
- * #syncAll syncAll(Allocation.USAGE_SCRIPT)} is required.</p>
- */
- public void generateMipmaps() {
- mRS.nAllocationGenerateMipmaps(getID(mRS));
- }
-
- private void copy1DRangeFromUnchecked(int off, int count, Object array,
- Element.DataType dt, int arrayLen) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy1DRangeFromUnchecked");
- final int dataSize = mType.mElement.getBytesSize() * count;
- data1DChecks(off, count, arrayLen * dt.mSize, dataSize);
- mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, array, dataSize, dt);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy an array into part of this Allocation. This method does not
- * guarantee that the Allocation is compatible with the input buffer.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param array The source data array
- */
- public void copy1DRangeFromUnchecked(int off, int count, Object array) {
- copy1DRangeFromUnchecked(off, count, array,
- validateObjectIsPrimitiveArray(array, false),
- java.lang.reflect.Array.getLength(array));
- }
-
- /**
- * Copy an array into part of this Allocation. This method does not
- * guarantee that the Allocation is compatible with the input buffer.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFromUnchecked(int off, int count, int[] d) {
- copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_32, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This method does not
- * guarantee that the Allocation is compatible with the input buffer.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFromUnchecked(int off, int count, short[] d) {
- copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_16, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This method does not
- * guarantee that the Allocation is compatible with the input buffer.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFromUnchecked(int off, int count, byte[] d) {
- copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.SIGNED_8, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This method does not
- * guarantee that the Allocation is compatible with the input buffer.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFromUnchecked(int off, int count, float[] d) {
- copy1DRangeFromUnchecked(off, count, (Object)d, Element.DataType.FLOAT_32, d.length);
- }
-
-
- /**
- * Copy an array into part of this Allocation. This variant is type checked
- * and will generate exceptions if the Allocation type does not
- * match the component type of the array passed in.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param array The source data array.
- */
- public void copy1DRangeFrom(int off, int count, Object array) {
- copy1DRangeFromUnchecked(off, count, array,
- validateObjectIsPrimitiveArray(array, true),
- java.lang.reflect.Array.getLength(array));
- }
-
- /**
- * Copy an array into part of this Allocation. This variant is type checked
- * and will generate exceptions if the Allocation type is not a 32 bit
- * integer type.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFrom(int off, int count, int[] d) {
- validateIsInt32();
- copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_32, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This variant is type checked
- * and will generate exceptions if the Allocation type is not a 16 bit
- * integer type.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFrom(int off, int count, short[] d) {
- validateIsInt16();
- copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_16, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This variant is type checked
- * and will generate exceptions if the Allocation type is not an 8 bit
- * integer type.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array
- */
- public void copy1DRangeFrom(int off, int count, byte[] d) {
- validateIsInt8();
- copy1DRangeFromUnchecked(off, count, d, Element.DataType.SIGNED_8, d.length);
- }
-
- /**
- * Copy an array into part of this Allocation. This variant is type checked
- * and will generate exceptions if the Allocation type is not a 32 bit float
- * type.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param d the source data array.
- */
- public void copy1DRangeFrom(int off, int count, float[] d) {
- validateIsFloat32();
- copy1DRangeFromUnchecked(off, count, d, Element.DataType.FLOAT_32, d.length);
- }
-
- /**
- * Copy part of an Allocation into this Allocation.
- *
- * @param off The offset of the first element to be copied.
- * @param count The number of elements to be copied.
- * @param data the source data allocation.
- * @param dataOff off The offset of the first element in data to
- * be copied.
- */
- public void copy1DRangeFrom(int off, int count, Allocation data, int dataOff) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy1DRangeFrom");
- mRS.nAllocationData2D(getIDSafe(), off, 0,
- mSelectedLOD, mSelectedFace.mID,
- count, 1, data.getID(mRS), dataOff, 0,
- data.mSelectedLOD, data.mSelectedFace.mID);
- }
-
- private void validate2DRange(int xoff, int yoff, int w, int h) {
- if (mAdaptedAllocation != null) {
-
- } else {
-
- if (xoff < 0 || yoff < 0) {
- throw new RSIllegalArgumentException("Offset cannot be negative.");
- }
- if (h < 0 || w < 0) {
- throw new RSIllegalArgumentException("Height or width cannot be negative.");
- }
- if (((xoff + w) > mCurrentDimX) || ((yoff + h) > mCurrentDimY)) {
- throw new RSIllegalArgumentException("Updated region larger than allocation.");
- }
- }
- }
-
- void copy2DRangeFromUnchecked(int xoff, int yoff, int w, int h, Object array,
- Element.DataType dt, int arrayLen) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy2DRangeFromUnchecked");
- mRS.validate();
- validate2DRange(xoff, yoff, w, h);
- mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID, w, h,
- array, arrayLen * dt.mSize, dt);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy from an array into a rectangular region in this Allocation. The
- * array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param array Data to be placed into the Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h, Object array) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy2DRangeFrom");
- copy2DRangeFromUnchecked(xoff, yoff, w, h, array,
- validateObjectIsPrimitiveArray(array, true),
- java.lang.reflect.Array.getLength(array));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy from an array into a rectangular region in this Allocation. The
- * array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param data to be placed into the Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
- validateIsInt8();
- copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
- Element.DataType.SIGNED_8, data.length);
- }
-
- /**
- * Copy from an array into a rectangular region in this Allocation. The
- * array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param data to be placed into the Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
- validateIsInt16();
- copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
- Element.DataType.SIGNED_16, data.length);
- }
-
- /**
- * Copy from an array into a rectangular region in this Allocation. The
- * array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param data to be placed into the Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
- validateIsInt32();
- copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
- Element.DataType.SIGNED_32, data.length);
- }
-
- /**
- * Copy from an array into a rectangular region in this Allocation. The
- * array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param data to be placed into the Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
- validateIsFloat32();
- copy2DRangeFromUnchecked(xoff, yoff, w, h, data,
- Element.DataType.FLOAT_32, data.length);
- }
-
- /**
- * Copy a rectangular region from an Allocation into a rectangular region in
- * this Allocation.
- *
- * @param xoff X offset of the region in this Allocation
- * @param yoff Y offset of the region in this Allocation
- * @param w Width of the region to update.
- * @param h Height of the region to update.
- * @param data source Allocation.
- * @param dataXoff X offset in source Allocation
- * @param dataYoff Y offset in source Allocation
- */
- public void copy2DRangeFrom(int xoff, int yoff, int w, int h,
- Allocation data, int dataXoff, int dataYoff) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy2DRangeFrom");
- mRS.validate();
- validate2DRange(xoff, yoff, w, h);
- mRS.nAllocationData2D(getIDSafe(), xoff, yoff,
- mSelectedLOD, mSelectedFace.mID,
- w, h, data.getID(mRS), dataXoff, dataYoff,
- data.mSelectedLOD, data.mSelectedFace.mID);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy a {@link android.graphics.Bitmap} into an Allocation. The height
- * and width of the update will use the height and width of the {@link
- * android.graphics.Bitmap}.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param data the Bitmap to be copied
- */
- public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy2DRangeFrom");
- mRS.validate();
- if (data.getConfig() == null) {
- Bitmap newBitmap = Bitmap.createBitmap(data.getWidth(), data.getHeight(), Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(newBitmap);
- c.drawBitmap(data, 0, 0, null);
- copy2DRangeFrom(xoff, yoff, newBitmap);
- return;
- }
- validateBitmapFormat(data);
- validate2DRange(xoff, yoff, data.getWidth(), data.getHeight());
- mRS.nAllocationData2D(getIDSafe(), xoff, yoff, mSelectedLOD, mSelectedFace.mID, data);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- private void validate3DRange(int xoff, int yoff, int zoff, int w, int h, int d) {
- if (mAdaptedAllocation != null) {
-
- } else {
-
- if (xoff < 0 || yoff < 0 || zoff < 0) {
- throw new RSIllegalArgumentException("Offset cannot be negative.");
- }
- if (h < 0 || w < 0 || d < 0) {
- throw new RSIllegalArgumentException("Height or width cannot be negative.");
- }
- if (((xoff + w) > mCurrentDimX) || ((yoff + h) > mCurrentDimY) || ((zoff + d) > mCurrentDimZ)) {
- throw new RSIllegalArgumentException("Updated region larger than allocation.");
- }
- }
- }
-
- /**
- * @hide
- *
- */
- private void copy3DRangeFromUnchecked(int xoff, int yoff, int zoff, int w, int h, int d,
- Object array, Element.DataType dt, int arrayLen) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy3DRangeFromUnchecked");
- mRS.validate();
- validate3DRange(xoff, yoff, zoff, w, h, d);
- mRS.nAllocationData3D(getIDSafe(), xoff, yoff, zoff, mSelectedLOD, w, h, d,
- array, arrayLen * dt.mSize, dt);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * @hide
- * Copy a rectangular region from the array into the allocation.
- * The array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param zoff Z offset of the region to update in this Allocation
- * @param w Width of the region to update
- * @param h Height of the region to update
- * @param d Depth of the region to update
- * @param data to be placed into the allocation
- */
- public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d, Object array) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copy3DRangeFrom");
- copy3DRangeFromUnchecked(xoff, yoff, zoff, w, h, d, array,
- validateObjectIsPrimitiveArray(array, true),
- java.lang.reflect.Array.getLength(array));
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * @hide
- * Copy a rectangular region into the allocation from another
- * allocation.
- *
- * @param xoff X offset of the region to update in this Allocation
- * @param yoff Y offset of the region to update in this Allocation
- * @param zoff Z offset of the region to update in this Allocation
- * @param w Width of the region to update.
- * @param h Height of the region to update.
- * @param d Depth of the region to update.
- * @param data source allocation.
- * @param dataXoff X offset of the region in the source Allocation
- * @param dataYoff Y offset of the region in the source Allocation
- * @param dataZoff Z offset of the region in the source Allocation
- */
- public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d,
- Allocation data, int dataXoff, int dataYoff, int dataZoff) {
- mRS.validate();
- validate3DRange(xoff, yoff, zoff, w, h, d);
- mRS.nAllocationData3D(getIDSafe(), xoff, yoff, zoff, mSelectedLOD,
- w, h, d, data.getID(mRS), dataXoff, dataYoff, dataZoff,
- data.mSelectedLOD);
- }
-
-
- /**
- * Copy from the Allocation into a {@link android.graphics.Bitmap}. The
- * bitmap must match the dimensions of the Allocation.
- *
- * @param b The bitmap to be set from the Allocation.
- */
- public void copyTo(Bitmap b) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyTo");
- mRS.validate();
- validateBitmapFormat(b);
- validateBitmapSize(b);
- mRS.nAllocationCopyToBitmap(getID(mRS), b);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- private void copyTo(Object array, Element.DataType dt, int arrayLen) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "copyTo");
- mRS.validate();
- mRS.nAllocationRead(getID(mRS), array, dt);
- Trace.traceEnd(RenderScript.TRACE_TAG);
- }
-
- /**
- * Copy from the Allocation into an array. The array must be at
- * least as large as the Allocation. The
- * {@link android.renderscript.Element} must match the component
- * type of the array passed in.
- *
- * @param array The array to be set from the Allocation.
- */
- public void copyTo(Object array) {
- copyTo(array, validateObjectIsPrimitiveArray(array, true),
- java.lang.reflect.Array.getLength(array));
- }
-
- /**
- * Copy from the Allocation into a byte array. The array must be at least
- * as large as the Allocation. The allocation must be of an 8 bit integer
- * {@link android.renderscript.Element} type.
- *
- * @param d The array to be set from the Allocation.
- */
- public void copyTo(byte[] d) {
- validateIsInt8();
- copyTo(d, Element.DataType.SIGNED_8, d.length);
- }
-
- /**
- * Copy from the Allocation into a short array. The array must be at least
- * as large as the Allocation. The allocation must be of an 16 bit integer
- * {@link android.renderscript.Element} type.
- *
- * @param d The array to be set from the Allocation.
- */
- public void copyTo(short[] d) {
- validateIsInt16();
- copyTo(d, Element.DataType.SIGNED_16, d.length);
- }
-
- /**
- * Copy from the Allocation into a int array. The array must be at least as
- * large as the Allocation. The allocation must be of an 32 bit integer
- * {@link android.renderscript.Element} type.
- *
- * @param d The array to be set from the Allocation.
- */
- public void copyTo(int[] d) {
- validateIsInt32();
- copyTo(d, Element.DataType.SIGNED_32, d.length);
- }
-
- /**
- * Copy from the Allocation into a float array. The array must be at least
- * as large as the Allocation. The allocation must be of an 32 bit float
- * {@link android.renderscript.Element} type.
- *
- * @param d The array to be set from the Allocation.
- */
- public void copyTo(float[] d) {
- validateIsFloat32();
- copyTo(d, Element.DataType.FLOAT_32, d.length);
- }
-
- /**
- * Resize a 1D allocation. The contents of the allocation are preserved.
- * If new elements are allocated objects are created with null contents and
- * the new region is otherwise undefined.
- *
- * <p>If the new region is smaller the references of any objects outside the
- * new region will be released.</p>
- *
- * <p>A new type will be created with the new dimension.</p>
- *
- * @param dimX The new size of the allocation.
- *
- * @deprecated RenderScript objects should be immutable once created. The
- * replacement is to create a new allocation and copy the contents.
- */
- public synchronized void resize(int dimX) {
- if ((mType.getY() > 0)|| (mType.getZ() > 0) || mType.hasFaces() || mType.hasMipmaps()) {
- throw new RSInvalidStateException("Resize only support for 1D allocations at this time.");
- }
- mRS.nAllocationResize1D(getID(mRS), dimX);
- mRS.finish(); // Necessary because resize is fifoed and update is async.
-
- long typeID = mRS.nAllocationGetType(getID(mRS));
- mType = new Type(typeID, mRS);
- mType.updateFromNative();
- updateCacheInfo(mType);
- }
-
-
- // creation
-
- static BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
- static {
- mBitmapOptions.inScaled = false;
- }
-
- /**
- * Creates a new Allocation with the given {@link
- * android.renderscript.Type}, mipmap flag, and usage flags.
- *
- * @param type RenderScript type describing data layout
- * @param mips specifies desired mipmap behaviour for the
- * allocation
- * @param usage bit field specifying how the Allocation is
- * utilized
- */
- static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "createTyped");
- rs.validate();
- if (type.getID(rs) == 0) {
- throw new RSInvalidStateException("Bad Type");
- }
- long id = rs.nAllocationCreateTyped(type.getID(rs), mips.mID, usage, 0);
- if (id == 0) {
- throw new RSRuntimeException("Allocation creation failed.");
- }
- Trace.traceEnd(RenderScript.TRACE_TAG);
- return new Allocation(id, rs, type, usage);
- }
-
- /**
- * Creates an Allocation with the size specified by the type and no mipmaps
- * generated by default
- *
- * @param rs Context to which the allocation will belong.
- * @param type renderscript type describing data layout
- * @param usage bit field specifying how the allocation is
- * utilized
- *
- * @return allocation
- */
- static public Allocation createTyped(RenderScript rs, Type type, int usage) {
- return createTyped(rs, type, MipmapControl.MIPMAP_NONE, usage);
- }
-
- /**
- * Creates an Allocation for use by scripts with a given {@link
- * android.renderscript.Type} and no mipmaps
- *
- * @param rs Context to which the Allocation will belong.
- * @param type RenderScript Type describing data layout
- *
- * @return allocation
- */
- static public Allocation createTyped(RenderScript rs, Type type) {
- return createTyped(rs, type, MipmapControl.MIPMAP_NONE, USAGE_SCRIPT);
- }
-
- /**
- * Creates an Allocation with a specified number of given elements
- *
- * @param rs Context to which the Allocation will belong.
- * @param e Element to use in the Allocation
- * @param count the number of Elements in the Allocation
- * @param usage bit field specifying how the Allocation is
- * utilized
- *
- * @return allocation
- */
- static public Allocation createSized(RenderScript rs, Element e,
- int count, int usage) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "createSized");
- rs.validate();
- Type.Builder b = new Type.Builder(rs, e);
- b.setX(count);
- Type t = b.create();
-
- long id = rs.nAllocationCreateTyped(t.getID(rs), MipmapControl.MIPMAP_NONE.mID, usage, 0);
- if (id == 0) {
- throw new RSRuntimeException("Allocation creation failed.");
- }
- Trace.traceEnd(RenderScript.TRACE_TAG);
- return new Allocation(id, rs, t, usage);
- }
-
- /**
- * Creates an Allocation with a specified number of given elements
- *
- * @param rs Context to which the Allocation will belong.
- * @param e Element to use in the Allocation
- * @param count the number of Elements in the Allocation
- *
- * @return allocation
- */
- static public Allocation createSized(RenderScript rs, Element e, int count) {
- return createSized(rs, e, count, USAGE_SCRIPT);
- }
-
- static Element elementFromBitmap(RenderScript rs, Bitmap b) {
- final Bitmap.Config bc = b.getConfig();
- if (bc == Bitmap.Config.ALPHA_8) {
- return Element.A_8(rs);
- }
- if (bc == Bitmap.Config.ARGB_4444) {
- return Element.RGBA_4444(rs);
- }
- if (bc == Bitmap.Config.ARGB_8888) {
- return Element.RGBA_8888(rs);
- }
- if (bc == Bitmap.Config.RGB_565) {
- return Element.RGB_565(rs);
- }
- throw new RSInvalidStateException("Bad bitmap type: " + bc);
- }
-
- static Type typeFromBitmap(RenderScript rs, Bitmap b,
- MipmapControl mip) {
- Element e = elementFromBitmap(rs, b);
- Type.Builder tb = new Type.Builder(rs, e);
- tb.setX(b.getWidth());
- tb.setY(b.getHeight());
- tb.setMipmaps(mip == MipmapControl.MIPMAP_FULL);
- return tb.create();
- }
-
- /**
- * Creates an Allocation from a {@link android.graphics.Bitmap}.
- *
- * @param rs Context to which the allocation will belong.
- * @param b Bitmap source for the allocation data
- * @param mips specifies desired mipmap behaviour for the
- * allocation
- * @param usage bit field specifying how the allocation is
- * utilized
- *
- * @return Allocation containing bitmap data
- *
- */
- static public Allocation createFromBitmap(RenderScript rs, Bitmap b,
- MipmapControl mips,
- int usage) {
- Trace.traceBegin(RenderScript.TRACE_TAG, "createFromBitmap");
- rs.validate();
-
- // WAR undocumented color formats
- if (b.getConfig() == null) {
- if ((usage & USAGE_SHARED) != 0) {
- throw new RSIllegalArgumentException("USAGE_SHARED cannot be used with a Bitmap that has a null config.");
- }
- Bitmap newBitmap = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(newBitmap);
- c.drawBitmap(b, 0, 0, null);
- return createFromBitmap(rs, newBitmap, mips, usage);
- }
-
- Type t = typeFromBitmap(rs, b, mips);
-
- // enable optimized bitmap path only with no mipmap and script-only usage
- if (mips == MipmapControl.MIPMAP_NONE &&
- t.getElement().isCompatible(Element.RGBA_8888(rs)) &&
- usage == (USAGE_SHARED | USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE)) {
- long id = rs.nAllocationCreateBitmapBackedAllocation(t.getID(rs), mips.mID, b, usage);
- if (id == 0) {
- throw new RSRuntimeException("Load failed.");
- }
-
- // keep a reference to the Bitmap around to prevent GC
- Allocation alloc = new Allocation(id, rs, t, usage);
- alloc.setBitmap(b);
- return alloc;
- }
-
-
- long id = rs.nAllocationCreateFromBitmap(t.getID(rs), mips.mID, b, usage);
- if (id == 0) {
- throw new RSRuntimeException("Load failed.");
- }
- Trace.traceEnd(RenderScript.TRACE_TAG);
- return new Allocation(id, rs, t, usage);
- }
-
- /**
- * Returns the handle to a raw buffer that is being managed by the screen
- * compositor. This operation is only valid for Allocations with {@link
- * #USAGE_IO_INPUT}.
- *
- * @return Surface object associated with allocation
- *
- */
- public Surface getSurface() {
- if ((mUsage & USAGE_IO_INPUT) == 0) {
- throw new RSInvalidStateException("Allocation is not a surface texture.");
- }
- return mRS.nAllocationGetSurface(getID(mRS));
- }
-
- /**
- * Associate a {@link android.view.Surface} with this Allocation. This
- * operation is only valid for Allocations with {@link #USAGE_IO_OUTPUT}.
- *
- * @param sur Surface to associate with allocation
- */
- public void setSurface(Surface sur) {
- mRS.validate();
- if ((mUsage & USAGE_IO_OUTPUT) == 0) {
- throw new RSInvalidStateException("Allocation is not USAGE_IO_OUTPUT.");
- }
-
- mRS.nAllocationSetSurface(getID(mRS), sur);
- }
-
- /**
- * Creates an Allocation from a {@link android.graphics.Bitmap}.
- *
- * <p>With target API version 18 or greater, this Allocation will be created
- * with {@link #USAGE_SHARED}, {@link #USAGE_SCRIPT}, and {@link
- * #USAGE_GRAPHICS_TEXTURE}. With target API version 17 or lower, this
- * Allocation will be created with {@link #USAGE_GRAPHICS_TEXTURE}.</p>
- *
- * @param rs Context to which the allocation will belong.
- * @param b bitmap source for the allocation data
- *
- * @return Allocation containing bitmap data
- *
- */
- static public Allocation createFromBitmap(RenderScript rs, Bitmap b) {
- if (rs.getApplicationContext().getApplicationInfo().targetSdkVersion >= 18) {
- return createFromBitmap(rs, b, MipmapControl.MIPMAP_NONE,
- USAGE_SHARED | USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE);
- }
- return createFromBitmap(rs, b, MipmapControl.MIPMAP_NONE,
- USAGE_GRAPHICS_TEXTURE);
- }
-
- /**
- * Creates a cubemap Allocation from a {@link android.graphics.Bitmap}
- * containing the horizontal list of cube faces. Each face must be a square,
- * have the same size as all other faces, and have a width that is a power
- * of 2.
- *
- * @param rs Context to which the allocation will belong.
- * @param b Bitmap with cubemap faces layed out in the following
- * format: right, left, top, bottom, front, back
- * @param mips specifies desired mipmap behaviour for the cubemap
- * @param usage bit field specifying how the cubemap is utilized
- *
- * @return allocation containing cubemap data
- *
- */
- static public Allocation createCubemapFromBitmap(RenderScript rs, Bitmap b,
- MipmapControl mips,
- int usage) {
- rs.validate();
-
- int height = b.getHeight();
- int width = b.getWidth();
-
- if (width % 6 != 0) {
- throw new RSIllegalArgumentException("Cubemap height must be multiple of 6");
- }
- if (width / 6 != height) {
- throw new RSIllegalArgumentException("Only square cube map faces supported");
- }
- boolean isPow2 = (height & (height - 1)) == 0;
- if (!isPow2) {
- throw new RSIllegalArgumentException("Only power of 2 cube faces supported");
- }
-
- Element e = elementFromBitmap(rs, b);
- Type.Builder tb = new Type.Builder(rs, e);
- tb.setX(height);
- tb.setY(height);
- tb.setFaces(true);
- tb.setMipmaps(mips == MipmapControl.MIPMAP_FULL);
- Type t = tb.create();
-
- long id = rs.nAllocationCubeCreateFromBitmap(t.getID(rs), mips.mID, b, usage);
- if(id == 0) {
- throw new RSRuntimeException("Load failed for bitmap " + b + " element " + e);
- }
- return new Allocation(id, rs, t, usage);
- }
-
- /**
- * Creates a non-mipmapped cubemap Allocation for use as a graphics texture
- * from a {@link android.graphics.Bitmap} containing the horizontal list of
- * cube faces. Each face must be a square, have the same size as all other
- * faces, and have a width that is a power of 2.
- *
- * @param rs Context to which the allocation will belong.
- * @param b bitmap with cubemap faces layed out in the following
- * format: right, left, top, bottom, front, back
- *
- * @return allocation containing cubemap data
- *
- */
- static public Allocation createCubemapFromBitmap(RenderScript rs,
- Bitmap b) {
- return createCubemapFromBitmap(rs, b, MipmapControl.MIPMAP_NONE,
- USAGE_GRAPHICS_TEXTURE);
- }
-
- /**
- * Creates a cubemap Allocation from 6 {@link android.graphics.Bitmap}
- * objects containing the cube faces. Each face must be a square, have the
- * same size as all other faces, and have a width that is a power of 2.
- *
- * @param rs Context to which the allocation will belong.
- * @param xpos cubemap face in the positive x direction
- * @param xneg cubemap face in the negative x direction
- * @param ypos cubemap face in the positive y direction
- * @param yneg cubemap face in the negative y direction
- * @param zpos cubemap face in the positive z direction
- * @param zneg cubemap face in the negative z direction
- * @param mips specifies desired mipmap behaviour for the cubemap
- * @param usage bit field specifying how the cubemap is utilized
- *
- * @return allocation containing cubemap data
- *
- */
- static public Allocation createCubemapFromCubeFaces(RenderScript rs,
- Bitmap xpos,
- Bitmap xneg,
- Bitmap ypos,
- Bitmap yneg,
- Bitmap zpos,
- Bitmap zneg,
- MipmapControl mips,
- int usage) {
- int height = xpos.getHeight();
- if (xpos.getWidth() != height ||
- xneg.getWidth() != height || xneg.getHeight() != height ||
- ypos.getWidth() != height || ypos.getHeight() != height ||
- yneg.getWidth() != height || yneg.getHeight() != height ||
- zpos.getWidth() != height || zpos.getHeight() != height ||
- zneg.getWidth() != height || zneg.getHeight() != height) {
- throw new RSIllegalArgumentException("Only square cube map faces supported");
- }
- boolean isPow2 = (height & (height - 1)) == 0;
- if (!isPow2) {
- throw new RSIllegalArgumentException("Only power of 2 cube faces supported");
- }
-
- Element e = elementFromBitmap(rs, xpos);
- Type.Builder tb = new Type.Builder(rs, e);
- tb.setX(height);
- tb.setY(height);
- tb.setFaces(true);
- tb.setMipmaps(mips == MipmapControl.MIPMAP_FULL);
- Type t = tb.create();
- Allocation cubemap = Allocation.createTyped(rs, t, mips, usage);
-
- AllocationAdapter adapter = AllocationAdapter.create2D(rs, cubemap);
- adapter.setFace(Type.CubemapFace.POSITIVE_X);
- adapter.copyFrom(xpos);
- adapter.setFace(Type.CubemapFace.NEGATIVE_X);
- adapter.copyFrom(xneg);
- adapter.setFace(Type.CubemapFace.POSITIVE_Y);
- adapter.copyFrom(ypos);
- adapter.setFace(Type.CubemapFace.NEGATIVE_Y);
- adapter.copyFrom(yneg);
- adapter.setFace(Type.CubemapFace.POSITIVE_Z);
- adapter.copyFrom(zpos);
- adapter.setFace(Type.CubemapFace.NEGATIVE_Z);
- adapter.copyFrom(zneg);
-
- return cubemap;
- }
-
- /**
- * Creates a non-mipmapped cubemap Allocation for use as a sampler input
- * from 6 {@link android.graphics.Bitmap} objects containing the cube
- * faces. Each face must be a square, have the same size as all other faces,
- * and have a width that is a power of 2.
- *
- * @param rs Context to which the allocation will belong.
- * @param xpos cubemap face in the positive x direction
- * @param xneg cubemap face in the negative x direction
- * @param ypos cubemap face in the positive y direction
- * @param yneg cubemap face in the negative y direction
- * @param zpos cubemap face in the positive z direction
- * @param zneg cubemap face in the negative z direction
- *
- * @return allocation containing cubemap data
- *
- */
- static public Allocation createCubemapFromCubeFaces(RenderScript rs,
- Bitmap xpos,
- Bitmap xneg,
- Bitmap ypos,
- Bitmap yneg,
- Bitmap zpos,
- Bitmap zneg) {
- return createCubemapFromCubeFaces(rs, xpos, xneg, ypos, yneg,
- zpos, zneg, MipmapControl.MIPMAP_NONE,
- USAGE_GRAPHICS_TEXTURE);
- }
-
- /**
- * Creates an Allocation from the Bitmap referenced
- * by resource ID.
- *
- * @param rs Context to which the allocation will belong.
- * @param res application resources
- * @param id resource id to load the data from
- * @param mips specifies desired mipmap behaviour for the
- * allocation
- * @param usage bit field specifying how the allocation is
- * utilized
- *
- * @return Allocation containing resource data
- *
- */
- static public Allocation createFromBitmapResource(RenderScript rs,
- Resources res,
- int id,
- MipmapControl mips,
- int usage) {
-
- rs.validate();
- if ((usage & (USAGE_SHARED | USAGE_IO_INPUT | USAGE_IO_OUTPUT)) != 0) {
- throw new RSIllegalArgumentException("Unsupported usage specified.");
- }
- Bitmap b = BitmapFactory.decodeResource(res, id);
- Allocation alloc = createFromBitmap(rs, b, mips, usage);
- b.recycle();
- return alloc;
- }
-
- /**
- * Creates a non-mipmapped Allocation to use as a graphics texture from the
- * {@link android.graphics.Bitmap} referenced by resource ID.
- *
- * <p>With target API version 18 or greater, this allocation will be created
- * with {@link #USAGE_SCRIPT} and {@link #USAGE_GRAPHICS_TEXTURE}. With
- * target API version 17 or lower, this allocation will be created with
- * {@link #USAGE_GRAPHICS_TEXTURE}.</p>
- *
- * @param rs Context to which the allocation will belong.
- * @param res application resources
- * @param id resource id to load the data from
- *
- * @return Allocation containing resource data
- *
- */
- static public Allocation createFromBitmapResource(RenderScript rs,
- Resources res,
- int id) {
- if (rs.getApplicationContext().getApplicationInfo().targetSdkVersion >= 18) {
- return createFromBitmapResource(rs, res, id,
- MipmapControl.MIPMAP_NONE,
- USAGE_SCRIPT | USAGE_GRAPHICS_TEXTURE);
- }
- return createFromBitmapResource(rs, res, id,
- MipmapControl.MIPMAP_NONE,
- USAGE_GRAPHICS_TEXTURE);
- }
-
- /**
- * Creates an Allocation containing string data encoded in UTF-8 format.
- *
- * @param rs Context to which the allocation will belong.
- * @param str string to create the allocation from
- * @param usage bit field specifying how the allocaiton is
- * utilized
- *
- */
- static public Allocation createFromString(RenderScript rs,
- String str,
- int usage) {
- rs.validate();
- byte[] allocArray = null;
- try {
- allocArray = str.getBytes("UTF-8");
- Allocation alloc = Allocation.createSized(rs, Element.U8(rs), allocArray.length, usage);
- alloc.copyFrom(allocArray);
- return alloc;
- }
- catch (Exception e) {
- throw new RSRuntimeException("Could not convert string to utf-8.");
- }
- }
-
- /**
- * Interface to handle notification when new buffers are available via
- * {@link #USAGE_IO_INPUT}. An application will receive one notification
- * when a buffer is available. Additional buffers will not trigger new
- * notifications until a buffer is processed.
- */
- public interface OnBufferAvailableListener {
- public void onBufferAvailable(Allocation a);
- }
-
- /**
- * Set a notification handler for {@link #USAGE_IO_INPUT}.
- *
- * @param callback instance of the OnBufferAvailableListener
- * class to be called when buffer arrive.
- */
- public void setOnBufferAvailableListener(OnBufferAvailableListener callback) {
- synchronized(mAllocationMap) {
- mAllocationMap.put(new Long(getID(mRS)), this);
- mBufferNotifier = callback;
- }
- }
-
- static void sendBufferNotification(int id) {
- synchronized(mAllocationMap) {
- Allocation a = mAllocationMap.get(new Long(id));
-
- if ((a != null) && (a.mBufferNotifier != null)) {
- a.mBufferNotifier.onBufferAvailable(a);
- }
- }
- }
-
-}
diff --git a/graphics/java/android/renderscript/AllocationAdapter.java b/graphics/java/android/renderscript/AllocationAdapter.java
deleted file mode 100644
index 6c1b1ed..0000000
--- a/graphics/java/android/renderscript/AllocationAdapter.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * 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;
-
-/**
- * Only intended for use by generated reflected code.
- *
- **/
-public class AllocationAdapter extends Allocation {
- AllocationAdapter(long id, RenderScript rs, Allocation alloc) {
- super(id, rs, alloc.mType, alloc.mUsage);
- mAdaptedAllocation = alloc;
- }
-
- long getID(RenderScript rs) {
- throw new RSInvalidStateException(
- "This operation is not supported with adapters at this time.");
- }
-
- /**
- * @hide
- */
- public void subData(int xoff, FieldPacker fp) {
- super.setFromFieldPacker(xoff, fp);
- }
- /**
- * @hide
- */
- public void subElementData(int xoff, int component_number, FieldPacker fp) {
- super.setFromFieldPacker(xoff, component_number, fp);
- }
- /**
- * @hide
- */
- public void subData1D(int off, int count, int[] d) {
- super.copy1DRangeFrom(off, count, d);
- }
- /**
- * @hide
- */
- public void subData1D(int off, int count, short[] d) {
- super.copy1DRangeFrom(off, count, d);
- }
- /**
- * @hide
- */
- public void subData1D(int off, int count, byte[] d) {
- super.copy1DRangeFrom(off, count, d);
- }
- /**
- * @hide
- */
- public void subData1D(int off, int count, float[] d) {
- super.copy1DRangeFrom(off, count, d);
- }
- /**
- * @hide
- */
- public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
- super.copy2DRangeFrom(xoff, yoff, w, h, d);
- }
- /**
- * @hide
- */
- public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
- super.copy2DRangeFrom(xoff, yoff, w, h, d);
- }
- /**
- * @hide
- */
- public void readData(int[] d) {
- super.copyTo(d);
- }
- /**
- * @hide
- */
- public void readData(float[] d) {
- super.copyTo(d);
- }
-
- void initLOD(int lod) {
- if (lod < 0) {
- throw new RSIllegalArgumentException("Attempting to set negative lod (" + lod + ").");
- }
-
- int tx = mAdaptedAllocation.mType.getX();
- int ty = mAdaptedAllocation.mType.getY();
- int tz = mAdaptedAllocation.mType.getZ();
-
- for (int ct=0; ct < lod; ct++) {
- if ((tx==1) && (ty == 1) && (tz == 1)) {
- throw new RSIllegalArgumentException("Attempting to set lod (" + lod + ") out of range.");
- }
-
- if (tx > 1) tx >>= 1;
- if (ty > 1) ty >>= 1;
- if (tz > 1) tz >>= 1;
- }
-
- mCurrentDimX = tx;
- mCurrentDimY = ty;
- mCurrentDimZ = tz;
- mCurrentCount = mCurrentDimX;
- if (mCurrentDimY > 1) {
- mCurrentCount *= mCurrentDimY;
- }
- if (mCurrentDimZ > 1) {
- mCurrentCount *= mCurrentDimZ;
- }
- mSelectedY = 0;
- mSelectedZ = 0;
- }
-
- /**
- * Set the active LOD. The LOD must be within the range for the
- * type being adapted. The base allocation must have mipmaps.
- *
- * Because this changes the dimensions of the adapter the
- * current Y and Z will be reset.
- *
- * @param lod The LOD to make active.
- */
- public void setLOD(int lod) {
- if (!mAdaptedAllocation.getType().hasMipmaps()) {
- throw new RSInvalidStateException("Cannot set LOD when the allocation type does not include mipmaps.");
- }
- if (!mConstrainedLOD) {
- throw new RSInvalidStateException("Cannot set LOD when the adapter includes mipmaps.");
- }
-
- initLOD(lod);
- }
-
- /**
- * Set the active Face. The base allocation must be of a type
- * that includes faces.
- *
- * @param cf The face to make active.
- */
- public void setFace(Type.CubemapFace cf) {
- if (!mAdaptedAllocation.getType().hasFaces()) {
- throw new RSInvalidStateException("Cannot set Face when the allocation type does not include faces.");
- }
- if (!mConstrainedFace) {
- throw new RSInvalidStateException("Cannot set LOD when the adapter includes mipmaps.");
- }
- if (cf == null) {
- throw new RSIllegalArgumentException("Cannot set null face.");
- }
-
- mSelectedFace = cf;
- }
-
- /**
- * Set the active Y. The y value must be within the range for
- * the allocation being adapted. The base allocation must
- * contain the Y dimension.
- *
- * @param y The y to make active.
- */
- public void setY(int y) {
- if (mAdaptedAllocation.getType().getY() == 0) {
- throw new RSInvalidStateException("Cannot set Y when the allocation type does not include Y dim.");
- }
- if (mAdaptedAllocation.getType().getY() <= y) {
- throw new RSInvalidStateException("Cannot set Y greater than dimension of allocation.");
- }
- if (!mConstrainedY) {
- throw new RSInvalidStateException("Cannot set Y when the adapter includes Y.");
- }
-
- mSelectedY = y;
- }
-
- /**
- * Set the active Z. The z value must be within the range for
- * the allocation being adapted. The base allocation must
- * contain the Z dimension.
- *
- * @param z The z to make active.
- */
- public void setZ(int z) {
- if (mAdaptedAllocation.getType().getZ() == 0) {
- throw new RSInvalidStateException("Cannot set Z when the allocation type does not include Z dim.");
- }
- if (mAdaptedAllocation.getType().getZ() <= z) {
- throw new RSInvalidStateException("Cannot set Z greater than dimension of allocation.");
- }
- if (!mConstrainedZ) {
- throw new RSInvalidStateException("Cannot set Z when the adapter includes Z.");
- }
-
- mSelectedZ = z;
- }
-
- static public AllocationAdapter create1D(RenderScript rs, Allocation a) {
- rs.validate();
- AllocationAdapter aa = new AllocationAdapter(0, rs, a);
- aa.mConstrainedLOD = true;
- aa.mConstrainedFace = true;
- aa.mConstrainedY = true;
- aa.mConstrainedZ = true;
- aa.initLOD(0);
- return aa;
- }
-
- static public AllocationAdapter create2D(RenderScript rs, Allocation a) {
- android.util.Log.e("rs", "create2d " + a);
- rs.validate();
- AllocationAdapter aa = new AllocationAdapter(0, rs, a);
- aa.mConstrainedLOD = true;
- aa.mConstrainedFace = true;
- aa.mConstrainedY = false;
- aa.mConstrainedZ = true;
- aa.initLOD(0);
- return aa;
- }
-
-
- /**
- * Override the Allocation resize. Resizing adapters is not
- * allowed and will throw a RSInvalidStateException.
- *
- * @param dimX ignored.
- */
- public synchronized void resize(int dimX) {
- throw new RSInvalidStateException("Resize not allowed for Adapters.");
- }
-
-}
-
-
diff --git a/graphics/java/android/renderscript/BaseObj.java b/graphics/java/android/renderscript/BaseObj.java
deleted file mode 100644
index 1a15ce6..0000000
--- a/graphics/java/android/renderscript/BaseObj.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * 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;
-
-/**
- * BaseObj is the base class for all RenderScript objects owned by a RS context.
- * It is responsible for lifetime management and resource tracking. This class
- * should not be used by a user application.
- *
- **/
-public class BaseObj {
- BaseObj(long id, RenderScript rs) {
- rs.validate();
- mRS = rs;
- mID = id;
- mDestroyed = false;
- }
-
- void setID(int id) {
- if (mID != 0) {
- throw new RSRuntimeException("Internal Error, reset of object ID.");
- }
- mID = id;
- }
-
- /**
- * Lookup the native object ID for this object. Primarily used by the
- * generated reflected code.
- *
- * @param rs Context to verify against internal context for
- * match.
- *
- * @return long
- */
- long getID(RenderScript rs) {
- mRS.validate();
- if (mDestroyed) {
- throw new RSInvalidStateException("using a destroyed object.");
- }
- if (mID == 0) {
- throw new RSRuntimeException("Internal error: Object id 0.");
- }
- if ((rs != null) && (rs != mRS)) {
- throw new RSInvalidStateException("using object with mismatched context.");
- }
- return mID;
- }
-
- void checkValid() {
- if (mID == 0) {
- throw new RSIllegalArgumentException("Invalid object.");
- }
- }
-
- private long mID;
- private boolean mDestroyed;
- private String mName;
- RenderScript mRS;
-
- /**
- * setName assigns a name to an object. This object can later be looked up
- * by this name.
- *
- * @param name The name to assign to the object.
- */
- public void setName(String name) {
- if (name == null) {
- throw new RSIllegalArgumentException(
- "setName requires a string of non-zero length.");
- }
- if(name.length() < 1) {
- throw new RSIllegalArgumentException(
- "setName does not accept a zero length string.");
- }
- if(mName != null) {
- throw new RSIllegalArgumentException(
- "setName object already has a name.");
- }
-
- try {
- byte[] bytes = name.getBytes("UTF-8");
- mRS.nAssignName(mID, bytes);
- mName = name;
- } catch (java.io.UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * @return name of the renderscript object
- */
- public String getName() {
- return mName;
- }
-
- protected void finalize() throws Throwable {
- if (!mDestroyed) {
- if(mID != 0 && mRS.isAlive()) {
- mRS.nObjDestroy(mID);
- }
- mRS = null;
- mID = 0;
- mDestroyed = true;
- //Log.v(RenderScript.LOG_TAG, getClass() +
- // " auto finalizing object without having released the RS reference.");
- }
- super.finalize();
- }
-
- /**
- * Frees any native resources associated with this object. The
- * primary use is to force immediate cleanup of resources when it is
- * believed the GC will not respond quickly enough.
- */
- synchronized public void destroy() {
- if(mDestroyed) {
- throw new RSInvalidStateException("Object already destroyed.");
- }
- mDestroyed = true;
- mRS.nObjDestroy(mID);
- }
-
- /**
- * If an object came from an a3d file, java fields need to be
- * created with objects from the native layer
- */
- void updateFromNative() {
- mRS.validate();
- mName = mRS.nGetName(getID(mRS));
- }
-
- /**
- * Calculates the hash code value for a BaseObj.
- *
- * @return int
- */
- @Override
- public int hashCode() {
- return (int)((mID & 0xfffffff) ^ (mID >> 32));
- }
-
- /**
- * Compare the current BaseObj with another BaseObj for equality.
- *
- * @param obj The object to check equality with.
- *
- * @return boolean
- */
- @Override
- public boolean equals(Object obj) {
- // Early-out check to see if both BaseObjs are actually the same
- if (this == obj)
- return true;
-
- if (getClass() != obj.getClass()) {
- return false;
- }
-
- BaseObj b = (BaseObj) obj;
- return mID == b.mID;
- }
-}
-
diff --git a/graphics/java/android/renderscript/Byte2.java b/graphics/java/android/renderscript/Byte2.java
deleted file mode 100644
index 3ad79e4..0000000
--- a/graphics/java/android/renderscript/Byte2.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (C) 2009 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;
-
-
-/**
- * Class for exposing the native RenderScript byte2 type back to the Android system.
- *
- **/
-public class Byte2 {
- public byte x;
- public byte y;
-
- public Byte2() {
- }
-
- public Byte2(byte initX, byte initY) {
- x = initX;
- y = initY;
- }
-
- /** @hide */
- public Byte2(Byte2 source) {
- this.x = source.x;
- this.y = source.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Byte2 a) {
- this.x += a.x;
- this.y += a.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 add(Byte2 a, Byte2 b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x + b.x);
- result.y = (byte)(a.y + b.y);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(byte value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 add(Byte2 a, byte b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x + b);
- result.y = (byte)(a.y + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Byte2 a) {
- this.x -= a.x;
- this.y -= a.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 sub(Byte2 a, Byte2 b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x - b.x);
- result.y = (byte)(a.y - b.y);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(byte value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 sub(Byte2 a, byte b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x - b);
- result.y = (byte)(a.y - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Byte2 a) {
- this.x *= a.x;
- this.y *= a.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 mul(Byte2 a, Byte2 b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x * b.x);
- result.y = (byte)(a.y * b.y);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(byte value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 mul(Byte2 a, byte b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x * b);
- result.y = (byte)(a.y * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Byte2 a) {
- this.x /= a.x;
- this.y /= a.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 div(Byte2 a, Byte2 b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x / b.x);
- result.y = (byte)(a.y / b.y);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(byte value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte2 div(Byte2 a, byte b) {
- Byte2 result = new Byte2();
- result.x = (byte)(a.x / b);
- result.y = (byte)(a.y / b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public byte length() {
- return 2;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (byte)(-x);
- this.y = (byte)(-y);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public byte dotProduct(Byte2 a) {
- return (byte)((x * a.x) + (y * a.y));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static byte dotProduct(Byte2 a, Byte2 b) {
- return (byte)((b.x * a.x) + (b.y * a.y));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Byte2 a, byte factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * set vector value by Byte2
- *
- * @param a
- */
- public void set(Byte2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * set the vector field value by Char
- *
- * @param a
- * @param b
- */
- public void setValues(byte a, byte b) {
- this.x = a;
- this.y = b;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public byte elementSum() {
- return (byte)(x + y);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public byte get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, byte value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, byte value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to Char array
- *
- * @param data
- * @param offset
- */
- public void copyTo(byte[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- }
-
-}
-
-
-
-
diff --git a/graphics/java/android/renderscript/Byte3.java b/graphics/java/android/renderscript/Byte3.java
deleted file mode 100644
index a138313..0000000
--- a/graphics/java/android/renderscript/Byte3.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * Copyright (C) 2009 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;
-
-
-/**
- * Class for exposing the native RenderScript byte3 type back to the Android system.
- *
- **/
-public class Byte3 {
- public byte x;
- public byte y;
- public byte z;
-
- public Byte3() {
- }
-
- public Byte3(byte initX, byte initY, byte initZ) {
- x = initX;
- y = initY;
- z = initZ;
- }
-
- /** @hide */
- public Byte3(Byte3 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Byte3 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 add(Byte3 a, Byte3 b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x + b.x);
- result.y = (byte)(a.y + b.y);
- result.z = (byte)(a.z + b.z);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(byte value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 add(Byte3 a, byte b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x + b);
- result.y = (byte)(a.y + b);
- result.z = (byte)(a.z + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Byte3 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 sub(Byte3 a, Byte3 b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x - b.x);
- result.y = (byte)(a.y - b.y);
- result.z = (byte)(a.z - b.z);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(byte value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 sub(Byte3 a, byte b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x - b);
- result.y = (byte)(a.y - b);
- result.z = (byte)(a.z - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Byte3 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 mul(Byte3 a, Byte3 b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x * b.x);
- result.y = (byte)(a.y * b.y);
- result.z = (byte)(a.z * b.z);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(byte value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 mul(Byte3 a, byte b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x * b);
- result.y = (byte)(a.y * b);
- result.z = (byte)(a.z * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Byte3 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 div(Byte3 a, Byte3 b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x / b.x);
- result.y = (byte)(a.y / b.y);
- result.z = (byte)(a.z / b.z);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(byte value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte3 div(Byte3 a, byte b) {
- Byte3 result = new Byte3();
- result.x = (byte)(a.x / b);
- result.y = (byte)(a.y / b);
- result.z = (byte)(a.z / b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public byte length() {
- return 3;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (byte)(-x);
- this.y = (byte)(-y);
- this.z = (byte)(-z);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public byte dotProduct(Byte3 a) {
- return (byte)((byte)((byte)(x * a.x) + (byte)(y * a.y)) + (byte)(z * a.z));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static byte dotProduct(Byte3 a, Byte3 b) {
- return (byte)((byte)((byte)(b.x * a.x) + (byte)(b.y * a.y)) + (byte)(b.z * a.z));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Byte3 a, byte factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * set vector value by Byte3
- *
- * @param a
- */
- public void set(Byte3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * set the vector field value by Char
- *
- * @param a
- * @param b
- * @param c
- */
- public void setValues(byte a, byte b, byte c) {
- this.x = a;
- this.y = b;
- this.z = c;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public byte elementSum() {
- return (byte)(x + y + z);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public byte get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, byte value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, byte value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to Char array
- *
- * @param data
- * @param offset
- */
- public void copyTo(byte[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- }
-}
-
-
-
-
diff --git a/graphics/java/android/renderscript/Byte4.java b/graphics/java/android/renderscript/Byte4.java
deleted file mode 100644
index fa4c13d..0000000
--- a/graphics/java/android/renderscript/Byte4.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * Copyright (C) 2009 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;
-
-
-/**
- * Class for exposing the native RenderScript byte4 type back to the Android system.
- *
- **/
-public class Byte4 {
- public byte x;
- public byte y;
- public byte z;
- public byte w;
-
- public Byte4() {
- }
-
- public Byte4(byte initX, byte initY, byte initZ, byte initW) {
- x = initX;
- y = initY;
- z = initZ;
- w = initW;
- }
- /** @hide */
- public Byte4(Byte4 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- this.w = source.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Byte4 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- this.w += a.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 add(Byte4 a, Byte4 b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x + b.x);
- result.y = (byte)(a.y + b.y);
- result.z = (byte)(a.z + b.z);
- result.w = (byte)(a.w + b.w);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(byte value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 add(Byte4 a, byte b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x + b);
- result.y = (byte)(a.y + b);
- result.z = (byte)(a.z + b);
- result.w = (byte)(a.w + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Byte4 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- this.w -= a.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 sub(Byte4 a, Byte4 b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x - b.x);
- result.y = (byte)(a.y - b.y);
- result.z = (byte)(a.z - b.z);
- result.w = (byte)(a.w - b.w);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(byte value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 sub(Byte4 a, byte b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x - b);
- result.y = (byte)(a.y - b);
- result.z = (byte)(a.z - b);
- result.w = (byte)(a.w - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Byte4 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- this.w *= a.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 mul(Byte4 a, Byte4 b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x * b.x);
- result.y = (byte)(a.y * b.y);
- result.z = (byte)(a.z * b.z);
- result.w = (byte)(a.w * b.w);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(byte value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 mul(Byte4 a, byte b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x * b);
- result.y = (byte)(a.y * b);
- result.z = (byte)(a.z * b);
- result.w = (byte)(a.w * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Byte4 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- this.w /= a.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 div(Byte4 a, Byte4 b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x / b.x);
- result.y = (byte)(a.y / b.y);
- result.z = (byte)(a.z / b.z);
- result.w = (byte)(a.w / b.w);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(byte value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Byte4 div(Byte4 a, byte b) {
- Byte4 result = new Byte4();
- result.x = (byte)(a.x / b);
- result.y = (byte)(a.y / b);
- result.z = (byte)(a.z / b);
- result.w = (byte)(a.w / b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public byte length() {
- return 4;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (byte)(-x);
- this.y = (byte)(-y);
- this.z = (byte)(-z);
- this.w = (byte)(-w);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public byte dotProduct(Byte4 a) {
- return (byte)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static byte dotProduct(Byte4 a, Byte4 b) {
- return (byte)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Byte4 a, byte factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * set vector value by Byte4
- *
- * @param a
- */
- public void set(Byte4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * set the vector field values
- *
- * @param a
- * @param b
- * @param c
- * @param d
- */
- public void setValues(byte a, byte b, byte c, byte d) {
- this.x = a;
- this.y = b;
- this.z = c;
- this.w = d;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public byte elementSum() {
- return (byte)(x + y + z + w);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public byte get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- case 3:
- return w;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, byte value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, byte value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to Char array
- *
- * @param data
- * @param offset
- */
- public void copyTo(byte[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- data[offset + 3] = w;
- }
-}
-
-
-
diff --git a/graphics/java/android/renderscript/Double2.java b/graphics/java/android/renderscript/Double2.java
deleted file mode 100644
index 4c7319d..0000000
--- a/graphics/java/android/renderscript/Double2.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic double type.
- * Provides two double fields packed.
- */
-public class Double2 {
- public double x;
- public double y;
-
- public Double2() {
- }
-
- /** @hide */
- public Double2(Double2 data) {
- this.x = data.x;
- this.y = data.y;
- }
-
- public Double2(double x, double y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 add(Double2 a, Double2 b) {
- Double2 res = new Double2();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Double2 value) {
- x += value.x;
- y += value.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(double value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 add(Double2 a, double b) {
- Double2 res = new Double2();
- res.x = a.x + b;
- res.y = a.y + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Double2 value) {
- x -= value.x;
- y -= value.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 sub(Double2 a, Double2 b) {
- Double2 res = new Double2();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(double value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 sub(Double2 a, double b) {
- Double2 res = new Double2();
- res.x = a.x - b;
- res.y = a.y - b;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Double2 value) {
- x *= value.x;
- y *= value.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 mul(Double2 a, Double2 b) {
- Double2 res = new Double2();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(double value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 mul(Double2 a, double b) {
- Double2 res = new Double2();
- res.x = a.x * b;
- res.y = a.y * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Double2 value) {
- x /= value.x;
- y /= value.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 div(Double2 a, Double2 b) {
- Double2 res = new Double2();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(double value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double2 div(Double2 a, double b) {
- Double2 res = new Double2();
- res.x = a.x / b;
- res.y = a.y / b;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public double dotProduct(Double2 a) {
- return (x * a.x) + (y * a.y);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static Double dotProduct(Double2 a, Double2 b) {
- return (b.x * a.x) + (b.y * a.y);
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Double2 a, double factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * Set vector value by double2
- *
- * @param a
- */
- public void set(Double2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * Set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- }
-
- /** @hide
- * Get vector length
- *
- * @return
- */
- public int length() {
- return 2;
- }
-
- /** @hide
- * Return the element sum of vector
- *
- * @return
- */
- public double elementSum() {
- return x + y;
- }
-
- /** @hide
- * Get the vector field value by index
- *
- * @param i
- * @return
- */
- public double get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, double value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, double value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value
- *
- * @param x
- * @param y
- */
- public void setValues(double x, double y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide
- * Copy the vector to double array
- *
- * @param data
- * @param offset
- */
- public void copyTo(double[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- }
-}
diff --git a/graphics/java/android/renderscript/Double3.java b/graphics/java/android/renderscript/Double3.java
deleted file mode 100644
index b819716..0000000
--- a/graphics/java/android/renderscript/Double3.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic double type.
- * Provides three double fields packed.
- */
-public class Double3 {
- public double x;
- public double y;
- public double z;
-
- public Double3() {
- }
- /** @hide */
- public Double3(Double3 data) {
- this.x = data.x;
- this.y = data.y;
- this.z = data.z;
- }
-
- public Double3(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 add(Double3 a, Double3 b) {
- Double3 res = new Double3();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
- res.z = a.z + b.z;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Double3 value) {
- x += value.x;
- y += value.y;
- z += value.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(double value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 add(Double3 a, double b) {
- Double3 res = new Double3();
- res.x = a.x + b;
- res.y = a.y + b;
- res.z = a.z + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Double3 value) {
- x -= value.x;
- y -= value.y;
- z -= value.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 sub(Double3 a, Double3 b) {
- Double3 res = new Double3();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
- res.z = a.z - b.z;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(double value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 sub(Double3 a, double b) {
- Double3 res = new Double3();
- res.x = a.x - b;
- res.y = a.y - b;
- res.z = a.z - b;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Double3 value) {
- x *= value.x;
- y *= value.y;
- z *= value.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 mul(Double3 a, Double3 b) {
- Double3 res = new Double3();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
- res.z = a.z * b.z;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(double value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 mul(Double3 a, double b) {
- Double3 res = new Double3();
- res.x = a.x * b;
- res.y = a.y * b;
- res.z = a.z * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Double3 value) {
- x /= value.x;
- y /= value.y;
- z /= value.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 div(Double3 a, Double3 b) {
- Double3 res = new Double3();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
- res.z = a.z / b.z;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(double value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double3 div(Double3 a, double b) {
- Double3 res = new Double3();
- res.x = a.x / b;
- res.y = a.y / b;
- res.z = a.z / b;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public double dotProduct(Double3 a) {
- return (x * a.x) + (y * a.y) + (z * a.z);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static double dotProduct(Double3 a, Double3 b) {
- return (b.x * a.x) + (b.y * a.y) + (b.z * a.z);
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Double3 a, double factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * Set vector value by double3
- *
- * @param a
- */
- public void set(Double3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * Set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- z = -z;
- }
-
- /** @hide
- * Get vector length
- *
- * @return
- */
- public int length() {
- return 3;
- }
-
- /** @hide
- * Return the element sum of vector
- *
- * @return
- */
- public double elementSum() {
- return x + y + z;
- }
-
- /** @hide
- * Get the vector field value by index
- *
- * @param i
- * @return
- */
- public double get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, double value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, double value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value
- *
- * @param x
- * @param y
- * @param z
- */
- public void setValues(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide
- * Copy the vector to double array
- *
- * @param data
- * @param offset
- */
- public void copyTo(double[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- }
-}
diff --git a/graphics/java/android/renderscript/Double4.java b/graphics/java/android/renderscript/Double4.java
deleted file mode 100644
index e4829f7..0000000
--- a/graphics/java/android/renderscript/Double4.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic double type.
- * Provides four double fields packed.
- */
-public class Double4 {
- public double x;
- public double y;
- public double z;
- public double w;
-
- public Double4() {
- }
- /** @hide */
- public Double4(Double4 data) {
- this.x = data.x;
- this.y = data.y;
- this.z = data.z;
- this.w = data.w;
- }
-
- public Double4(double x, double y, double z, double w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 add(Double4 a, Double4 b) {
- Double4 res = new Double4();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
- res.z = a.z + b.z;
- res.w = a.w + b.w;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Double4 value) {
- x += value.x;
- y += value.y;
- z += value.z;
- w += value.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(double value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 add(Double4 a, double b) {
- Double4 res = new Double4();
- res.x = a.x + b;
- res.y = a.y + b;
- res.z = a.z + b;
- res.w = a.w + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Double4 value) {
- x -= value.x;
- y -= value.y;
- z -= value.z;
- w -= value.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(double value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 sub(Double4 a, double b) {
- Double4 res = new Double4();
- res.x = a.x - b;
- res.y = a.y - b;
- res.z = a.z - b;
- res.w = a.w - b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 sub(Double4 a, Double4 b) {
- Double4 res = new Double4();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
- res.z = a.z - b.z;
- res.w = a.w - b.w;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Double4 value) {
- x *= value.x;
- y *= value.y;
- z *= value.z;
- w *= value.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(double value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 mul(Double4 a, Double4 b) {
- Double4 res = new Double4();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
- res.z = a.z * b.z;
- res.w = a.w * b.w;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 mul(Double4 a, double b) {
- Double4 res = new Double4();
- res.x = a.x * b;
- res.y = a.y * b;
- res.z = a.z * b;
- res.w = a.w * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Double4 value) {
- x /= value.x;
- y /= value.y;
- z /= value.z;
- w /= value.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(double value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 div(Double4 a, double b) {
- Double4 res = new Double4();
- res.x = a.x / b;
- res.y = a.y / b;
- res.z = a.z / b;
- res.w = a.w / b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Double4 div(Double4 a, Double4 b) {
- Double4 res = new Double4();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
- res.z = a.z / b.z;
- res.w = a.w / b.w;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public double dotProduct(Double4 a) {
- return (x * a.x) + (y * a.y) + (z * a.z) + (w * a.w);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static double dotProduct(Double4 a, Double4 b) {
- return (b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w);
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Double4 a, double factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * Set vector value by double4
- *
- * @param a
- */
- public void set(Double4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * Set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- z = -z;
- w = -w;
- }
-
- /** @hide
- * Get vector length
- *
- * @return
- */
- public int length() {
- return 4;
- }
-
- /** @hide
- * Return the element sum of vector
- *
- * @return
- */
- public double elementSum() {
- return x + y + z + w;
- }
-
- /** @hide
- * Get the vector field value by index
- *
- * @param i
- * @return
- */
- public double get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- case 3:
- return w;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, double value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, double value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * Set the vector field value
- *
- * @param x
- * @param y
- * @param z
- * @param w
- */
- public void setValues(double x, double y, double z, double w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide
- * Copy the vector to double array
- *
- * @param data
- * @param offset
- */
- public void copyTo(double[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- data[offset + 3] = w;
- }
-}
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
deleted file mode 100644
index 93e839e..0000000
--- a/graphics/java/android/renderscript/Element.java
+++ /dev/null
@@ -1,1100 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * <p>An Element represents one item within an {@link
- * android.renderscript.Allocation}. An Element is roughly equivalent to a C
- * type in a RenderScript kernel. Elements may be basic or complex. Some basic
- * elements are</p> <ul> <li>A single float value (equivalent to a float in a
- * kernel)</li> <li>A four-element float vector (equivalent to a float4 in a
- * kernel)</li> <li>An unsigned 32-bit integer (equivalent to an unsigned int in
- * a kernel)</li> <li>A single signed 8-bit integer (equivalent to a char in a
- * kernel)</li> </ul> <p>A complex element is roughly equivalent to a C struct
- * and contains a number of basic or complex Elements. From Java code, a complex
- * element contains a list of sub-elements and names that represents a
- * particular data structure. Structs used in RS scripts are available to Java
- * code by using the {@code ScriptField_structname} class that is reflected from
- * a particular script.</p>
- *
- * <p>Basic Elements are comprised of a {@link
- * android.renderscript.Element.DataType} and a {@link
- * android.renderscript.Element.DataKind}. The DataType encodes C type
- * information of an Element, while the DataKind encodes how that Element should
- * be interpreted by a {@link android.renderscript.Sampler}. Note that {@link
- * android.renderscript.Allocation} objects with DataKind {@link
- * android.renderscript.Element.DataKind#USER} cannot be used as input for a
- * {@link android.renderscript.Sampler}. In general, {@link
- * android.renderscript.Allocation} objects that are intended for use with a
- * {@link android.renderscript.Sampler} should use bitmap-derived Elements such
- * as {@link android.renderscript.Element#RGBA_8888} or {@link
- * android.renderscript#Element.A_8}.</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class Element extends BaseObj {
- int mSize;
- Element[] mElements;
- String[] mElementNames;
- int[] mArraySizes;
- int[] mOffsetInBytes;
-
- int[] mVisibleElementMap;
-
- DataType mType;
- DataKind mKind;
- boolean mNormalized;
- int mVectorSize;
-
- private void updateVisibleSubElements() {
- if (mElements == null) {
- return;
- }
-
- int noPaddingFieldCount = 0;
- int fieldCount = mElementNames.length;
- // Find out how many elements are not padding
- for (int ct = 0; ct < fieldCount; ct ++) {
- if (mElementNames[ct].charAt(0) != '#') {
- noPaddingFieldCount ++;
- }
- }
- mVisibleElementMap = new int[noPaddingFieldCount];
-
- // Make a map that points us at non-padding elements
- for (int ct = 0, ctNoPadding = 0; ct < fieldCount; ct ++) {
- if (mElementNames[ct].charAt(0) != '#') {
- mVisibleElementMap[ctNoPadding ++] = ct;
- }
- }
- }
-
- /**
- * @return element size in bytes
- */
- public int getBytesSize() {return mSize;}
-
- /**
- * Returns the number of vector components. 2 for float2, 4 for
- * float4, etc.
- * @return element vector size
- */
- public int getVectorSize() {return mVectorSize;}
-
-
- /**
- * DataType represents the basic type information for a basic element. The
- * naming convention follows. For numeric types it is FLOAT,
- * SIGNED, or UNSIGNED followed by the _BITS where BITS is the
- * size of the data. BOOLEAN is a true / false (1,0)
- * represented in an 8 bit container. The UNSIGNED variants
- * with multiple bit definitions are for packed graphical data
- * formats and represent vectors with per vector member sizes
- * which are treated as a single unit for packing and alignment
- * purposes.
- *
- * MATRIX the three matrix types contain FLOAT_32 elements and are treated
- * as 32 bits for alignment purposes.
- *
- * RS_* objects. 32 bit opaque handles.
- */
- public enum DataType {
- NONE (0, 0),
- //FLOAT_16 (1, 2),
- FLOAT_32 (2, 4),
- FLOAT_64 (3, 8),
- SIGNED_8 (4, 1),
- SIGNED_16 (5, 2),
- SIGNED_32 (6, 4),
- SIGNED_64 (7, 8),
- UNSIGNED_8 (8, 1),
- UNSIGNED_16 (9, 2),
- UNSIGNED_32 (10, 4),
- UNSIGNED_64 (11, 8),
-
- BOOLEAN(12, 1),
-
- UNSIGNED_5_6_5 (13, 2),
- UNSIGNED_5_5_5_1 (14, 2),
- UNSIGNED_4_4_4_4 (15, 2),
-
- MATRIX_4X4 (16, 64),
- MATRIX_3X3 (17, 36),
- MATRIX_2X2 (18, 16),
-
- RS_ELEMENT (1000, 4),
- RS_TYPE (1001, 4),
- RS_ALLOCATION (1002, 4),
- RS_SAMPLER (1003, 4),
- RS_SCRIPT (1004, 4),
- RS_MESH (1005, 4),
- RS_PROGRAM_FRAGMENT (1006, 4),
- RS_PROGRAM_VERTEX (1007, 4),
- RS_PROGRAM_RASTER (1008, 4),
- RS_PROGRAM_STORE (1009, 4),
- RS_FONT (1010, 4);
-
- int mID;
- int mSize;
- DataType(int id, int size) {
- mID = id;
- mSize = size;
- }
- }
-
- /**
- * The special interpretation of the data if required. This is primarly
- * useful for graphical data. USER indicates no special interpretation is
- * expected. PIXEL is used in conjunction with the standard data types for
- * representing texture formats.
- */
- public enum DataKind {
- USER (0),
-
- PIXEL_L (7),
- PIXEL_A (8),
- PIXEL_LA (9),
- PIXEL_RGB (10),
- PIXEL_RGBA (11),
- PIXEL_DEPTH (12),
- PIXEL_YUV(13);
-
- int mID;
- DataKind(int id) {
- mID = id;
- }
- }
-
- /**
- * Return if a element is too complex for use as a data source for a Mesh or
- * a Program.
- *
- * @return boolean
- */
- public boolean isComplex() {
- if (mElements == null) {
- return false;
- }
- for (int ct=0; ct < mElements.length; ct++) {
- if (mElements[ct].mElements != null) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Elements could be simple, such as an int or a float, or a
- * structure with multiple sub elements, such as a collection of
- * floats, float2, float4. This function returns zero for simple
- * elements or the number of sub-elements otherwise.
- * @return number of sub-elements in this element
- */
- public int getSubElementCount() {
- if (mVisibleElementMap == null) {
- return 0;
- }
- return mVisibleElementMap.length;
- }
-
- /**
- * For complex elements, this function will return the
- * sub-element at index
- * @param index index of the sub-element to return
- * @return sub-element in this element at given index
- */
- public Element getSubElement(int index) {
- if (mVisibleElementMap == null) {
- throw new RSIllegalArgumentException("Element contains no sub-elements");
- }
- if (index < 0 || index >= mVisibleElementMap.length) {
- throw new RSIllegalArgumentException("Illegal sub-element index");
- }
- return mElements[mVisibleElementMap[index]];
- }
-
- /**
- * For complex elements, this function will return the
- * sub-element name at index
- * @param index index of the sub-element
- * @return sub-element in this element at given index
- */
- public String getSubElementName(int index) {
- if (mVisibleElementMap == null) {
- throw new RSIllegalArgumentException("Element contains no sub-elements");
- }
- if (index < 0 || index >= mVisibleElementMap.length) {
- throw new RSIllegalArgumentException("Illegal sub-element index");
- }
- return mElementNames[mVisibleElementMap[index]];
- }
-
- /**
- * For complex elements, some sub-elements could be statically
- * sized arrays. This function will return the array size for
- * sub-element at index
- * @param index index of the sub-element
- * @return array size of sub-element in this element at given index
- */
- public int getSubElementArraySize(int index) {
- if (mVisibleElementMap == null) {
- throw new RSIllegalArgumentException("Element contains no sub-elements");
- }
- if (index < 0 || index >= mVisibleElementMap.length) {
- throw new RSIllegalArgumentException("Illegal sub-element index");
- }
- return mArraySizes[mVisibleElementMap[index]];
- }
-
- /**
- * This function specifies the location of a sub-element within
- * the element
- * @param index index of the sub-element
- * @return offset in bytes of sub-element in this element at given index
- */
- public int getSubElementOffsetBytes(int index) {
- if (mVisibleElementMap == null) {
- throw new RSIllegalArgumentException("Element contains no sub-elements");
- }
- if (index < 0 || index >= mVisibleElementMap.length) {
- throw new RSIllegalArgumentException("Illegal sub-element index");
- }
- return mOffsetInBytes[mVisibleElementMap[index]];
- }
-
- /**
- * @return element data type
- */
- public DataType getDataType() {
- return mType;
- }
-
- /**
- * @return element data kind
- */
- public DataKind getDataKind() {
- return mKind;
- }
-
- /**
- * Utility function for returning an Element containing a single Boolean.
- *
- * @param rs Context to which the element will belong.
- *
- * @return Element
- */
- public static Element BOOLEAN(RenderScript rs) {
- if(rs.mElement_BOOLEAN == null) {
- rs.mElement_BOOLEAN = createUser(rs, DataType.BOOLEAN);
- }
- return rs.mElement_BOOLEAN;
- }
-
- /**
- * Utility function for returning an Element containing a single UNSIGNED_8.
- *
- * @param rs Context to which the element will belong.
- *
- * @return Element
- */
- public static Element U8(RenderScript rs) {
- if(rs.mElement_U8 == null) {
- rs.mElement_U8 = createUser(rs, DataType.UNSIGNED_8);
- }
- return rs.mElement_U8;
- }
-
- /**
- * Utility function for returning an Element containing a single SIGNED_8.
- *
- * @param rs Context to which the element will belong.
- *
- * @return Element
- */
- public static Element I8(RenderScript rs) {
- if(rs.mElement_I8 == null) {
- rs.mElement_I8 = createUser(rs, DataType.SIGNED_8);
- }
- return rs.mElement_I8;
- }
-
- public static Element U16(RenderScript rs) {
- if(rs.mElement_U16 == null) {
- rs.mElement_U16 = createUser(rs, DataType.UNSIGNED_16);
- }
- return rs.mElement_U16;
- }
-
- public static Element I16(RenderScript rs) {
- if(rs.mElement_I16 == null) {
- rs.mElement_I16 = createUser(rs, DataType.SIGNED_16);
- }
- return rs.mElement_I16;
- }
-
- public static Element U32(RenderScript rs) {
- if(rs.mElement_U32 == null) {
- rs.mElement_U32 = createUser(rs, DataType.UNSIGNED_32);
- }
- return rs.mElement_U32;
- }
-
- public static Element I32(RenderScript rs) {
- if(rs.mElement_I32 == null) {
- rs.mElement_I32 = createUser(rs, DataType.SIGNED_32);
- }
- return rs.mElement_I32;
- }
-
- public static Element U64(RenderScript rs) {
- if(rs.mElement_U64 == null) {
- rs.mElement_U64 = createUser(rs, DataType.UNSIGNED_64);
- }
- return rs.mElement_U64;
- }
-
- public static Element I64(RenderScript rs) {
- if(rs.mElement_I64 == null) {
- rs.mElement_I64 = createUser(rs, DataType.SIGNED_64);
- }
- return rs.mElement_I64;
- }
-
- public static Element F32(RenderScript rs) {
- if(rs.mElement_F32 == null) {
- rs.mElement_F32 = createUser(rs, DataType.FLOAT_32);
- }
- return rs.mElement_F32;
- }
-
- public static Element F64(RenderScript rs) {
- if(rs.mElement_F64 == null) {
- rs.mElement_F64 = createUser(rs, DataType.FLOAT_64);
- }
- return rs.mElement_F64;
- }
-
- public static Element ELEMENT(RenderScript rs) {
- if(rs.mElement_ELEMENT == null) {
- rs.mElement_ELEMENT = createUser(rs, DataType.RS_ELEMENT);
- }
- return rs.mElement_ELEMENT;
- }
-
- public static Element TYPE(RenderScript rs) {
- if(rs.mElement_TYPE == null) {
- rs.mElement_TYPE = createUser(rs, DataType.RS_TYPE);
- }
- return rs.mElement_TYPE;
- }
-
- public static Element ALLOCATION(RenderScript rs) {
- if(rs.mElement_ALLOCATION == null) {
- rs.mElement_ALLOCATION = createUser(rs, DataType.RS_ALLOCATION);
- }
- return rs.mElement_ALLOCATION;
- }
-
- public static Element SAMPLER(RenderScript rs) {
- if(rs.mElement_SAMPLER == null) {
- rs.mElement_SAMPLER = createUser(rs, DataType.RS_SAMPLER);
- }
- return rs.mElement_SAMPLER;
- }
-
- public static Element SCRIPT(RenderScript rs) {
- if(rs.mElement_SCRIPT == null) {
- rs.mElement_SCRIPT = createUser(rs, DataType.RS_SCRIPT);
- }
- return rs.mElement_SCRIPT;
- }
-
- public static Element MESH(RenderScript rs) {
- if(rs.mElement_MESH == null) {
- rs.mElement_MESH = createUser(rs, DataType.RS_MESH);
- }
- return rs.mElement_MESH;
- }
-
- public static Element PROGRAM_FRAGMENT(RenderScript rs) {
- if(rs.mElement_PROGRAM_FRAGMENT == null) {
- rs.mElement_PROGRAM_FRAGMENT = createUser(rs, DataType.RS_PROGRAM_FRAGMENT);
- }
- return rs.mElement_PROGRAM_FRAGMENT;
- }
-
- public static Element PROGRAM_VERTEX(RenderScript rs) {
- if(rs.mElement_PROGRAM_VERTEX == null) {
- rs.mElement_PROGRAM_VERTEX = createUser(rs, DataType.RS_PROGRAM_VERTEX);
- }
- return rs.mElement_PROGRAM_VERTEX;
- }
-
- public static Element PROGRAM_RASTER(RenderScript rs) {
- if(rs.mElement_PROGRAM_RASTER == null) {
- rs.mElement_PROGRAM_RASTER = createUser(rs, DataType.RS_PROGRAM_RASTER);
- }
- return rs.mElement_PROGRAM_RASTER;
- }
-
- public static Element PROGRAM_STORE(RenderScript rs) {
- if(rs.mElement_PROGRAM_STORE == null) {
- rs.mElement_PROGRAM_STORE = createUser(rs, DataType.RS_PROGRAM_STORE);
- }
- return rs.mElement_PROGRAM_STORE;
- }
-
- public static Element FONT(RenderScript rs) {
- if(rs.mElement_FONT == null) {
- rs.mElement_FONT = createUser(rs, DataType.RS_FONT);
- }
- return rs.mElement_FONT;
- }
-
-
- public static Element A_8(RenderScript rs) {
- if(rs.mElement_A_8 == null) {
- rs.mElement_A_8 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_A);
- }
- return rs.mElement_A_8;
- }
-
- public static Element RGB_565(RenderScript rs) {
- if(rs.mElement_RGB_565 == null) {
- rs.mElement_RGB_565 = createPixel(rs, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
- }
- return rs.mElement_RGB_565;
- }
-
- public static Element RGB_888(RenderScript rs) {
- if(rs.mElement_RGB_888 == null) {
- rs.mElement_RGB_888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
- }
- return rs.mElement_RGB_888;
- }
-
- public static Element RGBA_5551(RenderScript rs) {
- if(rs.mElement_RGBA_5551 == null) {
- rs.mElement_RGBA_5551 = createPixel(rs, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
- }
- return rs.mElement_RGBA_5551;
- }
-
- public static Element RGBA_4444(RenderScript rs) {
- if(rs.mElement_RGBA_4444 == null) {
- rs.mElement_RGBA_4444 = createPixel(rs, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
- }
- return rs.mElement_RGBA_4444;
- }
-
- public static Element RGBA_8888(RenderScript rs) {
- if(rs.mElement_RGBA_8888 == null) {
- rs.mElement_RGBA_8888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
- }
- return rs.mElement_RGBA_8888;
- }
-
- public static Element F32_2(RenderScript rs) {
- if(rs.mElement_FLOAT_2 == null) {
- rs.mElement_FLOAT_2 = createVector(rs, DataType.FLOAT_32, 2);
- }
- return rs.mElement_FLOAT_2;
- }
-
- public static Element F32_3(RenderScript rs) {
- if(rs.mElement_FLOAT_3 == null) {
- rs.mElement_FLOAT_3 = createVector(rs, DataType.FLOAT_32, 3);
- }
- return rs.mElement_FLOAT_3;
- }
-
- public static Element F32_4(RenderScript rs) {
- if(rs.mElement_FLOAT_4 == null) {
- rs.mElement_FLOAT_4 = createVector(rs, DataType.FLOAT_32, 4);
- }
- return rs.mElement_FLOAT_4;
- }
-
- public static Element F64_2(RenderScript rs) {
- if(rs.mElement_DOUBLE_2 == null) {
- rs.mElement_DOUBLE_2 = createVector(rs, DataType.FLOAT_64, 2);
- }
- return rs.mElement_DOUBLE_2;
- }
-
- public static Element F64_3(RenderScript rs) {
- if(rs.mElement_DOUBLE_3 == null) {
- rs.mElement_DOUBLE_3 = createVector(rs, DataType.FLOAT_64, 3);
- }
- return rs.mElement_DOUBLE_3;
- }
-
- public static Element F64_4(RenderScript rs) {
- if(rs.mElement_DOUBLE_4 == null) {
- rs.mElement_DOUBLE_4 = createVector(rs, DataType.FLOAT_64, 4);
- }
- return rs.mElement_DOUBLE_4;
- }
-
- public static Element U8_2(RenderScript rs) {
- if(rs.mElement_UCHAR_2 == null) {
- rs.mElement_UCHAR_2 = createVector(rs, DataType.UNSIGNED_8, 2);
- }
- return rs.mElement_UCHAR_2;
- }
-
- public static Element U8_3(RenderScript rs) {
- if(rs.mElement_UCHAR_3 == null) {
- rs.mElement_UCHAR_3 = createVector(rs, DataType.UNSIGNED_8, 3);
- }
- return rs.mElement_UCHAR_3;
- }
-
- public static Element U8_4(RenderScript rs) {
- if(rs.mElement_UCHAR_4 == null) {
- rs.mElement_UCHAR_4 = createVector(rs, DataType.UNSIGNED_8, 4);
- }
- return rs.mElement_UCHAR_4;
- }
-
- public static Element I8_2(RenderScript rs) {
- if(rs.mElement_CHAR_2 == null) {
- rs.mElement_CHAR_2 = createVector(rs, DataType.SIGNED_8, 2);
- }
- return rs.mElement_CHAR_2;
- }
-
- public static Element I8_3(RenderScript rs) {
- if(rs.mElement_CHAR_3 == null) {
- rs.mElement_CHAR_3 = createVector(rs, DataType.SIGNED_8, 3);
- }
- return rs.mElement_CHAR_3;
- }
-
- public static Element I8_4(RenderScript rs) {
- if(rs.mElement_CHAR_4 == null) {
- rs.mElement_CHAR_4 = createVector(rs, DataType.SIGNED_8, 4);
- }
- return rs.mElement_CHAR_4;
- }
-
- public static Element U16_2(RenderScript rs) {
- if(rs.mElement_USHORT_2 == null) {
- rs.mElement_USHORT_2 = createVector(rs, DataType.UNSIGNED_16, 2);
- }
- return rs.mElement_USHORT_2;
- }
-
- public static Element U16_3(RenderScript rs) {
- if(rs.mElement_USHORT_3 == null) {
- rs.mElement_USHORT_3 = createVector(rs, DataType.UNSIGNED_16, 3);
- }
- return rs.mElement_USHORT_3;
- }
-
- public static Element U16_4(RenderScript rs) {
- if(rs.mElement_USHORT_4 == null) {
- rs.mElement_USHORT_4 = createVector(rs, DataType.UNSIGNED_16, 4);
- }
- return rs.mElement_USHORT_4;
- }
-
- public static Element I16_2(RenderScript rs) {
- if(rs.mElement_SHORT_2 == null) {
- rs.mElement_SHORT_2 = createVector(rs, DataType.SIGNED_16, 2);
- }
- return rs.mElement_SHORT_2;
- }
-
- public static Element I16_3(RenderScript rs) {
- if(rs.mElement_SHORT_3 == null) {
- rs.mElement_SHORT_3 = createVector(rs, DataType.SIGNED_16, 3);
- }
- return rs.mElement_SHORT_3;
- }
-
- public static Element I16_4(RenderScript rs) {
- if(rs.mElement_SHORT_4 == null) {
- rs.mElement_SHORT_4 = createVector(rs, DataType.SIGNED_16, 4);
- }
- return rs.mElement_SHORT_4;
- }
-
- public static Element U32_2(RenderScript rs) {
- if(rs.mElement_UINT_2 == null) {
- rs.mElement_UINT_2 = createVector(rs, DataType.UNSIGNED_32, 2);
- }
- return rs.mElement_UINT_2;
- }
-
- public static Element U32_3(RenderScript rs) {
- if(rs.mElement_UINT_3 == null) {
- rs.mElement_UINT_3 = createVector(rs, DataType.UNSIGNED_32, 3);
- }
- return rs.mElement_UINT_3;
- }
-
- public static Element U32_4(RenderScript rs) {
- if(rs.mElement_UINT_4 == null) {
- rs.mElement_UINT_4 = createVector(rs, DataType.UNSIGNED_32, 4);
- }
- return rs.mElement_UINT_4;
- }
-
- public static Element I32_2(RenderScript rs) {
- if(rs.mElement_INT_2 == null) {
- rs.mElement_INT_2 = createVector(rs, DataType.SIGNED_32, 2);
- }
- return rs.mElement_INT_2;
- }
-
- public static Element I32_3(RenderScript rs) {
- if(rs.mElement_INT_3 == null) {
- rs.mElement_INT_3 = createVector(rs, DataType.SIGNED_32, 3);
- }
- return rs.mElement_INT_3;
- }
-
- public static Element I32_4(RenderScript rs) {
- if(rs.mElement_INT_4 == null) {
- rs.mElement_INT_4 = createVector(rs, DataType.SIGNED_32, 4);
- }
- return rs.mElement_INT_4;
- }
-
- public static Element U64_2(RenderScript rs) {
- if(rs.mElement_ULONG_2 == null) {
- rs.mElement_ULONG_2 = createVector(rs, DataType.UNSIGNED_64, 2);
- }
- return rs.mElement_ULONG_2;
- }
-
- public static Element U64_3(RenderScript rs) {
- if(rs.mElement_ULONG_3 == null) {
- rs.mElement_ULONG_3 = createVector(rs, DataType.UNSIGNED_64, 3);
- }
- return rs.mElement_ULONG_3;
- }
-
- public static Element U64_4(RenderScript rs) {
- if(rs.mElement_ULONG_4 == null) {
- rs.mElement_ULONG_4 = createVector(rs, DataType.UNSIGNED_64, 4);
- }
- return rs.mElement_ULONG_4;
- }
-
- public static Element I64_2(RenderScript rs) {
- if(rs.mElement_LONG_2 == null) {
- rs.mElement_LONG_2 = createVector(rs, DataType.SIGNED_64, 2);
- }
- return rs.mElement_LONG_2;
- }
-
- public static Element I64_3(RenderScript rs) {
- if(rs.mElement_LONG_3 == null) {
- rs.mElement_LONG_3 = createVector(rs, DataType.SIGNED_64, 3);
- }
- return rs.mElement_LONG_3;
- }
-
- public static Element I64_4(RenderScript rs) {
- if(rs.mElement_LONG_4 == null) {
- rs.mElement_LONG_4 = createVector(rs, DataType.SIGNED_64, 4);
- }
- return rs.mElement_LONG_4;
- }
-
- public static Element YUV(RenderScript rs) {
- if (rs.mElement_YUV == null) {
- rs.mElement_YUV = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_YUV);
- }
- return rs.mElement_YUV;
- }
-
- public static Element MATRIX_4X4(RenderScript rs) {
- if(rs.mElement_MATRIX_4X4 == null) {
- rs.mElement_MATRIX_4X4 = createUser(rs, DataType.MATRIX_4X4);
- }
- return rs.mElement_MATRIX_4X4;
- }
-
- /** @deprecated use MATRIX_4X4
- */
- public static Element MATRIX4X4(RenderScript rs) {
- return MATRIX_4X4(rs);
- }
-
- public static Element MATRIX_3X3(RenderScript rs) {
- if(rs.mElement_MATRIX_3X3 == null) {
- rs.mElement_MATRIX_3X3 = createUser(rs, DataType.MATRIX_3X3);
- }
- return rs.mElement_MATRIX_3X3;
- }
-
- public static Element MATRIX_2X2(RenderScript rs) {
- if(rs.mElement_MATRIX_2X2 == null) {
- rs.mElement_MATRIX_2X2 = createUser(rs, DataType.MATRIX_2X2);
- }
- return rs.mElement_MATRIX_2X2;
- }
-
- Element(long id, RenderScript rs, Element[] e, String[] n, int[] as) {
- super(id, rs);
- mSize = 0;
- mVectorSize = 1;
- mElements = e;
- mElementNames = n;
- mArraySizes = as;
- mType = DataType.NONE;
- mKind = DataKind.USER;
- mOffsetInBytes = new int[mElements.length];
- for (int ct = 0; ct < mElements.length; ct++ ) {
- mOffsetInBytes[ct] = mSize;
- mSize += mElements[ct].mSize * mArraySizes[ct];
- }
- updateVisibleSubElements();
- }
-
- Element(long id, RenderScript rs, DataType dt, DataKind dk, boolean norm, int size) {
- super(id, rs);
- if ((dt != DataType.UNSIGNED_5_6_5) &&
- (dt != DataType.UNSIGNED_4_4_4_4) &&
- (dt != DataType.UNSIGNED_5_5_5_1)) {
- if (size == 3) {
- mSize = dt.mSize * 4;
- } else {
- mSize = dt.mSize * size;
- }
- } else {
- mSize = dt.mSize;
- }
- mType = dt;
- mKind = dk;
- mNormalized = norm;
- mVectorSize = size;
- }
-
- Element(long id, RenderScript rs) {
- super(id, rs);
- }
-
- @Override
- void updateFromNative() {
- super.updateFromNative();
-
- // FIXME: updateFromNative is broken in JNI for 64-bit
-
- // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements
- int[] dataBuffer = new int[5];
- mRS.nElementGetNativeData(getID(mRS), dataBuffer);
-
- mNormalized = dataBuffer[2] == 1 ? true : false;
- mVectorSize = dataBuffer[3];
- mSize = 0;
- for (DataType dt: DataType.values()) {
- if(dt.mID == dataBuffer[0]){
- mType = dt;
- mSize = mType.mSize * mVectorSize;
- }
- }
- for (DataKind dk: DataKind.values()) {
- if(dk.mID == dataBuffer[1]){
- mKind = dk;
- }
- }
-
- int numSubElements = dataBuffer[4];
- if(numSubElements > 0) {
- mElements = new Element[numSubElements];
- mElementNames = new String[numSubElements];
- mArraySizes = new int[numSubElements];
- mOffsetInBytes = new int[numSubElements];
-
- int[] subElementIds = new int[numSubElements];
- mRS.nElementGetSubElements(getID(mRS), subElementIds, mElementNames, mArraySizes);
- for(int i = 0; i < numSubElements; i ++) {
- mElements[i] = new Element(subElementIds[i], mRS);
- mElements[i].updateFromNative();
- mOffsetInBytes[i] = mSize;
- mSize += mElements[i].mSize * mArraySizes[i];
- }
- }
- updateVisibleSubElements();
- }
-
- /**
- * Create a custom Element of the specified DataType. The DataKind will be
- * set to USER and the vector size to 1 indicating non-vector.
- *
- * @param rs The context associated with the new Element.
- * @param dt The DataType for the new element.
- * @return Element
- */
- static Element createUser(RenderScript rs, DataType dt) {
- DataKind dk = DataKind.USER;
- boolean norm = false;
- int vecSize = 1;
- long id = rs.nElementCreate(dt.mID, dk.mID, norm, vecSize);
- return new Element(id, rs, dt, dk, norm, vecSize);
- }
-
- /**
- * Create a custom vector element of the specified DataType and vector size.
- * DataKind will be set to USER. Only primitive types (FLOAT_32, FLOAT_64,
- * SIGNED_8, SIGNED_16, SIGNED_32, SIGNED_64, UNSIGNED_8, UNSIGNED_16,
- * UNSIGNED_32, UNSIGNED_64, BOOLEAN) are supported.
- *
- * @param rs The context associated with the new Element.
- * @param dt The DataType for the new Element.
- * @param size Vector size for the new Element. Range 2-4 inclusive
- * supported.
- *
- * @return Element
- */
- public static Element createVector(RenderScript rs, DataType dt, int size) {
- if (size < 2 || size > 4) {
- throw new RSIllegalArgumentException("Vector size out of range 2-4.");
- }
-
- switch (dt) {
- // Support only primitive integer/float/boolean types as vectors.
- case FLOAT_32:
- case FLOAT_64:
- case SIGNED_8:
- case SIGNED_16:
- case SIGNED_32:
- case SIGNED_64:
- case UNSIGNED_8:
- case UNSIGNED_16:
- case UNSIGNED_32:
- case UNSIGNED_64:
- case BOOLEAN: {
- DataKind dk = DataKind.USER;
- boolean norm = false;
- long id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
- return new Element(id, rs, dt, dk, norm, size);
- }
-
- default: {
- throw new RSIllegalArgumentException("Cannot create vector of " +
- "non-primitive type.");
- }
- }
- }
-
- /**
- * Create a new pixel Element type. A matching DataType and DataKind must
- * be provided. The DataType and DataKind must contain the same number of
- * components. Vector size will be set to 1.
- *
- * @param rs The context associated with the new Element.
- * @param dt The DataType for the new element.
- * @param dk The DataKind to specify the mapping of each component in the
- * DataType.
- *
- * @return Element
- */
- public static Element createPixel(RenderScript rs, DataType dt, DataKind dk) {
- if (!(dk == DataKind.PIXEL_L ||
- dk == DataKind.PIXEL_A ||
- dk == DataKind.PIXEL_LA ||
- dk == DataKind.PIXEL_RGB ||
- dk == DataKind.PIXEL_RGBA ||
- dk == DataKind.PIXEL_DEPTH ||
- dk == DataKind.PIXEL_YUV)) {
- throw new RSIllegalArgumentException("Unsupported DataKind");
- }
- if (!(dt == DataType.UNSIGNED_8 ||
- dt == DataType.UNSIGNED_16 ||
- dt == DataType.UNSIGNED_5_6_5 ||
- dt == DataType.UNSIGNED_4_4_4_4 ||
- dt == DataType.UNSIGNED_5_5_5_1)) {
- throw new RSIllegalArgumentException("Unsupported DataType");
- }
- if (dt == DataType.UNSIGNED_5_6_5 && dk != DataKind.PIXEL_RGB) {
- throw new RSIllegalArgumentException("Bad kind and type combo");
- }
- if (dt == DataType.UNSIGNED_5_5_5_1 && dk != DataKind.PIXEL_RGBA) {
- throw new RSIllegalArgumentException("Bad kind and type combo");
- }
- if (dt == DataType.UNSIGNED_4_4_4_4 && dk != DataKind.PIXEL_RGBA) {
- throw new RSIllegalArgumentException("Bad kind and type combo");
- }
- if (dt == DataType.UNSIGNED_16 &&
- dk != DataKind.PIXEL_DEPTH) {
- throw new RSIllegalArgumentException("Bad kind and type combo");
- }
-
- int size = 1;
- switch (dk) {
- case PIXEL_LA:
- size = 2;
- break;
- case PIXEL_RGB:
- size = 3;
- break;
- case PIXEL_RGBA:
- size = 4;
- break;
- case PIXEL_DEPTH:
- size = 2;
- break;
- }
-
- boolean norm = true;
- long id = rs.nElementCreate(dt.mID, dk.mID, norm, size);
- return new Element(id, rs, dt, dk, norm, size);
- }
-
- /**
- * Check if the current Element is compatible with another Element.
- * Primitive Elements are compatible if they share the same underlying
- * size and type (i.e. U8 is compatible with A_8). User-defined Elements
- * must be equal in order to be compatible. This requires strict name
- * equivalence for all sub-Elements (in addition to structural equivalence).
- *
- * @param e The Element to check compatibility with.
- *
- * @return boolean true if the Elements are compatible, otherwise false.
- */
- public boolean isCompatible(Element e) {
- // Try strict BaseObj equality to start with.
- if (this.equals(e)) {
- return true;
- }
-
- // Ignore mKind because it is allowed to be different (user vs. pixel).
- // We also ignore mNormalized because it can be different. The mType
- // field must not be NONE since we require name equivalence for
- // all user-created Elements.
- return ((mSize == e.mSize) &&
- (mType != DataType.NONE) &&
- (mType == e.mType) &&
- (mVectorSize == e.mVectorSize));
- }
-
- /**
- * Builder class for producing complex elements with matching field and name
- * pairs. The builder starts empty. The order in which elements are added
- * is retained for the layout in memory.
- *
- */
- public static class Builder {
- RenderScript mRS;
- Element[] mElements;
- String[] mElementNames;
- int[] mArraySizes;
- int mCount;
- int mSkipPadding;
-
- /**
- * Create a builder object.
- *
- * @param rs
- */
- public Builder(RenderScript rs) {
- mRS = rs;
- mCount = 0;
- mElements = new Element[8];
- mElementNames = new String[8];
- mArraySizes = new int[8];
- }
-
- /**
- * Add an array of elements to this element.
- *
- * @param element
- * @param name
- * @param arraySize
- */
- public Builder add(Element element, String name, int arraySize) {
- if (arraySize < 1) {
- throw new RSIllegalArgumentException("Array size cannot be less than 1.");
- }
-
- // Skip padding fields after a vector 3 type.
- if (mSkipPadding != 0) {
- if (name.startsWith("#padding_")) {
- mSkipPadding = 0;
- return this;
- }
- }
-
- if (element.mVectorSize == 3) {
- mSkipPadding = 1;
- } else {
- mSkipPadding = 0;
- }
-
- if(mCount == mElements.length) {
- Element[] e = new Element[mCount + 8];
- String[] s = new String[mCount + 8];
- int[] as = new int[mCount + 8];
- System.arraycopy(mElements, 0, e, 0, mCount);
- System.arraycopy(mElementNames, 0, s, 0, mCount);
- System.arraycopy(mArraySizes, 0, as, 0, mCount);
- mElements = e;
- mElementNames = s;
- mArraySizes = as;
- }
- mElements[mCount] = element;
- mElementNames[mCount] = name;
- mArraySizes[mCount] = arraySize;
- mCount++;
- return this;
- }
-
- /**
- * Add a single element to this Element.
- *
- * @param element
- * @param name
- */
- public Builder add(Element element, String name) {
- return add(element, name, 1);
- }
-
- /**
- * Create the element from this builder.
- *
- *
- * @return Element
- */
- public Element create() {
- mRS.validate();
- Element[] ein = new Element[mCount];
- String[] sin = new String[mCount];
- int[] asin = new int[mCount];
- java.lang.System.arraycopy(mElements, 0, ein, 0, mCount);
- java.lang.System.arraycopy(mElementNames, 0, sin, 0, mCount);
- java.lang.System.arraycopy(mArraySizes, 0, asin, 0, mCount);
-
- // FIXME: broken for 64-bit
- int[] ids = new int[ein.length];
- for (int ct = 0; ct < ein.length; ct++ ) {
- ids[ct] = (int)ein[ct].getID(mRS);
- }
- long id = mRS.nElementCreate2(ids, sin, asin);
- return new Element(id, mRS, ein, sin, asin);
- }
- }
-}
-
diff --git a/graphics/java/android/renderscript/FieldPacker.java b/graphics/java/android/renderscript/FieldPacker.java
deleted file mode 100644
index 723ab24..0000000
--- a/graphics/java/android/renderscript/FieldPacker.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
- * Copyright (C) 2013 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.util.BitSet;
-
-/**
- * Utility class for packing arguments and structures from Android system objects to
- * RenderScript objects.
- *
- * This class is only intended to be used to support the
- * reflected code generated by the RS tool chain. It should not
- * be called directly.
- *
- **/
-public class FieldPacker {
- public FieldPacker(int len) {
- mPos = 0;
- mLen = len;
- mData = new byte[len];
- mAlignment = new BitSet();
- }
-
- public FieldPacker(byte[] data) {
- mPos = 0;
- mLen = data.length;
- mData = data;
- mAlignment = new BitSet();
- }
-
- public void align(int v) {
- if ((v <= 0) || ((v & (v - 1)) != 0)) {
- throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
- }
-
- while ((mPos & (v - 1)) != 0) {
- mAlignment.flip(mPos);
- mData[mPos++] = 0;
- }
- }
-
- public void subalign(int v) {
- if ((v & (v - 1)) != 0) {
- throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
- }
-
- while ((mPos & (v - 1)) != 0) {
- mPos--;
- }
-
- if (mPos > 0) {
- while (mAlignment.get(mPos - 1) == true) {
- mPos--;
- mAlignment.flip(mPos);
- }
- }
-
- }
-
- public void reset() {
- mPos = 0;
- }
- public void reset(int i) {
- if ((i < 0) || (i >= mLen)) {
- throw new RSIllegalArgumentException("out of range argument: " + i);
- }
- mPos = i;
- }
-
- public void skip(int i) {
- int res = mPos + i;
- if ((res < 0) || (res > mLen)) {
- throw new RSIllegalArgumentException("out of range argument: " + i);
- }
- mPos = res;
- }
-
- public void addI8(byte v) {
- mData[mPos++] = v;
- }
-
- public byte subI8() {
- subalign(1);
- return mData[--mPos];
- }
-
- public void addI16(short v) {
- align(2);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)(v >> 8);
- }
-
- public short subI16() {
- subalign(2);
- short v = 0;
- v = (short)((mData[--mPos] & 0xff) << 8);
- v = (short)(v | (short)(mData[--mPos] & 0xff));
- return v;
- }
-
-
- public void addI32(int v) {
- align(4);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)((v >> 8) & 0xff);
- mData[mPos++] = (byte)((v >> 16) & 0xff);
- mData[mPos++] = (byte)((v >> 24) & 0xff);
- }
-
- public int subI32() {
- subalign(4);
- int v = 0;
- v = ((mData[--mPos] & 0xff) << 24);
- v = v | ((mData[--mPos] & 0xff) << 16);
- v = v | ((mData[--mPos] & 0xff) << 8);
- v = v | ((mData[--mPos] & 0xff));
- return v;
- }
-
-
- public void addI64(long v) {
- align(8);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)((v >> 8) & 0xff);
- mData[mPos++] = (byte)((v >> 16) & 0xff);
- mData[mPos++] = (byte)((v >> 24) & 0xff);
- mData[mPos++] = (byte)((v >> 32) & 0xff);
- mData[mPos++] = (byte)((v >> 40) & 0xff);
- mData[mPos++] = (byte)((v >> 48) & 0xff);
- mData[mPos++] = (byte)((v >> 56) & 0xff);
- }
-
- public long subI64() {
- subalign(8);
- long v = 0;
- byte x = 0;
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 56l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 48l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 40l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 32l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 24l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 16l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff) << 8l);
- x = ((mData[--mPos]));
- v = (long)(v | (((long)x) & 0xff));
- return v;
- }
-
- public void addU8(short v) {
- if ((v < 0) || (v > 0xff)) {
- android.util.Log.e("rs", "FieldPacker.addU8( " + v + " )");
- throw new IllegalArgumentException("Saving value out of range for type");
- }
- mData[mPos++] = (byte)v;
- }
-
- public void addU16(int v) {
- if ((v < 0) || (v > 0xffff)) {
- android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
- throw new IllegalArgumentException("Saving value out of range for type");
- }
- align(2);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)(v >> 8);
- }
-
- public void addU32(long v) {
- if ((v < 0) || (v > 0xffffffffL)) {
- android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
- throw new IllegalArgumentException("Saving value out of range for type");
- }
- align(4);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)((v >> 8) & 0xff);
- mData[mPos++] = (byte)((v >> 16) & 0xff);
- mData[mPos++] = (byte)((v >> 24) & 0xff);
- }
-
- public void addU64(long v) {
- if (v < 0) {
- android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
- throw new IllegalArgumentException("Saving value out of range for type");
- }
- align(8);
- mData[mPos++] = (byte)(v & 0xff);
- mData[mPos++] = (byte)((v >> 8) & 0xff);
- mData[mPos++] = (byte)((v >> 16) & 0xff);
- mData[mPos++] = (byte)((v >> 24) & 0xff);
- mData[mPos++] = (byte)((v >> 32) & 0xff);
- mData[mPos++] = (byte)((v >> 40) & 0xff);
- mData[mPos++] = (byte)((v >> 48) & 0xff);
- mData[mPos++] = (byte)((v >> 56) & 0xff);
- }
-
- public void addF32(float v) {
- addI32(Float.floatToRawIntBits(v));
- }
-
- public float subF32() {
- return Float.intBitsToFloat(subI32());
- }
-
- public void addF64(double v) {
- addI64(Double.doubleToRawLongBits(v));
- }
-
- public double subF64() {
- return Double.longBitsToDouble(subI64());
- }
-
- public void addObj(BaseObj obj) {
- if (obj != null) {
- // FIXME: this is fine for 32-bit but needs a path for 64-bit
- addI32((int)obj.getID(null));
- } else {
- addI32(0);
- }
- }
-
- public void addF32(Float2 v) {
- addF32(v.x);
- addF32(v.y);
- }
- public void addF32(Float3 v) {
- addF32(v.x);
- addF32(v.y);
- addF32(v.z);
- }
- public void addF32(Float4 v) {
- addF32(v.x);
- addF32(v.y);
- addF32(v.z);
- addF32(v.w);
- }
-
- public void addF64(Double2 v) {
- addF64(v.x);
- addF64(v.y);
- }
- public void addF64(Double3 v) {
- addF64(v.x);
- addF64(v.y);
- addF64(v.z);
- }
- public void addF64(Double4 v) {
- addF64(v.x);
- addF64(v.y);
- addF64(v.z);
- addF64(v.w);
- }
-
- public void addI8(Byte2 v) {
- addI8(v.x);
- addI8(v.y);
- }
- public void addI8(Byte3 v) {
- addI8(v.x);
- addI8(v.y);
- addI8(v.z);
- }
- public void addI8(Byte4 v) {
- addI8(v.x);
- addI8(v.y);
- addI8(v.z);
- addI8(v.w);
- }
-
- public void addU8(Short2 v) {
- addU8(v.x);
- addU8(v.y);
- }
- public void addU8(Short3 v) {
- addU8(v.x);
- addU8(v.y);
- addU8(v.z);
- }
- public void addU8(Short4 v) {
- addU8(v.x);
- addU8(v.y);
- addU8(v.z);
- addU8(v.w);
- }
-
- public void addI16(Short2 v) {
- addI16(v.x);
- addI16(v.y);
- }
- public void addI16(Short3 v) {
- addI16(v.x);
- addI16(v.y);
- addI16(v.z);
- }
- public void addI16(Short4 v) {
- addI16(v.x);
- addI16(v.y);
- addI16(v.z);
- addI16(v.w);
- }
-
- public void addU16(Int2 v) {
- addU16(v.x);
- addU16(v.y);
- }
- public void addU16(Int3 v) {
- addU16(v.x);
- addU16(v.y);
- addU16(v.z);
- }
- public void addU16(Int4 v) {
- addU16(v.x);
- addU16(v.y);
- addU16(v.z);
- addU16(v.w);
- }
-
- public void addI32(Int2 v) {
- addI32(v.x);
- addI32(v.y);
- }
- public void addI32(Int3 v) {
- addI32(v.x);
- addI32(v.y);
- addI32(v.z);
- }
- public void addI32(Int4 v) {
- addI32(v.x);
- addI32(v.y);
- addI32(v.z);
- addI32(v.w);
- }
-
- public void addU32(Long2 v) {
- addU32(v.x);
- addU32(v.y);
- }
- public void addU32(Long3 v) {
- addU32(v.x);
- addU32(v.y);
- addU32(v.z);
- }
- public void addU32(Long4 v) {
- addU32(v.x);
- addU32(v.y);
- addU32(v.z);
- addU32(v.w);
- }
-
- public void addI64(Long2 v) {
- addI64(v.x);
- addI64(v.y);
- }
- public void addI64(Long3 v) {
- addI64(v.x);
- addI64(v.y);
- addI64(v.z);
- }
- public void addI64(Long4 v) {
- addI64(v.x);
- addI64(v.y);
- addI64(v.z);
- addI64(v.w);
- }
-
- public void addU64(Long2 v) {
- addU64(v.x);
- addU64(v.y);
- }
- public void addU64(Long3 v) {
- addU64(v.x);
- addU64(v.y);
- addU64(v.z);
- }
- public void addU64(Long4 v) {
- addU64(v.x);
- addU64(v.y);
- addU64(v.z);
- addU64(v.w);
- }
-
-
- public Float2 subFloat2() {
- Float2 v = new Float2();
- v.y = subF32();
- v.x = subF32();
- return v;
- }
- public Float3 subFloat3() {
- Float3 v = new Float3();
- v.z = subF32();
- v.y = subF32();
- v.x = subF32();
- return v;
- }
- public Float4 subFloat4() {
- Float4 v = new Float4();
- v.w = subF32();
- v.z = subF32();
- v.y = subF32();
- v.x = subF32();
- return v;
- }
-
- public Double2 subDouble2() {
- Double2 v = new Double2();
- v.y = subF64();
- v.x = subF64();
- return v;
- }
- public Double3 subDouble3() {
- Double3 v = new Double3();
- v.z = subF64();
- v.y = subF64();
- v.x = subF64();
- return v;
- }
- public Double4 subDouble4() {
- Double4 v = new Double4();
- v.w = subF64();
- v.z = subF64();
- v.y = subF64();
- v.x = subF64();
- return v;
- }
-
- public Byte2 subByte2() {
- Byte2 v = new Byte2();
- v.y = subI8();
- v.x = subI8();
- return v;
- }
- public Byte3 subByte3() {
- Byte3 v = new Byte3();
- v.z = subI8();
- v.y = subI8();
- v.x = subI8();
- return v;
- }
- public Byte4 subByte4() {
- Byte4 v = new Byte4();
- v.w = subI8();
- v.z = subI8();
- v.y = subI8();
- v.x = subI8();
- return v;
- }
-
- public Short2 subShort2() {
- Short2 v = new Short2();
- v.y = subI16();
- v.x = subI16();
- return v;
- }
- public Short3 subShort3() {
- Short3 v = new Short3();
- v.z = subI16();
- v.y = subI16();
- v.x = subI16();
- return v;
- }
- public Short4 subShort4() {
- Short4 v = new Short4();
- v.w = subI16();
- v.z = subI16();
- v.y = subI16();
- v.x = subI16();
- return v;
- }
-
- public Int2 subInt2() {
- Int2 v = new Int2();
- v.y = subI32();
- v.x = subI32();
- return v;
- }
- public Int3 subInt3() {
- Int3 v = new Int3();
- v.z = subI32();
- v.y = subI32();
- v.x = subI32();
- return v;
- }
- public Int4 subInt4() {
- Int4 v = new Int4();
- v.w = subI32();
- v.z = subI32();
- v.y = subI32();
- v.x = subI32();
- return v;
- }
-
- public Long2 subLong2() {
- Long2 v = new Long2();
- v.y = subI64();
- v.x = subI64();
- return v;
- }
- public Long3 subLong3() {
- Long3 v = new Long3();
- v.z = subI64();
- v.y = subI64();
- v.x = subI64();
- return v;
- }
- public Long4 subLong4() {
- Long4 v = new Long4();
- v.w = subI64();
- v.z = subI64();
- v.y = subI64();
- v.x = subI64();
- return v;
- }
-
-
-
- public void addMatrix(Matrix4f v) {
- for (int i=0; i < v.mMat.length; i++) {
- addF32(v.mMat[i]);
- }
- }
-
- public Matrix4f subMatrix4f() {
- Matrix4f v = new Matrix4f();
- for (int i = v.mMat.length - 1; i >= 0; i--) {
- v.mMat[i] = subF32();
- }
- return v;
- }
-
- public void addMatrix(Matrix3f v) {
- for (int i=0; i < v.mMat.length; i++) {
- addF32(v.mMat[i]);
- }
- }
-
- public Matrix3f subMatrix3f() {
- Matrix3f v = new Matrix3f();
- for (int i = v.mMat.length - 1; i >= 0; i--) {
- v.mMat[i] = subF32();
- }
- return v;
- }
-
- public void addMatrix(Matrix2f v) {
- for (int i=0; i < v.mMat.length; i++) {
- addF32(v.mMat[i]);
- }
- }
-
- public Matrix2f subMatrix2f() {
- Matrix2f v = new Matrix2f();
- for (int i = v.mMat.length - 1; i >= 0; i--) {
- v.mMat[i] = subF32();
- }
- return v;
- }
-
- public void addBoolean(boolean v) {
- addI8((byte)(v ? 1 : 0));
- }
-
- public boolean subBoolean() {
- byte v = subI8();
- if (v == 1) {
- return true;
- }
- return false;
- }
-
- public final byte[] getData() {
- return mData;
- }
-
- private final byte mData[];
- private int mPos;
- private int mLen;
- private BitSet mAlignment;
-
-}
-
-
diff --git a/graphics/java/android/renderscript/FileA3D.java b/graphics/java/android/renderscript/FileA3D.java
deleted file mode 100644
index f0acb56..0000000
--- a/graphics/java/android/renderscript/FileA3D.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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.File;
-import java.io.InputStream;
-
-import android.content.res.AssetManager;
-import android.content.res.Resources;
-
-/**
- * @hide
- * @deprecated in API 16
- * FileA3D allows users to load RenderScript objects from files
- * or resources stored on disk. It could be used to load items
- * such as 3D geometry data converted to a RenderScript format from
- * content creation tools. Currently only meshes are supported
- * in FileA3D.
- *
- * When successfully loaded, FileA3D will contain a list of
- * index entries for all the objects stored inside it.
- *
- **/
-public class FileA3D extends BaseObj {
-
- /**
- * @deprecated in API 16
- * Specifies what renderscript object type is contained within
- * the FileA3D IndexEntry
- **/
- public enum EntryType {
-
- /**
- * @deprecated in API 16
- * Unknown or or invalid object, nothing will be loaded
- **/
- UNKNOWN (0),
- /**
- * @deprecated in API 16
- * RenderScript Mesh object
- **/
- MESH (1);
-
- int mID;
- EntryType(int id) {
- mID = id;
- }
-
- static EntryType toEntryType(int intID) {
- return EntryType.values()[intID];
- }
- }
-
- /**
- * @deprecated in API 16
- * IndexEntry contains information about one of the RenderScript
- * objects inside the file's index. It could be used to query the
- * object's type and also name and load the object itself if
- * necessary.
- */
- public static class IndexEntry {
- RenderScript mRS;
- int mIndex;
- long mID;
- String mName;
- EntryType mEntryType;
- BaseObj mLoadedObj;
-
- /**
- * @deprecated in API 16
- * Returns the name of a renderscript object the index entry
- * describes
- *
- * @return name of a renderscript object the index entry
- * describes
- *
- */
- public String getName() {
- return mName;
- }
-
- /**
- * @deprecated in API 16
- * Returns the type of a renderscript object the index entry
- * describes
- * @return type of a renderscript object the index entry
- * describes
- */
- public EntryType getEntryType() {
- return mEntryType;
- }
-
- /**
- * @deprecated in API 16
- * Used to load the object described by the index entry
- * @return base renderscript object described by the entry
- */
- public BaseObj getObject() {
- mRS.validate();
- BaseObj obj = internalCreate(mRS, this);
- return obj;
- }
-
- /**
- * @deprecated in API 16
- * Used to load the mesh described by the index entry, object
- * described by the index entry must be a renderscript mesh
- *
- * @return renderscript mesh object described by the entry
- */
- public Mesh getMesh() {
- return (Mesh)getObject();
- }
-
- static synchronized BaseObj internalCreate(RenderScript rs, IndexEntry entry) {
- if(entry.mLoadedObj != null) {
- return entry.mLoadedObj;
- }
-
- // to be purged on cleanup
- if(entry.mEntryType == EntryType.UNKNOWN) {
- return null;
- }
-
- int objectID = rs.nFileA3DGetEntryByIndex(entry.mID, entry.mIndex);
- if(objectID == 0) {
- return null;
- }
-
- switch (entry.mEntryType) {
- case MESH:
- entry.mLoadedObj = new Mesh(objectID, rs);
- break;
- }
-
- entry.mLoadedObj.updateFromNative();
- return entry.mLoadedObj;
- }
-
- IndexEntry(RenderScript rs, int index, long id, String name, EntryType type) {
- mRS = rs;
- mIndex = index;
- mID = id;
- mName = name;
- mEntryType = type;
- mLoadedObj = null;
- }
- }
-
- IndexEntry[] mFileEntries;
- InputStream mInputStream;
-
- FileA3D(long id, RenderScript rs, InputStream stream) {
- super(id, rs);
- mInputStream = stream;
- }
-
- private void initEntries() {
- int numFileEntries = mRS.nFileA3DGetNumIndexEntries(getID(mRS));
- if(numFileEntries <= 0) {
- return;
- }
-
- mFileEntries = new IndexEntry[numFileEntries];
- int[] ids = new int[numFileEntries];
- String[] names = new String[numFileEntries];
-
- mRS.nFileA3DGetIndexEntries(getID(mRS), numFileEntries, ids, names);
-
- for(int i = 0; i < numFileEntries; i ++) {
- mFileEntries[i] = new IndexEntry(mRS, i, getID(mRS), names[i], EntryType.toEntryType(ids[i]));
- }
- }
-
- /**
- * @deprecated in API 16
- * Returns the number of objects stored inside the a3d file
- *
- * @return the number of objects stored inside the a3d file
- */
- public int getIndexEntryCount() {
- if(mFileEntries == null) {
- return 0;
- }
- return mFileEntries.length;
- }
-
- /**
- * @deprecated in API 16
- * Returns an index entry from the list of all objects inside
- * FileA3D
- *
- * @param index number of the entry from the list to return
- *
- * @return entry in the a3d file described by the index
- */
- public IndexEntry getIndexEntry(int index) {
- if(getIndexEntryCount() == 0 || index < 0 || index >= mFileEntries.length) {
- return null;
- }
- return mFileEntries[index];
- }
-
- /**
- * @deprecated in API 16
- * Creates a FileA3D object from an asset stored on disk
- *
- * @param rs Context to which the object will belong.
- * @param mgr asset manager used to load asset
- * @param path location of the file to load
- *
- * @return a3d file containing renderscript objects
- */
- static public FileA3D createFromAsset(RenderScript rs, AssetManager mgr, String path) {
- rs.validate();
- long fileId = rs.nFileA3DCreateFromAsset(mgr, path);
-
- if(fileId == 0) {
- throw new RSRuntimeException("Unable to create a3d file from asset " + path);
- }
- FileA3D fa3d = new FileA3D(fileId, rs, null);
- fa3d.initEntries();
- return fa3d;
- }
-
- /**
- * @deprecated in API 16
- * Creates a FileA3D object from a file stored on disk
- *
- * @param rs Context to which the object will belong.
- * @param path location of the file to load
- *
- * @return a3d file containing renderscript objects
- */
- static public FileA3D createFromFile(RenderScript rs, String path) {
- long fileId = rs.nFileA3DCreateFromFile(path);
-
- if(fileId == 0) {
- throw new RSRuntimeException("Unable to create a3d file from " + path);
- }
- FileA3D fa3d = new FileA3D(fileId, rs, null);
- fa3d.initEntries();
- return fa3d;
- }
-
- /**
- * @deprecated in API 16
- * Creates a FileA3D object from a file stored on disk
- *
- * @param rs Context to which the object will belong.
- * @param path location of the file to load
- *
- * @return a3d file containing renderscript objects
- */
- static public FileA3D createFromFile(RenderScript rs, File path) {
- return createFromFile(rs, path.getAbsolutePath());
- }
-
- /**
- * @deprecated in API 16
- * Creates a FileA3D object from an application resource
- *
- * @param rs Context to which the object will belong.
- * @param res resource manager used for loading
- * @param id resource to create FileA3D from
- *
- * @return a3d file containing renderscript objects
- */
- static public FileA3D createFromResource(RenderScript rs, Resources res, int id) {
-
- rs.validate();
- InputStream is = null;
- try {
- is = res.openRawResource(id);
- } catch (Exception e) {
- throw new RSRuntimeException("Unable to open resource " + id);
- }
-
- long fileId = 0;
- if (is instanceof AssetManager.AssetInputStream) {
- int asset = ((AssetManager.AssetInputStream) is).getAssetInt();
- fileId = rs.nFileA3DCreateFromAssetStream(asset);
- } else {
- throw new RSRuntimeException("Unsupported asset stream");
- }
-
- if(fileId == 0) {
- throw new RSRuntimeException("Unable to create a3d file from resource " + id);
- }
- FileA3D fa3d = new FileA3D(fileId, rs, is);
- fa3d.initEntries();
- return fa3d;
-
- }
-}
diff --git a/graphics/java/android/renderscript/Float2.java b/graphics/java/android/renderscript/Float2.java
deleted file mode 100644
index e9f8ca7..0000000
--- a/graphics/java/android/renderscript/Float2.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic float type.
- * Provides two float fields packed.
- */
-public class Float2 {
- public float x;
- public float y;
-
- public Float2() {
- }
- /** @hide */
- public Float2(Float2 data) {
- this.x = data.x;
- this.y = data.y;
- }
-
- public Float2(float x, float y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 add(Float2 a, Float2 b) {
- Float2 res = new Float2();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Float2 value) {
- x += value.x;
- y += value.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(float value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 add(Float2 a, float b) {
- Float2 res = new Float2();
- res.x = a.x + b;
- res.y = a.y + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Float2 value) {
- x -= value.x;
- y -= value.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 sub(Float2 a, Float2 b) {
- Float2 res = new Float2();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(float value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 sub(Float2 a, float b) {
- Float2 res = new Float2();
- res.x = a.x - b;
- res.y = a.y - b;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Float2 value) {
- x *= value.x;
- y *= value.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 mul(Float2 a, Float2 b) {
- Float2 res = new Float2();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(float value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 mul(Float2 a, float b) {
- Float2 res = new Float2();
- res.x = a.x * b;
- res.y = a.y * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Float2 value) {
- x /= value.x;
- y /= value.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 div(Float2 a, Float2 b) {
- Float2 res = new Float2();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(float value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float2 div(Float2 a, float b) {
- Float2 res = new Float2();
- res.x = a.x / b;
- res.y = a.y / b;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public float dotProduct(Float2 a) {
- return (x * a.x) + (y * a.y);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static float dotProduct(Float2 a, Float2 b) {
- return (b.x * a.x) + (b.y * a.y);
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Float2 a, float factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * set vector value by float2
- *
- * @param a
- */
- public void set(Float2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 2;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public float elementSum() {
- return x + y;
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public float get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, float value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, float value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value
- *
- * @param x
- * @param y
- */
- public void setValues(float x, float y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide
- * copy the vector to float array
- *
- * @param data
- * @param offset
- */
- public void copyTo(float[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- }
-}
diff --git a/graphics/java/android/renderscript/Float3.java b/graphics/java/android/renderscript/Float3.java
deleted file mode 100644
index 555bdf6..0000000
--- a/graphics/java/android/renderscript/Float3.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic float type.
- * Provides three float fields packed.
- */
-public class Float3 {
- public float x;
- public float y;
- public float z;
-
- public Float3() {
- }
- /** @hide */
- public Float3(Float3 data) {
- this.x = data.x;
- this.y = data.y;
- this.z = data.z;
- }
-
- public Float3(float x, float y, float z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 add(Float3 a, Float3 b) {
- Float3 res = new Float3();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
- res.z = a.z + b.z;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Float3 value) {
- x += value.x;
- y += value.y;
- z += value.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(float value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 add(Float3 a, float b) {
- Float3 res = new Float3();
- res.x = a.x + b;
- res.y = a.y + b;
- res.z = a.z + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Float3 value) {
- x -= value.x;
- y -= value.y;
- z -= value.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 sub(Float3 a, Float3 b) {
- Float3 res = new Float3();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
- res.z = a.z - b.z;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(float value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 sub(Float3 a, float b) {
- Float3 res = new Float3();
- res.x = a.x - b;
- res.y = a.y - b;
- res.z = a.z - b;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Float3 value) {
- x *= value.x;
- y *= value.y;
- z *= value.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 mul(Float3 a, Float3 b) {
- Float3 res = new Float3();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
- res.z = a.z * b.z;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(float value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 mul(Float3 a, float b) {
- Float3 res = new Float3();
- res.x = a.x * b;
- res.y = a.y * b;
- res.z = a.z * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Float3 value) {
- x /= value.x;
- y /= value.y;
- z /= value.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 div(Float3 a, Float3 b) {
- Float3 res = new Float3();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
- res.z = a.z / b.z;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(float value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float3 div(Float3 a, float b) {
- Float3 res = new Float3();
- res.x = a.x / b;
- res.y = a.y / b;
- res.z = a.z / b;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public Float dotProduct(Float3 a) {
- return new Float((x * a.x) + (y * a.y) + (z * a.z));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static Float dotProduct(Float3 a, Float3 b) {
- return new Float((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Float3 a, float factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * set vector value by float3
- *
- * @param a
- */
- public void set(Float3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- z = -z;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 3;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public Float elementSum() {
- return new Float(x + y + z);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public float get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, float value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, float value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value
- *
- * @param x
- * @param y
- * @param z
- */
- public void setValues(float x, float y, float z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide
- * copy the vector to float array
- *
- * @param data
- * @param offset
- */
- public void copyTo(float[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- }
-}
diff --git a/graphics/java/android/renderscript/Float4.java b/graphics/java/android/renderscript/Float4.java
deleted file mode 100644
index 6541b2e..0000000
--- a/graphics/java/android/renderscript/Float4.java
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic float type.
- * Provides four float fields packed.
- */
-public class Float4 {
- public float x;
- public float y;
- public float z;
- public float w;
-
- public Float4() {
- }
- /** @hide */
- public Float4(Float4 data) {
- this.x = data.x;
- this.y = data.y;
- this.z = data.z;
- this.w = data.w;
- }
-
- public Float4(float x, float y, float z, float w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 add(Float4 a, Float4 b) {
- Float4 res = new Float4();
- res.x = a.x + b.x;
- res.y = a.y + b.y;
- res.z = a.z + b.z;
- res.w = a.w + b.w;
-
- return res;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(Float4 value) {
- x += value.x;
- y += value.y;
- z += value.z;
- w += value.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(float value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 add(Float4 a, float b) {
- Float4 res = new Float4();
- res.x = a.x + b;
- res.y = a.y + b;
- res.z = a.z + b;
- res.w = a.w + b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(Float4 value) {
- x -= value.x;
- y -= value.y;
- z -= value.z;
- w -= value.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(float value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 sub(Float4 a, float b) {
- Float4 res = new Float4();
- res.x = a.x - b;
- res.y = a.y - b;
- res.z = a.z - b;
- res.w = a.w - b;
-
- return res;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 sub(Float4 a, Float4 b) {
- Float4 res = new Float4();
- res.x = a.x - b.x;
- res.y = a.y - b.y;
- res.z = a.z - b.z;
- res.w = a.w - b.w;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(Float4 value) {
- x *= value.x;
- y *= value.y;
- z *= value.z;
- w *= value.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(float value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 mul(Float4 a, Float4 b) {
- Float4 res = new Float4();
- res.x = a.x * b.x;
- res.y = a.y * b.y;
- res.z = a.z * b.z;
- res.w = a.w * b.w;
-
- return res;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 mul(Float4 a, float b) {
- Float4 res = new Float4();
- res.x = a.x * b;
- res.y = a.y * b;
- res.z = a.z * b;
- res.w = a.w * b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(Float4 value) {
- x /= value.x;
- y /= value.y;
- z /= value.z;
- w /= value.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(float value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 div(Float4 a, float b) {
- Float4 res = new Float4();
- res.x = a.x / b;
- res.y = a.y / b;
- res.z = a.z / b;
- res.w = a.w / b;
-
- return res;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Float4 div(Float4 a, Float4 b) {
- Float4 res = new Float4();
- res.x = a.x / b.x;
- res.y = a.y / b.y;
- res.z = a.z / b.z;
- res.w = a.w / b.w;
-
- return res;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public float dotProduct(Float4 a) {
- return (x * a.x) + (y * a.y) + (z * a.z) + (w * a.w);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static float dotProduct(Float4 a, Float4 b) {
- return (b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w);
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Float4 a, float factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * set vector value by float4
- *
- * @param a
- */
- public void set(Float4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- x = -x;
- y = -y;
- z = -z;
- w = -w;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 4;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public float elementSum() {
- return x + y + z + w;
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public float get(int i) {
- switch (i) {
- case 0:
- return x;
- case 1:
- return y;
- case 2:
- return z;
- case 3:
- return w;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, float value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, float value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value
- *
- * @param x
- * @param y
- * @param z
- * @param w
- */
- public void setValues(float x, float y, float z, float w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide
- * copy the vector to float array
- *
- * @param data
- * @param offset
- */
- public void copyTo(float[] data, int offset) {
- data[offset] = x;
- data[offset + 1] = y;
- data[offset + 2] = z;
- data[offset + 3] = w;
- }
-}
diff --git a/graphics/java/android/renderscript/Font.java b/graphics/java/android/renderscript/Font.java
deleted file mode 100644
index 4cd89db..0000000
--- a/graphics/java/android/renderscript/Font.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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.File;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import android.os.Environment;
-
-import android.content.res.AssetManager;
-import android.content.res.Resources;
-
-/**
- * @hide
- * @deprecated in API 16
- * <p>This class gives users a simple way to draw hardware accelerated text.
- * Internally, the glyphs are rendered using the Freetype library and an internal cache of
- * rendered glyph bitmaps is maintained. Each font object represents a combination of a typeface,
- * and point size. You can create multiple font objects to represent styles such as bold or italic text,
- * faces, and different font sizes. During creation, the Android system quieries device's screen DPI to
- * ensure proper sizing across multiple device configurations.</p>
- * <p>Fonts are rendered using screen-space positions and no state setup beyond binding a
- * font to the RenderScript is required. A note of caution on performance, though the state changes
- * are transparent to the user, they do happen internally, and it is more efficient to
- * render large batches of text in sequence. It is also more efficient to render multiple
- * characters at once instead of one by one to improve draw call batching.</p>
- * <p>Font color and transparency are not part of the font object and you can freely modify
- * them in the script to suit the user's rendering needs. Font colors work as a state machine.
- * Every new call to draw text uses the last color set in the script.</p>
- **/
-public class Font extends BaseObj {
-
- //These help us create a font by family name
- private static final String[] sSansNames = {
- "sans-serif", "arial", "helvetica", "tahoma", "verdana"
- };
-
- private static final String[] sSerifNames = {
- "serif", "times", "times new roman", "palatino", "georgia", "baskerville",
- "goudy", "fantasy", "cursive", "ITC Stone Serif"
- };
-
- private static final String[] sMonoNames = {
- "monospace", "courier", "courier new", "monaco"
- };
-
- private static class FontFamily {
- String[] mNames;
- String mNormalFileName;
- String mBoldFileName;
- String mItalicFileName;
- String mBoldItalicFileName;
- }
-
- private static Map<String, FontFamily> sFontFamilyMap;
-
- /**
- * @deprecated in API 16
- */
- public enum Style {
- /**
- * @deprecated in API 16
- */
- NORMAL,
- /**
- * @deprecated in API 16
- */
- BOLD,
- /**
- * @deprecated in API 16
- */
- ITALIC,
- /**
- * @deprecated in API 16
- */
- BOLD_ITALIC;
- }
-
- private static void addFamilyToMap(FontFamily family) {
- for(int i = 0; i < family.mNames.length; i ++) {
- sFontFamilyMap.put(family.mNames[i], family);
- }
- }
-
- private static void initFontFamilyMap() {
- sFontFamilyMap = new HashMap<String, FontFamily>();
-
- FontFamily sansFamily = new FontFamily();
- sansFamily.mNames = sSansNames;
- sansFamily.mNormalFileName = "Roboto-Regular.ttf";
- sansFamily.mBoldFileName = "Roboto-Bold.ttf";
- sansFamily.mItalicFileName = "Roboto-Italic.ttf";
- sansFamily.mBoldItalicFileName = "Roboto-BoldItalic.ttf";
- addFamilyToMap(sansFamily);
-
- FontFamily serifFamily = new FontFamily();
- serifFamily.mNames = sSerifNames;
- serifFamily.mNormalFileName = "DroidSerif-Regular.ttf";
- serifFamily.mBoldFileName = "DroidSerif-Bold.ttf";
- serifFamily.mItalicFileName = "DroidSerif-Italic.ttf";
- serifFamily.mBoldItalicFileName = "DroidSerif-BoldItalic.ttf";
- addFamilyToMap(serifFamily);
-
- FontFamily monoFamily = new FontFamily();
- monoFamily.mNames = sMonoNames;
- monoFamily.mNormalFileName = "DroidSansMono.ttf";
- monoFamily.mBoldFileName = "DroidSansMono.ttf";
- monoFamily.mItalicFileName = "DroidSansMono.ttf";
- monoFamily.mBoldItalicFileName = "DroidSansMono.ttf";
- addFamilyToMap(monoFamily);
- }
-
- static {
- initFontFamilyMap();
- }
-
- static String getFontFileName(String familyName, Style style) {
- FontFamily family = sFontFamilyMap.get(familyName);
- if(family != null) {
- switch(style) {
- case NORMAL:
- return family.mNormalFileName;
- case BOLD:
- return family.mBoldFileName;
- case ITALIC:
- return family.mItalicFileName;
- case BOLD_ITALIC:
- return family.mBoldItalicFileName;
- }
- }
- // Fallback if we could not find the desired family
- return "DroidSans.ttf";
- }
-
- Font(int id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @deprecated in API 16
- * Takes a specific file name as an argument
- */
- static public Font createFromFile(RenderScript rs, Resources res, String path, float pointSize) {
- rs.validate();
- int dpi = res.getDisplayMetrics().densityDpi;
- int fontId = rs.nFontCreateFromFile(path, pointSize, dpi);
-
- if(fontId == 0) {
- throw new RSRuntimeException("Unable to create font from file " + path);
- }
- Font rsFont = new Font(fontId, rs);
-
- return rsFont;
- }
-
- /**
- * @deprecated in API 16
- */
- static public Font createFromFile(RenderScript rs, Resources res, File path, float pointSize) {
- return createFromFile(rs, res, path.getAbsolutePath(), pointSize);
- }
-
- /**
- * @deprecated in API 16
- */
- static public Font createFromAsset(RenderScript rs, Resources res, String path, float pointSize) {
- rs.validate();
- AssetManager mgr = res.getAssets();
- int dpi = res.getDisplayMetrics().densityDpi;
-
- int fontId = rs.nFontCreateFromAsset(mgr, path, pointSize, dpi);
- if(fontId == 0) {
- throw new RSRuntimeException("Unable to create font from asset " + path);
- }
- Font rsFont = new Font(fontId, rs);
- return rsFont;
- }
-
- /**
- * @deprecated in API 16
- */
- static public Font createFromResource(RenderScript rs, Resources res, int id, float pointSize) {
- String name = "R." + Integer.toString(id);
-
- rs.validate();
- InputStream is = null;
- try {
- is = res.openRawResource(id);
- } catch (Exception e) {
- throw new RSRuntimeException("Unable to open resource " + id);
- }
-
- int dpi = res.getDisplayMetrics().densityDpi;
-
- int fontId = 0;
- if (is instanceof AssetManager.AssetInputStream) {
- int asset = ((AssetManager.AssetInputStream) is).getAssetInt();
- fontId = rs.nFontCreateFromAssetStream(name, pointSize, dpi, asset);
- } else {
- throw new RSRuntimeException("Unsupported asset stream created");
- }
-
- if(fontId == 0) {
- throw new RSRuntimeException("Unable to create font from resource " + id);
- }
- Font rsFont = new Font(fontId, rs);
- return rsFont;
- }
-
- /**
- * @deprecated in API 16
- * Accepts one of the following family names as an argument
- * and will attempt to produce the best match with a system font:
- *
- * "sans-serif" "arial" "helvetica" "tahoma" "verdana"
- * "serif" "times" "times new roman" "palatino" "georgia" "baskerville"
- * "goudy" "fantasy" "cursive" "ITC Stone Serif"
- * "monospace" "courier" "courier new" "monaco"
- *
- * Returns default font if no match could be found.
- */
- static public Font create(RenderScript rs, Resources res, String familyName, Style fontStyle, float pointSize) {
- String fileName = getFontFileName(familyName, fontStyle);
- String fontPath = Environment.getRootDirectory().getAbsolutePath();
- fontPath += "/fonts/" + fileName;
- return createFromFile(rs, res, fontPath, pointSize);
- }
-
-}
diff --git a/graphics/java/android/renderscript/Int2.java b/graphics/java/android/renderscript/Int2.java
deleted file mode 100644
index 120957b..0000000
--- a/graphics/java/android/renderscript/Int2.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic int type.
- * Provides two int fields packed.
- */
-public class Int2 {
- public int x;
- public int y;
-
- public Int2() {
- }
-
- /** @hide */
- public Int2(int i) {
- this.x = this.y = i;
- }
-
- public Int2(int x, int y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide */
- public Int2(Int2 source) {
- this.x = source.x;
- this.y = source.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Int2 a) {
- this.x += a.x;
- this.y += a.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 add(Int2 a, Int2 b) {
- Int2 result = new Int2();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(int value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 add(Int2 a, int b) {
- Int2 result = new Int2();
- result.x = a.x + b;
- result.y = a.y + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Int2 a) {
- this.x -= a.x;
- this.y -= a.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 sub(Int2 a, Int2 b) {
- Int2 result = new Int2();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(int value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 sub(Int2 a, int b) {
- Int2 result = new Int2();
- result.x = a.x - b;
- result.y = a.y - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Int2 a) {
- this.x *= a.x;
- this.y *= a.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 mul(Int2 a, Int2 b) {
- Int2 result = new Int2();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(int value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 mul(Int2 a, int b) {
- Int2 result = new Int2();
- result.x = a.x * b;
- result.y = a.y * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Int2 a) {
- this.x /= a.x;
- this.y /= a.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 div(Int2 a, Int2 b) {
- Int2 result = new Int2();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(int value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 div(Int2 a, int b) {
- Int2 result = new Int2();
- result.x = a.x / b;
- result.y = a.y / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Int2 a) {
- this.x %= a.x;
- this.y %= a.y;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 mod(Int2 a, Int2 b) {
- Int2 result = new Int2();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(int value) {
- x %= value;
- y %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int2 mod(Int2 a, int b) {
- Int2 result = new Int2();
- result.x = a.x % b;
- result.y = a.y % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 2;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public int dotProduct(Int2 a) {
- return (int)((x * a.x) + (y * a.y));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static int dotProduct(Int2 a, Int2 b) {
- return (int)((b.x * a.x) + (b.y * a.y));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Int2 a, int factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * set vector value by Int2
- *
- * @param a
- */
- public void set(Int2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * set the vector field value by Int
- *
- * @param a
- * @param b
- */
- public void setValues(int a, int b) {
- this.x = a;
- this.y = b;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public int elementSum() {
- return (int)(x + y);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public int get(int i) {
- switch (i) {
- case 0:
- return (int)(x);
- case 1:
- return (int)(y);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, int value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, int value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to int array
- *
- * @param data
- * @param offset
- */
- public void copyTo(int[] data, int offset) {
- data[offset] = (int)(x);
- data[offset + 1] = (int)(y);
- }
-}
diff --git a/graphics/java/android/renderscript/Int3.java b/graphics/java/android/renderscript/Int3.java
deleted file mode 100644
index 5431b9a..0000000
--- a/graphics/java/android/renderscript/Int3.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic int type.
- * Provides three int fields packed.
- */
-public class Int3 {
- public int x;
- public int y;
- public int z;
-
- public Int3() {
- }
-
- /** @hide */
- public Int3(int i) {
- this.x = this.y = this.z = i;
- }
-
- public Int3(int x, int y, int z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide */
- public Int3(Int3 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Int3 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 add(Int3 a, Int3 b) {
- Int3 result = new Int3();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
- result.z = a.z + b.z;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(int value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 add(Int3 a, int b) {
- Int3 result = new Int3();
- result.x = a.x + b;
- result.y = a.y + b;
- result.z = a.z + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Int3 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 sub(Int3 a, Int3 b) {
- Int3 result = new Int3();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
- result.z = a.z - b.z;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(int value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 sub(Int3 a, int b) {
- Int3 result = new Int3();
- result.x = a.x - b;
- result.y = a.y - b;
- result.z = a.z - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Int3 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 mul(Int3 a, Int3 b) {
- Int3 result = new Int3();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
- result.z = a.z * b.z;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(int value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 mul(Int3 a, int b) {
- Int3 result = new Int3();
- result.x = a.x * b;
- result.y = a.y * b;
- result.z = a.z * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Int3 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 div(Int3 a, Int3 b) {
- Int3 result = new Int3();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
- result.z = a.z / b.z;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(int value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 div(Int3 a, int b) {
- Int3 result = new Int3();
- result.x = a.x / b;
- result.y = a.y / b;
- result.z = a.z / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Int3 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 mod(Int3 a, Int3 b) {
- Int3 result = new Int3();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
- result.z = a.z % b.z;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(int value) {
- x %= value;
- y %= value;
- z %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int3 mod(Int3 a, int b) {
- Int3 result = new Int3();
- result.x = a.x % b;
- result.y = a.y % b;
- result.z = a.z % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 3;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- this.z = -z;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public int dotProduct(Int3 a) {
- return (int)((x * a.x) + (y * a.y) + (z * a.z));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static int dotProduct(Int3 a, Int3 b) {
- return (int)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Int3 a, int factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * set vector value by Int3
- *
- * @param a
- */
- public void set(Int3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * set the vector field value by Int
- *
- * @param a
- * @param b
- * @param c
- */
- public void setValues(int a, int b, int c) {
- this.x = a;
- this.y = b;
- this.z = c;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public int elementSum() {
- return (int)(x + y + z);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public int get(int i) {
- switch (i) {
- case 0:
- return (int)(x);
- case 1:
- return (int)(y);
- case 2:
- return (int)(z);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, int value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, int value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to int array
- *
- * @param data
- * @param offset
- */
- public void copyTo(int[] data, int offset) {
- data[offset] = (int)(x);
- data[offset + 1] = (int)(y);
- data[offset + 2] = (int)(z);
- }
-}
diff --git a/graphics/java/android/renderscript/Int4.java b/graphics/java/android/renderscript/Int4.java
deleted file mode 100644
index 1c0e2e2..0000000
--- a/graphics/java/android/renderscript/Int4.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic int type.
- * Provides four int fields packed.
- */
-public class Int4 {
- public int x;
- public int y;
- public int z;
- public int w;
-
- public Int4() {
- }
-
- /** @hide */
- public Int4(int i) {
- this.x = this.y = this.z = this.w = i;
- }
-
- public Int4(int x, int y, int z, int w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide */
- public Int4(Int4 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- this.w = source.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Int4 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- this.w += a.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 add(Int4 a, Int4 b) {
- Int4 result = new Int4();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
- result.z = a.z + b.z;
- result.w = a.w + b.w;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(int value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 add(Int4 a, int b) {
- Int4 result = new Int4();
- result.x = a.x + b;
- result.y = a.y + b;
- result.z = a.z + b;
- result.w = a.w + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Int4 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- this.w -= a.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 sub(Int4 a, Int4 b) {
- Int4 result = new Int4();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
- result.z = a.z - b.z;
- result.w = a.w - b.w;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(int value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 sub(Int4 a, int b) {
- Int4 result = new Int4();
- result.x = a.x - b;
- result.y = a.y - b;
- result.z = a.z - b;
- result.w = a.w - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Int4 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- this.w *= a.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 mul(Int4 a, Int4 b) {
- Int4 result = new Int4();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
- result.z = a.z * b.z;
- result.w = a.w * b.w;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(int value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 mul(Int4 a, int b) {
- Int4 result = new Int4();
- result.x = a.x * b;
- result.y = a.y * b;
- result.z = a.z * b;
- result.w = a.w * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Int4 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- this.w /= a.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 div(Int4 a, Int4 b) {
- Int4 result = new Int4();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
- result.z = a.z / b.z;
- result.w = a.w / b.w;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(int value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 div(Int4 a, int b) {
- Int4 result = new Int4();
- result.x = a.x / b;
- result.y = a.y / b;
- result.z = a.z / b;
- result.w = a.w / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Int4 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- this.w %= a.w;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 mod(Int4 a, Int4 b) {
- Int4 result = new Int4();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
- result.z = a.z % b.z;
- result.w = a.w % b.w;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(int value) {
- x %= value;
- y %= value;
- z %= value;
- w %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Int4 mod(Int4 a, int b) {
- Int4 result = new Int4();
- result.x = a.x % b;
- result.y = a.y % b;
- result.z = a.z % b;
- result.w = a.w % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public int length() {
- return 4;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- this.z = -z;
- this.w = -w;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public int dotProduct(Int4 a) {
- return (int)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static int dotProduct(Int4 a, Int4 b) {
- return (int)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Int4 a, int factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * set vector value by Int4
- *
- * @param a
- */
- public void set(Int4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * set the vector field value by Int
- *
- * @param a
- * @param b
- * @param c
- * @param d
- */
- public void setValues(int a, int b, int c, int d) {
- this.x = a;
- this.y = b;
- this.z = c;
- this.w = d;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public int elementSum() {
- return (int)(x + y + z + w);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public int get(int i) {
- switch (i) {
- case 0:
- return (int)(x);
- case 1:
- return (int)(y);
- case 2:
- return (int)(z);
- case 3:
- return (int)(w);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, int value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, int value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to int array
- *
- * @param data
- * @param offset
- */
- public void copyTo(int[] data, int offset) {
- data[offset] = (int)(x);
- data[offset + 1] = (int)(y);
- data[offset + 2] = (int)(z);
- data[offset + 3] = (int)(w);
- }
-}
diff --git a/graphics/java/android/renderscript/Long2.java b/graphics/java/android/renderscript/Long2.java
deleted file mode 100644
index fabf204..0000000
--- a/graphics/java/android/renderscript/Long2.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic long type.
- * Provides two long fields packed.
- */
-public class Long2 {
- public long x;
- public long y;
-
- public Long2() {
- }
-
- /** @hide */
- public Long2(long i) {
- this.x = this.y = i;
- }
-
- public Long2(long x, long y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide */
- public Long2(Long2 source) {
- this.x = source.x;
- this.y = source.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Long2 a) {
- this.x += a.x;
- this.y += a.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 add(Long2 a, Long2 b) {
- Long2 result = new Long2();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(long value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 add(Long2 a, long b) {
- Long2 result = new Long2();
- result.x = a.x + b;
- result.y = a.y + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Long2 a) {
- this.x -= a.x;
- this.y -= a.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 sub(Long2 a, Long2 b) {
- Long2 result = new Long2();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(long value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 sub(Long2 a, long b) {
- Long2 result = new Long2();
- result.x = a.x - b;
- result.y = a.y - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Long2 a) {
- this.x *= a.x;
- this.y *= a.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 mul(Long2 a, Long2 b) {
- Long2 result = new Long2();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(long value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 mul(Long2 a, long b) {
- Long2 result = new Long2();
- result.x = a.x * b;
- result.y = a.y * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Long2 a) {
- this.x /= a.x;
- this.y /= a.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 div(Long2 a, Long2 b) {
- Long2 result = new Long2();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(long value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 div(Long2 a, long b) {
- Long2 result = new Long2();
- result.x = a.x / b;
- result.y = a.y / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Long2 a) {
- this.x %= a.x;
- this.y %= a.y;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 mod(Long2 a, Long2 b) {
- Long2 result = new Long2();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(long value) {
- x %= value;
- y %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long2 mod(Long2 a, long b) {
- Long2 result = new Long2();
- result.x = a.x % b;
- result.y = a.y % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public long length() {
- return 2;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public long dotProduct(Long2 a) {
- return (long)((x * a.x) + (y * a.y));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static long dotProduct(Long2 a, Long2 b) {
- return (long)((b.x * a.x) + (b.y * a.y));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Long2 a, long factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * set vector value by Long2
- *
- * @param a
- */
- public void set(Long2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * set the vector field value by Long
- *
- * @param a
- * @param b
- */
- public void setValues(long a, long b) {
- this.x = a;
- this.y = b;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public long elementSum() {
- return (long)(x + y);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public long get(int i) {
- switch (i) {
- case 0:
- return (long)(x);
- case 1:
- return (long)(y);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, long value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, long value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to long array
- *
- * @param data
- * @param offset
- */
- public void copyTo(long[] data, int offset) {
- data[offset] = (long)(x);
- data[offset + 1] = (long)(y);
- }
-}
diff --git a/graphics/java/android/renderscript/Long3.java b/graphics/java/android/renderscript/Long3.java
deleted file mode 100644
index 8e243cc..0000000
--- a/graphics/java/android/renderscript/Long3.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic long type.
- * Provides three long fields packed.
- */
-public class Long3 {
- public long x;
- public long y;
- public long z;
-
- public Long3() {
- }
-
- /** @hide */
- public Long3(long i) {
- this.x = this.y = this.z = i;
- }
-
- public Long3(long x, long y, long z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide */
- public Long3(Long3 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Long3 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 add(Long3 a, Long3 b) {
- Long3 result = new Long3();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
- result.z = a.z + b.z;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(long value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 add(Long3 a, long b) {
- Long3 result = new Long3();
- result.x = a.x + b;
- result.y = a.y + b;
- result.z = a.z + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Long3 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 sub(Long3 a, Long3 b) {
- Long3 result = new Long3();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
- result.z = a.z - b.z;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(long value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 sub(Long3 a, long b) {
- Long3 result = new Long3();
- result.x = a.x - b;
- result.y = a.y - b;
- result.z = a.z - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Long3 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 mul(Long3 a, Long3 b) {
- Long3 result = new Long3();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
- result.z = a.z * b.z;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(long value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 mul(Long3 a, long b) {
- Long3 result = new Long3();
- result.x = a.x * b;
- result.y = a.y * b;
- result.z = a.z * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Long3 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 div(Long3 a, Long3 b) {
- Long3 result = new Long3();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
- result.z = a.z / b.z;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(long value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 div(Long3 a, long b) {
- Long3 result = new Long3();
- result.x = a.x / b;
- result.y = a.y / b;
- result.z = a.z / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Long3 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 mod(Long3 a, Long3 b) {
- Long3 result = new Long3();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
- result.z = a.z % b.z;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(long value) {
- x %= value;
- y %= value;
- z %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long3 mod(Long3 a, long b) {
- Long3 result = new Long3();
- result.x = a.x % b;
- result.y = a.y % b;
- result.z = a.z % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public long length() {
- return 3;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- this.z = -z;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public long dotProduct(Long3 a) {
- return (long)((x * a.x) + (y * a.y) + (z * a.z));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static long dotProduct(Long3 a, Long3 b) {
- return (long)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Long3 a, long factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * set vector value by Long3
- *
- * @param a
- */
- public void set(Long3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * set the vector field value by Long
- *
- * @param a
- * @param b
- * @param c
- */
- public void setValues(long a, long b, long c) {
- this.x = a;
- this.y = b;
- this.z = c;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public long elementSum() {
- return (long)(x + y + z);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public long get(int i) {
- switch (i) {
- case 0:
- return (long)(x);
- case 1:
- return (long)(y);
- case 2:
- return (long)(z);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, long value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, long value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to long array
- *
- * @param data
- * @param offset
- */
- public void copyTo(long[] data, int offset) {
- data[offset] = (long)(x);
- data[offset + 1] = (long)(y);
- data[offset + 2] = (long)(z);
- }
-}
diff --git a/graphics/java/android/renderscript/Long4.java b/graphics/java/android/renderscript/Long4.java
deleted file mode 100644
index 757b910..0000000
--- a/graphics/java/android/renderscript/Long4.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic long type.
- * Provides four long fields packed.
- */
-public class Long4 {
- public long x;
- public long y;
- public long z;
- public long w;
-
- public Long4() {
- }
-
- /** @hide */
- public Long4(long i) {
- this.x = this.y = this.z = this.w = i;
- }
-
- public Long4(long x, long y, long z, long w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide */
- public Long4(Long4 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- this.w = source.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Long4 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- this.w += a.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 add(Long4 a, Long4 b) {
- Long4 result = new Long4();
- result.x = a.x + b.x;
- result.y = a.y + b.y;
- result.z = a.z + b.z;
- result.w = a.w + b.w;
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(long value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 add(Long4 a, long b) {
- Long4 result = new Long4();
- result.x = a.x + b;
- result.y = a.y + b;
- result.z = a.z + b;
- result.w = a.w + b;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Long4 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- this.w -= a.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 sub(Long4 a, Long4 b) {
- Long4 result = new Long4();
- result.x = a.x - b.x;
- result.y = a.y - b.y;
- result.z = a.z - b.z;
- result.w = a.w - b.w;
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(long value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 sub(Long4 a, long b) {
- Long4 result = new Long4();
- result.x = a.x - b;
- result.y = a.y - b;
- result.z = a.z - b;
- result.w = a.w - b;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Long4 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- this.w *= a.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 mul(Long4 a, Long4 b) {
- Long4 result = new Long4();
- result.x = a.x * b.x;
- result.y = a.y * b.y;
- result.z = a.z * b.z;
- result.w = a.w * b.w;
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(long value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 mul(Long4 a, long b) {
- Long4 result = new Long4();
- result.x = a.x * b;
- result.y = a.y * b;
- result.z = a.z * b;
- result.w = a.w * b;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Long4 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- this.w /= a.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 div(Long4 a, Long4 b) {
- Long4 result = new Long4();
- result.x = a.x / b.x;
- result.y = a.y / b.y;
- result.z = a.z / b.z;
- result.w = a.w / b.w;
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(long value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 div(Long4 a, long b) {
- Long4 result = new Long4();
- result.x = a.x / b;
- result.y = a.y / b;
- result.z = a.z / b;
- result.w = a.w / b;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Long4 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- this.w %= a.w;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 mod(Long4 a, Long4 b) {
- Long4 result = new Long4();
- result.x = a.x % b.x;
- result.y = a.y % b.y;
- result.z = a.z % b.z;
- result.w = a.w % b.w;
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(long value) {
- x %= value;
- y %= value;
- z %= value;
- w %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Long4 mod(Long4 a, long b) {
- Long4 result = new Long4();
- result.x = a.x % b;
- result.y = a.y % b;
- result.z = a.z % b;
- result.w = a.w % b;
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public long length() {
- return 4;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = -x;
- this.y = -y;
- this.z = -z;
- this.w = -w;
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public long dotProduct(Long4 a) {
- return (long)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static long dotProduct(Long4 a, Long4 b) {
- return (long)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Long4 a, long factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * set vector value by Long4
- *
- * @param a
- */
- public void set(Long4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * set the vector field value by Long
- *
- * @param a
- * @param b
- * @param c
- * @param d
- */
- public void setValues(long a, long b, long c, long d) {
- this.x = a;
- this.y = b;
- this.z = c;
- this.w = d;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public long elementSum() {
- return (long)(x + y + z + w);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public long get(int i) {
- switch (i) {
- case 0:
- return (long)(x);
- case 1:
- return (long)(y);
- case 2:
- return (long)(z);
- case 3:
- return (long)(w);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, long value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, long value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to long array
- *
- * @param data
- * @param offset
- */
- public void copyTo(Long[] data, int offset) {
- data[offset] = (long)(x);
- data[offset + 1] = (long)(y);
- data[offset + 2] = (long)(z);
- data[offset + 3] = (long)(w);
- }
-}
diff --git a/graphics/java/android/renderscript/Matrix2f.java b/graphics/java/android/renderscript/Matrix2f.java
deleted file mode 100644
index 048262d..0000000
--- a/graphics/java/android/renderscript/Matrix2f.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2009-2012 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;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix2x2 type back to the Android system.
- *
- **/
-public class Matrix2f {
-
- /**
- * Creates a new identity 2x2 matrix
- */
- public Matrix2f() {
- mMat = new float[4];
- loadIdentity();
- }
-
- /**
- * Creates a new matrix and sets its values from the given
- * parameter
- *
- * @param dataArray values to set the matrix to, must be 4
- * floats long
- */
- public Matrix2f(float[] dataArray) {
- mMat = new float[4];
- System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
- }
-
- /**
- * Return a reference to the internal array representing matrix
- * values. Modifying this array will also change the matrix
- *
- * @return internal array representing the matrix
- */
- public float[] getArray() {
- return mMat;
- }
-
- /**
- * Returns the value for a given row and column
- *
- * @param x column of the value to return
- * @param y row of the value to return
- *
- * @return value in the yth row and xth column
- */
- public float get(int x, int y) {
- return mMat[x*2 + y];
- }
-
- /**
- * Sets the value for a given row and column
- *
- * @param x column of the value to set
- * @param y row of the value to set
- */
- public void set(int x, int y, float v) {
- mMat[x*2 + y] = v;
- }
-
- /**
- * Sets the matrix values to identity
- */
- public void loadIdentity() {
- mMat[0] = 1;
- mMat[1] = 0;
-
- mMat[2] = 0;
- mMat[3] = 1;
- }
-
- /**
- * Sets the values of the matrix to those of the parameter
- *
- * @param src matrix to load the values from
- */
- public void load(Matrix2f src) {
- System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
- }
-
- /**
- * Sets current values to be a rotation matrix of given angle
- *
- * @param rot rotation angle
- */
- public void loadRotate(float rot) {
- float c, s;
- rot *= (float)(java.lang.Math.PI / 180.0f);
- c = (float)java.lang.Math.cos(rot);
- s = (float)java.lang.Math.sin(rot);
- mMat[0] = c;
- mMat[1] = -s;
- mMat[2] = s;
- mMat[3] = c;
- }
-
- /**
- * Sets current values to be a scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- */
- public void loadScale(float x, float y) {
- loadIdentity();
- mMat[0] = x;
- mMat[3] = y;
- }
-
- /**
- * Sets current values to be the result of multiplying two given
- * matrices
- *
- * @param lhs left hand side matrix
- * @param rhs right hand side matrix
- */
- public void loadMultiply(Matrix2f lhs, Matrix2f rhs) {
- for (int i=0 ; i<2 ; i++) {
- float ri0 = 0;
- float ri1 = 0;
- for (int j=0 ; j<2 ; j++) {
- float rhs_ij = rhs.get(i,j);
- ri0 += lhs.get(j,0) * rhs_ij;
- ri1 += lhs.get(j,1) * rhs_ij;
- }
- set(i,0, ri0);
- set(i,1, ri1);
- }
- }
-
- /**
- * Post-multiplies the current matrix by a given parameter
- *
- * @param rhs right hand side to multiply by
- */
- public void multiply(Matrix2f rhs) {
- Matrix2f tmp = new Matrix2f();
- tmp.loadMultiply(this, rhs);
- load(tmp);
- }
- /**
- * Modifies the current matrix by post-multiplying it with a
- * rotation matrix of given angle
- *
- * @param rot angle of rotation
- */
- public void rotate(float rot) {
- Matrix2f tmp = new Matrix2f();
- tmp.loadRotate(rot);
- multiply(tmp);
- }
- /**
- * Modifies the current matrix by post-multiplying it with a
- * scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- */
- public void scale(float x, float y) {
- Matrix2f tmp = new Matrix2f();
- tmp.loadScale(x, y);
- multiply(tmp);
- }
- /**
- * Sets the current matrix to its transpose
- */
- public void transpose() {
- float temp = mMat[1];
- mMat[1] = mMat[2];
- mMat[2] = temp;
- }
-
- final float[] mMat;
-}
-
-
-
diff --git a/graphics/java/android/renderscript/Matrix3f.java b/graphics/java/android/renderscript/Matrix3f.java
deleted file mode 100644
index 9a4af77..0000000
--- a/graphics/java/android/renderscript/Matrix3f.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (C) 2009-2012 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;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix3x3 type back to the Android system.
- *
- **/
-public class Matrix3f {
-
- /**
- * Creates a new identity 3x3 matrix
- */
- public Matrix3f() {
- mMat = new float[9];
- loadIdentity();
- }
-
- /**
- * Creates a new matrix and sets its values from the given
- * parameter
- *
- * @param dataArray values to set the matrix to, must be 9
- * floats long
- */
- public Matrix3f(float[] dataArray) {
- mMat = new float[9];
- System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
- }
-
- /**
- * Return a reference to the internal array representing matrix
- * values. Modifying this array will also change the matrix
- *
- * @return internal array representing the matrix
- */
- public float[] getArray() {
- return mMat;
- }
-
- /**
- * Returns the value for a given row and column
- *
- * @param x column of the value to return
- * @param y row of the value to return
- *
- * @return value in the yth row and xth column
- */
- public float get(int x, int y) {
- return mMat[x*3 + y];
- }
-
- /**
- * Sets the value for a given row and column
- *
- * @param x column of the value to set
- * @param y row of the value to set
- */
- public void set(int x, int y, float v) {
- mMat[x*3 + y] = v;
- }
-
- /**
- * Sets the matrix values to identity
- */
- public void loadIdentity() {
- mMat[0] = 1;
- mMat[1] = 0;
- mMat[2] = 0;
-
- mMat[3] = 0;
- mMat[4] = 1;
- mMat[5] = 0;
-
- mMat[6] = 0;
- mMat[7] = 0;
- mMat[8] = 1;
- }
-
- /**
- * Sets the values of the matrix to those of the parameter
- *
- * @param src matrix to load the values from
- */
- public void load(Matrix3f src) {
- System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
- }
-
- /**
- * Sets current values to be a rotation matrix of certain angle
- * about a given axis
- *
- * @param rot angle of rotation
- * @param x rotation axis x
- * @param y rotation axis y
- * @param z rotation axis z
- */
- public void loadRotate(float rot, float x, float y, float z) {
- float c, s;
- rot *= (float)(java.lang.Math.PI / 180.0f);
- c = (float)java.lang.Math.cos(rot);
- s = (float)java.lang.Math.sin(rot);
-
- float len = (float)java.lang.Math.sqrt(x*x + y*y + z*z);
- if (!(len != 1)) {
- float recipLen = 1.f / len;
- x *= recipLen;
- y *= recipLen;
- z *= recipLen;
- }
- float nc = 1.0f - c;
- float xy = x * y;
- float yz = y * z;
- float zx = z * x;
- float xs = x * s;
- float ys = y * s;
- float zs = z * s;
- mMat[0] = x*x*nc + c;
- mMat[3] = xy*nc - zs;
- mMat[6] = zx*nc + ys;
- mMat[1] = xy*nc + zs;
- mMat[4] = y*y*nc + c;
- mMat[7] = yz*nc - xs;
- mMat[2] = zx*nc - ys;
- mMat[5] = yz*nc + xs;
- mMat[8] = z*z*nc + c;
- }
-
- /**
- * Makes the upper 2x2 a rotation matrix of the given angle
- *
- * @param rot rotation angle
- */
- public void loadRotate(float rot) {
- loadIdentity();
- float c, s;
- rot *= (float)(java.lang.Math.PI / 180.0f);
- c = (float)java.lang.Math.cos(rot);
- s = (float)java.lang.Math.sin(rot);
- mMat[0] = c;
- mMat[1] = -s;
- mMat[3] = s;
- mMat[4] = c;
- }
-
- /**
- * Makes the upper 2x2 a scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- */
- public void loadScale(float x, float y) {
- loadIdentity();
- mMat[0] = x;
- mMat[4] = y;
- }
-
- /**
- * Sets current values to be a scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- * @param z scale component z
- */
- public void loadScale(float x, float y, float z) {
- loadIdentity();
- mMat[0] = x;
- mMat[4] = y;
- mMat[8] = z;
- }
-
- /**
- * Sets current values to be a translation matrix of given
- * dimensions
- *
- * @param x translation component x
- * @param y translation component y
- */
- public void loadTranslate(float x, float y) {
- loadIdentity();
- mMat[6] = x;
- mMat[7] = y;
- }
-
- /**
- * Sets current values to be the result of multiplying two given
- * matrices
- *
- * @param lhs left hand side matrix
- * @param rhs right hand side matrix
- */
- public void loadMultiply(Matrix3f lhs, Matrix3f rhs) {
- for (int i=0 ; i<3 ; i++) {
- float ri0 = 0;
- float ri1 = 0;
- float ri2 = 0;
- for (int j=0 ; j<3 ; j++) {
- float rhs_ij = rhs.get(i,j);
- ri0 += lhs.get(j,0) * rhs_ij;
- ri1 += lhs.get(j,1) * rhs_ij;
- ri2 += lhs.get(j,2) * rhs_ij;
- }
- set(i,0, ri0);
- set(i,1, ri1);
- set(i,2, ri2);
- }
- }
-
- /**
- * Post-multiplies the current matrix by a given parameter
- *
- * @param rhs right hand side to multiply by
- */
- public void multiply(Matrix3f rhs) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadMultiply(this, rhs);
- load(tmp);
- }
-
- /**
- * Modifies the current matrix by post-multiplying it with a
- * rotation matrix of certain angle about a given axis
- *
- * @param rot angle of rotation
- * @param x rotation axis x
- * @param y rotation axis y
- * @param z rotation axis z
- */
- public void rotate(float rot, float x, float y, float z) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadRotate(rot, x, y, z);
- multiply(tmp);
- }
-
- /**
- * Modifies the upper 2x2 of the current matrix by
- * post-multiplying it with a rotation matrix of given angle
- *
- * @param rot angle of rotation
- */
- public void rotate(float rot) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadRotate(rot);
- multiply(tmp);
- }
-
- /**
- * Modifies the upper 2x2 of the current matrix by
- * post-multiplying it with a scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- */
- public void scale(float x, float y) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadScale(x, y);
- multiply(tmp);
- }
-
- /**
- * Modifies the current matrix by post-multiplying it with a
- * scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- * @param z scale component z
- */
- public void scale(float x, float y, float z) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadScale(x, y, z);
- multiply(tmp);
- }
-
- /**
- * Modifies the current matrix by post-multiplying it with a
- * translation matrix of given dimensions
- *
- * @param x translation component x
- * @param y translation component y
- */
- public void translate(float x, float y) {
- Matrix3f tmp = new Matrix3f();
- tmp.loadTranslate(x, y);
- multiply(tmp);
- }
-
- /**
- * Sets the current matrix to its transpose
- */
- public void transpose() {
- for(int i = 0; i < 2; ++i) {
- for(int j = i + 1; j < 3; ++j) {
- float temp = mMat[i*3 + j];
- mMat[i*3 + j] = mMat[j*3 + i];
- mMat[j*3 + i] = temp;
- }
- }
- }
-
- final float[] mMat;
-}
-
-
diff --git a/graphics/java/android/renderscript/Matrix4f.java b/graphics/java/android/renderscript/Matrix4f.java
deleted file mode 100644
index 5d5bf5f..0000000
--- a/graphics/java/android/renderscript/Matrix4f.java
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * Copyright (C) 2009-2012 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.lang.Math;
-
-
-/**
- * Class for exposing the native RenderScript rs_matrix4x4 type back to the Android system.
- *
- **/
-public class Matrix4f {
-
- /**
- * Creates a new identity 4x4 matrix
- */
- public Matrix4f() {
- mMat = new float[16];
- loadIdentity();
- }
-
- /**
- * Creates a new matrix and sets its values from the given
- * parameter
- *
- * @param dataArray values to set the matrix to, must be 16
- * floats long
- */
- public Matrix4f(float[] dataArray) {
- mMat = new float[16];
- System.arraycopy(dataArray, 0, mMat, 0, mMat.length);
- }
-
- /**
- * Return a reference to the internal array representing matrix
- * values. Modifying this array will also change the matrix
- *
- * @return internal array representing the matrix
- */
- public float[] getArray() {
- return mMat;
- }
-
- /**
- * Returns the value for a given row and column
- *
- * @param x column of the value to return
- * @param y row of the value to return
- *
- * @return value in the yth row and xth column
- */
- public float get(int x, int y) {
- return mMat[x*4 + y];
- }
-
- /**
- * Sets the value for a given row and column
- *
- * @param x column of the value to set
- * @param y row of the value to set
- */
- public void set(int x, int y, float v) {
- mMat[x*4 + y] = v;
- }
-
- /**
- * Sets the matrix values to identity
- */
- public void loadIdentity() {
- mMat[0] = 1;
- mMat[1] = 0;
- mMat[2] = 0;
- mMat[3] = 0;
-
- mMat[4] = 0;
- mMat[5] = 1;
- mMat[6] = 0;
- mMat[7] = 0;
-
- mMat[8] = 0;
- mMat[9] = 0;
- mMat[10] = 1;
- mMat[11] = 0;
-
- mMat[12] = 0;
- mMat[13] = 0;
- mMat[14] = 0;
- mMat[15] = 1;
- }
-
- /**
- * Sets the values of the matrix to those of the parameter
- *
- * @param src matrix to load the values from
- */
- public void load(Matrix4f src) {
- System.arraycopy(src.getArray(), 0, mMat, 0, mMat.length);
- }
-
- /**
- * Sets the values of the matrix to those of the parameter
- *
- * @param src matrix to load the values from
- * @hide
- */
- public void load(Matrix3f src) {
- mMat[0] = src.mMat[0];
- mMat[1] = src.mMat[1];
- mMat[2] = src.mMat[2];
- mMat[3] = 0;
-
- mMat[4] = src.mMat[3];
- mMat[5] = src.mMat[4];
- mMat[6] = src.mMat[5];
- mMat[7] = 0;
-
- mMat[8] = src.mMat[6];
- mMat[9] = src.mMat[7];
- mMat[10] = src.mMat[8];
- mMat[11] = 0;
-
- mMat[12] = 0;
- mMat[13] = 0;
- mMat[14] = 0;
- mMat[15] = 1;
- }
-
- /**
- * Sets current values to be a rotation matrix of certain angle
- * about a given axis
- *
- * @param rot angle of rotation
- * @param x rotation axis x
- * @param y rotation axis y
- * @param z rotation axis z
- */
- public void loadRotate(float rot, float x, float y, float z) {
- float c, s;
- mMat[3] = 0;
- mMat[7] = 0;
- mMat[11]= 0;
- mMat[12]= 0;
- mMat[13]= 0;
- mMat[14]= 0;
- mMat[15]= 1;
- rot *= (float)(java.lang.Math.PI / 180.0f);
- c = (float)java.lang.Math.cos(rot);
- s = (float)java.lang.Math.sin(rot);
-
- float len = (float)java.lang.Math.sqrt(x*x + y*y + z*z);
- if (!(len != 1)) {
- float recipLen = 1.f / len;
- x *= recipLen;
- y *= recipLen;
- z *= recipLen;
- }
- float nc = 1.0f - c;
- float xy = x * y;
- float yz = y * z;
- float zx = z * x;
- float xs = x * s;
- float ys = y * s;
- float zs = z * s;
- mMat[ 0] = x*x*nc + c;
- mMat[ 4] = xy*nc - zs;
- mMat[ 8] = zx*nc + ys;
- mMat[ 1] = xy*nc + zs;
- mMat[ 5] = y*y*nc + c;
- mMat[ 9] = yz*nc - xs;
- mMat[ 2] = zx*nc - ys;
- mMat[ 6] = yz*nc + xs;
- mMat[10] = z*z*nc + c;
- }
-
- /**
- * Sets current values to be a scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- * @param z scale component z
- */
- public void loadScale(float x, float y, float z) {
- loadIdentity();
- mMat[0] = x;
- mMat[5] = y;
- mMat[10] = z;
- }
-
- /**
- * Sets current values to be a translation matrix of given
- * dimensions
- *
- * @param x translation component x
- * @param y translation component y
- * @param z translation component z
- */
- public void loadTranslate(float x, float y, float z) {
- loadIdentity();
- mMat[12] = x;
- mMat[13] = y;
- mMat[14] = z;
- }
-
- /**
- * Sets current values to be the result of multiplying two given
- * matrices
- *
- * @param lhs left hand side matrix
- * @param rhs right hand side matrix
- */
- public void loadMultiply(Matrix4f lhs, Matrix4f rhs) {
- for (int i=0 ; i<4 ; i++) {
- float ri0 = 0;
- float ri1 = 0;
- float ri2 = 0;
- float ri3 = 0;
- for (int j=0 ; j<4 ; j++) {
- float rhs_ij = rhs.get(i,j);
- ri0 += lhs.get(j,0) * rhs_ij;
- ri1 += lhs.get(j,1) * rhs_ij;
- ri2 += lhs.get(j,2) * rhs_ij;
- ri3 += lhs.get(j,3) * rhs_ij;
- }
- set(i,0, ri0);
- set(i,1, ri1);
- set(i,2, ri2);
- set(i,3, ri3);
- }
- }
-
- /**
- * Set current values to be an orthographic projection matrix
- *
- * @param l location of the left vertical clipping plane
- * @param r location of the right vertical clipping plane
- * @param b location of the bottom horizontal clipping plane
- * @param t location of the top horizontal clipping plane
- * @param n location of the near clipping plane
- * @param f location of the far clipping plane
- */
- public void loadOrtho(float l, float r, float b, float t, float n, float f) {
- loadIdentity();
- mMat[0] = 2 / (r - l);
- mMat[5] = 2 / (t - b);
- mMat[10]= -2 / (f - n);
- mMat[12]= -(r + l) / (r - l);
- mMat[13]= -(t + b) / (t - b);
- mMat[14]= -(f + n) / (f - n);
- }
-
- /**
- * Set current values to be an orthographic projection matrix
- * with the right and bottom clipping planes set to the given
- * values. Left and top clipping planes are set to 0. Near and
- * far are set to -1, 1 respectively
- *
- * @param w location of the right vertical clipping plane
- * @param h location of the bottom horizontal clipping plane
- *
- */
- public void loadOrthoWindow(int w, int h) {
- loadOrtho(0,w, h,0, -1,1);
- }
-
- /**
- * Sets current values to be a perspective projection matrix
- *
- * @param l location of the left vertical clipping plane
- * @param r location of the right vertical clipping plane
- * @param b location of the bottom horizontal clipping plane
- * @param t location of the top horizontal clipping plane
- * @param n location of the near clipping plane, must be positive
- * @param f location of the far clipping plane, must be positive
- *
- */
- public void loadFrustum(float l, float r, float b, float t, float n, float f) {
- loadIdentity();
- mMat[0] = 2 * n / (r - l);
- mMat[5] = 2 * n / (t - b);
- mMat[8] = (r + l) / (r - l);
- mMat[9] = (t + b) / (t - b);
- mMat[10]= -(f + n) / (f - n);
- mMat[11]= -1;
- mMat[14]= -2*f*n / (f - n);
- mMat[15]= 0;
- }
-
- /**
- * Sets current values to be a perspective projection matrix
- *
- * @param fovy vertical field of view angle in degrees
- * @param aspect aspect ratio of the screen
- * @param near near cliping plane, must be positive
- * @param far far clipping plane, must be positive
- */
- public void loadPerspective(float fovy, float aspect, float near, float far) {
- float top = near * (float)Math.tan((float) (fovy * Math.PI / 360.0f));
- float bottom = -top;
- float left = bottom * aspect;
- float right = top * aspect;
- loadFrustum(left, right, bottom, top, near, far);
- }
-
- /**
- * Helper function to set the current values to a perspective
- * projection matrix with aspect ratio defined by the parameters
- * and (near, far), (bottom, top) mapping to (-1, 1) at z = 0
- *
- * @param w screen width
- * @param h screen height
- */
- public void loadProjectionNormalized(int w, int h) {
- // range -1,1 in the narrow axis at z = 0.
- Matrix4f m1 = new Matrix4f();
- Matrix4f m2 = new Matrix4f();
-
- if(w > h) {
- float aspect = ((float)w) / h;
- m1.loadFrustum(-aspect,aspect, -1,1, 1,100);
- } else {
- float aspect = ((float)h) / w;
- m1.loadFrustum(-1,1, -aspect,aspect, 1,100);
- }
-
- m2.loadRotate(180, 0, 1, 0);
- m1.loadMultiply(m1, m2);
-
- m2.loadScale(-2, 2, 1);
- m1.loadMultiply(m1, m2);
-
- m2.loadTranslate(0, 0, 2);
- m1.loadMultiply(m1, m2);
-
- load(m1);
- }
-
- /**
- * Post-multiplies the current matrix by a given parameter
- *
- * @param rhs right hand side to multiply by
- */
- public void multiply(Matrix4f rhs) {
- Matrix4f tmp = new Matrix4f();
- tmp.loadMultiply(this, rhs);
- load(tmp);
- }
- /**
- * Modifies the current matrix by post-multiplying it with a
- * rotation matrix of certain angle about a given axis
- *
- * @param rot angle of rotation
- * @param x rotation axis x
- * @param y rotation axis y
- * @param z rotation axis z
- */
- public void rotate(float rot, float x, float y, float z) {
- Matrix4f tmp = new Matrix4f();
- tmp.loadRotate(rot, x, y, z);
- multiply(tmp);
- }
-
- /**
- * Modifies the current matrix by post-multiplying it with a
- * scale matrix of given dimensions
- *
- * @param x scale component x
- * @param y scale component y
- * @param z scale component z
- */
- public void scale(float x, float y, float z) {
- Matrix4f tmp = new Matrix4f();
- tmp.loadScale(x, y, z);
- multiply(tmp);
- }
-
- /**
- * Modifies the current matrix by post-multiplying it with a
- * translation matrix of given dimensions
- *
- * @param x translation component x
- * @param y translation component y
- * @param z translation component z
- */
- public void translate(float x, float y, float z) {
- Matrix4f tmp = new Matrix4f();
- tmp.loadTranslate(x, y, z);
- multiply(tmp);
- }
- private float computeCofactor(int i, int j) {
- int c0 = (i+1) % 4;
- int c1 = (i+2) % 4;
- int c2 = (i+3) % 4;
- int r0 = (j+1) % 4;
- int r1 = (j+2) % 4;
- int r2 = (j+3) % 4;
-
- float minor = (mMat[c0 + 4*r0] * (mMat[c1 + 4*r1] * mMat[c2 + 4*r2] -
- mMat[c1 + 4*r2] * mMat[c2 + 4*r1]))
- - (mMat[c0 + 4*r1] * (mMat[c1 + 4*r0] * mMat[c2 + 4*r2] -
- mMat[c1 + 4*r2] * mMat[c2 + 4*r0]))
- + (mMat[c0 + 4*r2] * (mMat[c1 + 4*r0] * mMat[c2 + 4*r1] -
- mMat[c1 + 4*r1] * mMat[c2 + 4*r0]));
-
- float cofactor = ((i+j) & 1) != 0 ? -minor : minor;
- return cofactor;
- }
-
- /**
- * Sets the current matrix to its inverse
- */
- public boolean inverse() {
-
- Matrix4f result = new Matrix4f();
-
- for (int i = 0; i < 4; ++i) {
- for (int j = 0; j < 4; ++j) {
- result.mMat[4*i + j] = computeCofactor(i, j);
- }
- }
-
- // Dot product of 0th column of source and 0th row of result
- float det = mMat[0]*result.mMat[0] + mMat[4]*result.mMat[1] +
- mMat[8]*result.mMat[2] + mMat[12]*result.mMat[3];
-
- if (Math.abs(det) < 1e-6) {
- return false;
- }
-
- det = 1.0f / det;
- for (int i = 0; i < 16; ++i) {
- mMat[i] = result.mMat[i] * det;
- }
-
- return true;
- }
-
- /**
- * Sets the current matrix to its inverse transpose
- */
- public boolean inverseTranspose() {
-
- Matrix4f result = new Matrix4f();
-
- for (int i = 0; i < 4; ++i) {
- for (int j = 0; j < 4; ++j) {
- result.mMat[4*j + i] = computeCofactor(i, j);
- }
- }
-
- float det = mMat[0]*result.mMat[0] + mMat[4]*result.mMat[4] +
- mMat[8]*result.mMat[8] + mMat[12]*result.mMat[12];
-
- if (Math.abs(det) < 1e-6) {
- return false;
- }
-
- det = 1.0f / det;
- for (int i = 0; i < 16; ++i) {
- mMat[i] = result.mMat[i] * det;
- }
-
- return true;
- }
-
- /**
- * Sets the current matrix to its transpose
- */
- public void transpose() {
- for(int i = 0; i < 3; ++i) {
- for(int j = i + 1; j < 4; ++j) {
- float temp = mMat[i*4 + j];
- mMat[i*4 + j] = mMat[j*4 + i];
- mMat[j*4 + i] = temp;
- }
- }
- }
-
- final float[] mMat;
-}
diff --git a/graphics/java/android/renderscript/Mesh.java b/graphics/java/android/renderscript/Mesh.java
deleted file mode 100644
index a4ecc38..0000000
--- a/graphics/java/android/renderscript/Mesh.java
+++ /dev/null
@@ -1,828 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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.util.Vector;
-
-/**
- * @hide
- * @deprecated in API 16
- * <p>This class is a container for geometric data displayed with
- * RenderScript. Internally, a mesh is a collection of allocations that
- * represent vertex data (positions, normals, texture
- * coordinates) and index data such as triangles and lines. </p>
- * <p>
- * Vertex data could either be interleaved within one
- * allocation that is provided separately, as multiple allocation
- * objects, or done as a combination of both. When a
- * vertex channel name matches an input in the vertex program,
- * RenderScript automatically connects the two together.
- * </p>
- * <p>
- * Parts of the mesh can be rendered with either explicit
- * index sets or primitive types.
- * </p>
- **/
-public class Mesh extends BaseObj {
-
- /**
- * @deprecated in API 16
- * Describes the way mesh vertex data is interpreted when rendering
- *
- **/
- public enum Primitive {
- /**
- * @deprecated in API 16
- * Vertex data will be rendered as a series of points
- */
- POINT (0),
- /**
- * @deprecated in API 16
- * Vertex pairs will be rendered as lines
- */
- LINE (1),
- /**
- * @deprecated in API 16
- * Vertex data will be rendered as a connected line strip
- */
- LINE_STRIP (2),
- /**
- * @deprecated in API 16
- * Vertices will be rendered as individual triangles
- */
- TRIANGLE (3),
- /**
- * @deprecated in API 16
- * Vertices will be rendered as a connected triangle strip
- * defined by the first three vertices with each additional
- * triangle defined by a new vertex
- */
- TRIANGLE_STRIP (4),
- /**
- * @deprecated in API 16
- * Vertices will be rendered as a sequence of triangles that all
- * share first vertex as the origin
- */
- TRIANGLE_FAN (5);
-
- int mID;
- Primitive(int id) {
- mID = id;
- }
- }
-
- Allocation[] mVertexBuffers;
- Allocation[] mIndexBuffers;
- Primitive[] mPrimitives;
-
- Mesh(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @deprecated in API 16
- * @return number of allocations containing vertex data
- *
- **/
- public int getVertexAllocationCount() {
- if(mVertexBuffers == null) {
- return 0;
- }
- return mVertexBuffers.length;
- }
- /**
- * @deprecated in API 16
- * @param slot index in the list of allocations to return
- * @return vertex data allocation at the given index
- *
- **/
- public Allocation getVertexAllocation(int slot) {
- return mVertexBuffers[slot];
- }
-
- /**
- * @deprecated in API 16
- * @return number of primitives or index sets in the mesh
- *
- **/
- public int getPrimitiveCount() {
- if(mIndexBuffers == null) {
- return 0;
- }
- return mIndexBuffers.length;
- }
-
- /**
- * @deprecated in API 16
- * @param slot locaton within the list of index set allocation
- * @return allocation containing primtive index data or null if
- * the index data is not specified explicitly
- *
- **/
- public Allocation getIndexSetAllocation(int slot) {
- return mIndexBuffers[slot];
- }
- /**
- * @deprecated in API 16
- * @param slot locaiton within the list of index set primitives
- * @return index set primitive type
- *
- **/
- public Primitive getPrimitive(int slot) {
- return mPrimitives[slot];
- }
-
- @Override
- void updateFromNative() {
- super.updateFromNative();
- int vtxCount = mRS.nMeshGetVertexBufferCount(getID(mRS));
- int idxCount = mRS.nMeshGetIndexCount(getID(mRS));
-
- int[] vtxIDs = new int[vtxCount];
- int[] idxIDs = new int[idxCount];
- int[] primitives = new int[idxCount];
-
- mRS.nMeshGetVertices(getID(mRS), vtxIDs, vtxCount);
- mRS.nMeshGetIndices(getID(mRS), idxIDs, primitives, idxCount);
-
- mVertexBuffers = new Allocation[vtxCount];
- mIndexBuffers = new Allocation[idxCount];
- mPrimitives = new Primitive[idxCount];
-
- for(int i = 0; i < vtxCount; i ++) {
- if(vtxIDs[i] != 0) {
- mVertexBuffers[i] = new Allocation(vtxIDs[i], mRS, null, Allocation.USAGE_SCRIPT);
- mVertexBuffers[i].updateFromNative();
- }
- }
-
- for(int i = 0; i < idxCount; i ++) {
- if(idxIDs[i] != 0) {
- mIndexBuffers[i] = new Allocation(idxIDs[i], mRS, null, Allocation.USAGE_SCRIPT);
- mIndexBuffers[i].updateFromNative();
- }
- mPrimitives[i] = Primitive.values()[primitives[i]];
- }
- }
-
- /**
- * @deprecated in API 16
- * Mesh builder object. It starts empty and requires you to
- * add the types necessary to create vertex and index
- * allocations.
- *
- */
- public static class Builder {
- RenderScript mRS;
- int mUsage;
-
- class Entry {
- Type t;
- Element e;
- int size;
- Primitive prim;
- int usage;
- }
-
- int mVertexTypeCount;
- Entry[] mVertexTypes;
- Vector mIndexTypes;
-
- /**
- * @deprecated in API 16
- * Creates builder object
- * @param rs Context to which the mesh will belong.
- * @param usage specifies how the mesh allocations are to be
- * handled, whether they need to be uploaded to a
- * buffer on the gpu, maintain a cpu copy, etc
- */
- public Builder(RenderScript rs, int usage) {
- mRS = rs;
- mUsage = usage;
- mVertexTypeCount = 0;
- mVertexTypes = new Entry[16];
- mIndexTypes = new Vector();
- }
-
- /**
- * @deprecated in API 16
- * @return internal index of the last vertex buffer type added to
- * builder
- **/
- public int getCurrentVertexTypeIndex() {
- return mVertexTypeCount - 1;
- }
-
- /**
- * @deprecated in API 16
- * @return internal index of the last index set added to the
- * builder
- **/
- public int getCurrentIndexSetIndex() {
- return mIndexTypes.size() - 1;
- }
-
- /**
- * @deprecated in API 16
- * Adds a vertex data type to the builder object
- *
- * @param t type of the vertex data allocation to be created
- *
- * @return this
- **/
- public Builder addVertexType(Type t) throws IllegalStateException {
- if (mVertexTypeCount >= mVertexTypes.length) {
- throw new IllegalStateException("Max vertex types exceeded.");
- }
-
- mVertexTypes[mVertexTypeCount] = new Entry();
- mVertexTypes[mVertexTypeCount].t = t;
- mVertexTypes[mVertexTypeCount].e = null;
- mVertexTypeCount++;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds a vertex data type to the builder object
- *
- * @param e element describing the vertex data layout
- * @param size number of elements in the buffer
- *
- * @return this
- **/
- public Builder addVertexType(Element e, int size) throws IllegalStateException {
- if (mVertexTypeCount >= mVertexTypes.length) {
- throw new IllegalStateException("Max vertex types exceeded.");
- }
-
- mVertexTypes[mVertexTypeCount] = new Entry();
- mVertexTypes[mVertexTypeCount].t = null;
- mVertexTypes[mVertexTypeCount].e = e;
- mVertexTypes[mVertexTypeCount].size = size;
- mVertexTypeCount++;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds an index set data type to the builder object
- *
- * @param t type of the index set data, could be null
- * @param p primitive type
- *
- * @return this
- **/
- public Builder addIndexSetType(Type t, Primitive p) {
- Entry indexType = new Entry();
- indexType.t = t;
- indexType.e = null;
- indexType.size = 0;
- indexType.prim = p;
- mIndexTypes.addElement(indexType);
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds an index set primitive type to the builder object
- *
- * @param p primitive type
- *
- * @return this
- **/
- public Builder addIndexSetType(Primitive p) {
- Entry indexType = new Entry();
- indexType.t = null;
- indexType.e = null;
- indexType.size = 0;
- indexType.prim = p;
- mIndexTypes.addElement(indexType);
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds an index set data type to the builder object
- *
- * @param e element describing the index set data layout
- * @param size number of elements in the buffer
- * @param p primitive type
- *
- * @return this
- **/
- public Builder addIndexSetType(Element e, int size, Primitive p) {
- Entry indexType = new Entry();
- indexType.t = null;
- indexType.e = e;
- indexType.size = size;
- indexType.prim = p;
- mIndexTypes.addElement(indexType);
- return this;
- }
-
- Type newType(Element e, int size) {
- Type.Builder tb = new Type.Builder(mRS, e);
- tb.setX(size);
- return tb.create();
- }
-
- /**
- * @deprecated in API 16
- * Create a Mesh object from the current state of the builder
- *
- **/
- public Mesh create() {
- mRS.validate();
- int[] vtx = new int[mVertexTypeCount];
- int[] idx = new int[mIndexTypes.size()];
- int[] prim = new int[mIndexTypes.size()];
-
- Allocation[] vertexBuffers = new Allocation[mVertexTypeCount];
- Allocation[] indexBuffers = new Allocation[mIndexTypes.size()];
- Primitive[] primitives = new Primitive[mIndexTypes.size()];
-
- for(int ct = 0; ct < mVertexTypeCount; ct ++) {
- Allocation alloc = null;
- Entry entry = mVertexTypes[ct];
- if (entry.t != null) {
- alloc = Allocation.createTyped(mRS, entry.t, mUsage);
- } else if(entry.e != null) {
- alloc = Allocation.createSized(mRS, entry.e, entry.size, mUsage);
- }
- vertexBuffers[ct] = alloc;
- vtx[ct] = (int)alloc.getID(mRS);
- }
-
- for(int ct = 0; ct < mIndexTypes.size(); ct ++) {
- Allocation alloc = null;
- Entry entry = (Entry)mIndexTypes.elementAt(ct);
- if (entry.t != null) {
- alloc = Allocation.createTyped(mRS, entry.t, mUsage);
- } else if(entry.e != null) {
- alloc = Allocation.createSized(mRS, entry.e, entry.size, mUsage);
- }
- long allocID = (alloc == null) ? 0 : alloc.getID(mRS);
- indexBuffers[ct] = alloc;
- primitives[ct] = entry.prim;
-
- idx[ct] = (int)allocID;
- prim[ct] = entry.prim.mID;
- }
-
- long id = mRS.nMeshCreate(vtx, idx, prim);
- Mesh newMesh = new Mesh(id, mRS);
- newMesh.mVertexBuffers = vertexBuffers;
- newMesh.mIndexBuffers = indexBuffers;
- newMesh.mPrimitives = primitives;
-
- return newMesh;
- }
- }
-
- /**
- * @deprecated in API 16
- * Mesh builder object. It starts empty and requires the user to
- * add all the vertex and index allocations that comprise the
- * mesh
- *
- */
- public static class AllocationBuilder {
- RenderScript mRS;
-
- class Entry {
- Allocation a;
- Primitive prim;
- }
-
- int mVertexTypeCount;
- Entry[] mVertexTypes;
-
- Vector mIndexTypes;
-
- /**
- * @deprecated in API 16
- **/
- public AllocationBuilder(RenderScript rs) {
- mRS = rs;
- mVertexTypeCount = 0;
- mVertexTypes = new Entry[16];
- mIndexTypes = new Vector();
- }
-
- /**
- * @deprecated in API 16
- * @return internal index of the last vertex buffer type added to
- * builder
- **/
- public int getCurrentVertexTypeIndex() {
- return mVertexTypeCount - 1;
- }
-
- /**
- * @deprecated in API 16
- * @return internal index of the last index set added to the
- * builder
- **/
- public int getCurrentIndexSetIndex() {
- return mIndexTypes.size() - 1;
- }
-
- /**
- * @deprecated in API 16
- * Adds an allocation containing vertex buffer data to the
- * builder
- *
- * @param a vertex data allocation
- *
- * @return this
- **/
- public AllocationBuilder addVertexAllocation(Allocation a) throws IllegalStateException {
- if (mVertexTypeCount >= mVertexTypes.length) {
- throw new IllegalStateException("Max vertex types exceeded.");
- }
-
- mVertexTypes[mVertexTypeCount] = new Entry();
- mVertexTypes[mVertexTypeCount].a = a;
- mVertexTypeCount++;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds an allocation containing index buffer data and index type
- * to the builder
- *
- * @param a index set data allocation, could be null
- * @param p index set primitive type
- *
- * @return this
- **/
- public AllocationBuilder addIndexSetAllocation(Allocation a, Primitive p) {
- Entry indexType = new Entry();
- indexType.a = a;
- indexType.prim = p;
- mIndexTypes.addElement(indexType);
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds an index set type to the builder
- *
- * @param p index set primitive type
- *
- * @return this
- **/
- public AllocationBuilder addIndexSetType(Primitive p) {
- Entry indexType = new Entry();
- indexType.a = null;
- indexType.prim = p;
- mIndexTypes.addElement(indexType);
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Create a Mesh object from the current state of the builder
- *
- **/
- public Mesh create() {
- mRS.validate();
-
- int[] vtx = new int[mVertexTypeCount];
- int[] idx = new int[mIndexTypes.size()];
- int[] prim = new int[mIndexTypes.size()];
-
- Allocation[] indexBuffers = new Allocation[mIndexTypes.size()];
- Primitive[] primitives = new Primitive[mIndexTypes.size()];
- Allocation[] vertexBuffers = new Allocation[mVertexTypeCount];
-
- for(int ct = 0; ct < mVertexTypeCount; ct ++) {
- Entry entry = mVertexTypes[ct];
- vertexBuffers[ct] = entry.a;
- vtx[ct] = (int)entry.a.getID(mRS);
- }
-
- for(int ct = 0; ct < mIndexTypes.size(); ct ++) {
- Entry entry = (Entry)mIndexTypes.elementAt(ct);
- long allocID = (entry.a == null) ? 0 : entry.a.getID(mRS);
- indexBuffers[ct] = entry.a;
- primitives[ct] = entry.prim;
-
- idx[ct] = (int)allocID;
- prim[ct] = entry.prim.mID;
- }
-
- long id = mRS.nMeshCreate(vtx, idx, prim);
- Mesh newMesh = new Mesh(id, mRS);
- newMesh.mVertexBuffers = vertexBuffers;
- newMesh.mIndexBuffers = indexBuffers;
- newMesh.mPrimitives = primitives;
-
- return newMesh;
- }
- }
-
- /**
- * @deprecated in API 16
- * Builder that allows creation of a mesh object point by point
- * and triangle by triangle
- *
- **/
- public static class TriangleMeshBuilder {
- float mVtxData[];
- int mVtxCount;
- int mMaxIndex;
- short mIndexData[];
- int mIndexCount;
- RenderScript mRS;
- Element mElement;
-
- float mNX = 0;
- float mNY = 0;
- float mNZ = -1;
- float mS0 = 0;
- float mT0 = 0;
- float mR = 1;
- float mG = 1;
- float mB = 1;
- float mA = 1;
-
- int mVtxSize;
- int mFlags;
-
- /**
- * @deprecated in API 16
- **/
- public static final int COLOR = 0x0001;
- /**
- * @deprecated in API 16
- **/
- public static final int NORMAL = 0x0002;
- /**
- * @deprecated in API 16
- **/
- public static final int TEXTURE_0 = 0x0100;
-
- /**
- * @deprecated in API 16
- * @param rs Context to which the mesh will belong.
- * @param vtxSize specifies whether the vertex is a float2 or
- * float3
- * @param flags bitfield that is a combination of COLOR, NORMAL,
- * and TEXTURE_0 that specifies what vertex data
- * channels are present in the mesh
- *
- **/
- public TriangleMeshBuilder(RenderScript rs, int vtxSize, int flags) {
- mRS = rs;
- mVtxCount = 0;
- mMaxIndex = 0;
- mIndexCount = 0;
- mVtxData = new float[128];
- mIndexData = new short[128];
- mVtxSize = vtxSize;
- mFlags = flags;
-
- if (vtxSize < 2 || vtxSize > 3) {
- throw new IllegalArgumentException("Vertex size out of range.");
- }
- }
-
- private void makeSpace(int count) {
- if ((mVtxCount + count) >= mVtxData.length) {
- float t[] = new float[mVtxData.length * 2];
- System.arraycopy(mVtxData, 0, t, 0, mVtxData.length);
- mVtxData = t;
- }
- }
-
- private void latch() {
- if ((mFlags & COLOR) != 0) {
- makeSpace(4);
- mVtxData[mVtxCount++] = mR;
- mVtxData[mVtxCount++] = mG;
- mVtxData[mVtxCount++] = mB;
- mVtxData[mVtxCount++] = mA;
- }
- if ((mFlags & TEXTURE_0) != 0) {
- makeSpace(2);
- mVtxData[mVtxCount++] = mS0;
- mVtxData[mVtxCount++] = mT0;
- }
- if ((mFlags & NORMAL) != 0) {
- makeSpace(4);
- mVtxData[mVtxCount++] = mNX;
- mVtxData[mVtxCount++] = mNY;
- mVtxData[mVtxCount++] = mNZ;
- mVtxData[mVtxCount++] = 0.0f;
- }
- mMaxIndex ++;
- }
-
- /**
- * @deprecated in API 16
- * Adds a float2 vertex to the mesh
- *
- * @param x position x
- * @param y position y
- *
- * @return this
- *
- **/
- public TriangleMeshBuilder addVertex(float x, float y) {
- if (mVtxSize != 2) {
- throw new IllegalStateException("add mistmatch with declared components.");
- }
- makeSpace(2);
- mVtxData[mVtxCount++] = x;
- mVtxData[mVtxCount++] = y;
- latch();
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds a float3 vertex to the mesh
- *
- * @param x position x
- * @param y position y
- * @param z position z
- *
- * @return this
- *
- **/
- public TriangleMeshBuilder addVertex(float x, float y, float z) {
- if (mVtxSize != 3) {
- throw new IllegalStateException("add mistmatch with declared components.");
- }
- makeSpace(4);
- mVtxData[mVtxCount++] = x;
- mVtxData[mVtxCount++] = y;
- mVtxData[mVtxCount++] = z;
- mVtxData[mVtxCount++] = 1.0f;
- latch();
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Sets the texture coordinate for the vertices that are added after this method call.
- *
- * @param s texture coordinate s
- * @param t texture coordinate t
- *
- * @return this
- **/
- public TriangleMeshBuilder setTexture(float s, float t) {
- if ((mFlags & TEXTURE_0) == 0) {
- throw new IllegalStateException("add mistmatch with declared components.");
- }
- mS0 = s;
- mT0 = t;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Sets the normal vector for the vertices that are added after this method call.
- *
- * @param x normal vector x
- * @param y normal vector y
- * @param z normal vector z
- *
- * @return this
- **/
- public TriangleMeshBuilder setNormal(float x, float y, float z) {
- if ((mFlags & NORMAL) == 0) {
- throw new IllegalStateException("add mistmatch with declared components.");
- }
- mNX = x;
- mNY = y;
- mNZ = z;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Sets the color for the vertices that are added after this method call.
- *
- * @param r red component
- * @param g green component
- * @param b blue component
- * @param a alpha component
- *
- * @return this
- **/
- public TriangleMeshBuilder setColor(float r, float g, float b, float a) {
- if ((mFlags & COLOR) == 0) {
- throw new IllegalStateException("add mistmatch with declared components.");
- }
- mR = r;
- mG = g;
- mB = b;
- mA = a;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Adds a new triangle to the mesh builder
- *
- * @param idx1 index of the first vertex in the triangle
- * @param idx2 index of the second vertex in the triangle
- * @param idx3 index of the third vertex in the triangle
- *
- * @return this
- **/
- public TriangleMeshBuilder addTriangle(int idx1, int idx2, int idx3) {
- if((idx1 >= mMaxIndex) || (idx1 < 0) ||
- (idx2 >= mMaxIndex) || (idx2 < 0) ||
- (idx3 >= mMaxIndex) || (idx3 < 0)) {
- throw new IllegalStateException("Index provided greater than vertex count.");
- }
- if ((mIndexCount + 3) >= mIndexData.length) {
- short t[] = new short[mIndexData.length * 2];
- System.arraycopy(mIndexData, 0, t, 0, mIndexData.length);
- mIndexData = t;
- }
- mIndexData[mIndexCount++] = (short)idx1;
- mIndexData[mIndexCount++] = (short)idx2;
- mIndexData[mIndexCount++] = (short)idx3;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Creates the mesh object from the current state of the builder
- *
- * @param uploadToBufferObject specifies whether the vertex data
- * is to be uploaded into the buffer
- * object indicating that it's likely
- * not going to be modified and
- * rendered many times.
- * Alternatively, it indicates the
- * mesh data will be updated
- * frequently and remain in script
- * accessible memory
- *
- **/
- public Mesh create(boolean uploadToBufferObject) {
- Element.Builder b = new Element.Builder(mRS);
- b.add(Element.createVector(mRS,
- Element.DataType.FLOAT_32,
- mVtxSize), "position");
- if ((mFlags & COLOR) != 0) {
- b.add(Element.F32_4(mRS), "color");
- }
- if ((mFlags & TEXTURE_0) != 0) {
- b.add(Element.F32_2(mRS), "texture0");
- }
- if ((mFlags & NORMAL) != 0) {
- b.add(Element.F32_3(mRS), "normal");
- }
- mElement = b.create();
-
- int usage = Allocation.USAGE_SCRIPT;
- if (uploadToBufferObject) {
- usage |= Allocation.USAGE_GRAPHICS_VERTEX;
- }
-
- Builder smb = new Builder(mRS, usage);
- smb.addVertexType(mElement, mMaxIndex);
- smb.addIndexSetType(Element.U16(mRS), mIndexCount, Primitive.TRIANGLE);
-
- Mesh sm = smb.create();
-
- sm.getVertexAllocation(0).copy1DRangeFromUnchecked(0, mMaxIndex, mVtxData);
- if(uploadToBufferObject) {
- if (uploadToBufferObject) {
- sm.getVertexAllocation(0).syncAll(Allocation.USAGE_SCRIPT);
- }
- }
-
- sm.getIndexSetAllocation(0).copy1DRangeFromUnchecked(0, mIndexCount, mIndexData);
- if (uploadToBufferObject) {
- sm.getIndexSetAllocation(0).syncAll(Allocation.USAGE_SCRIPT);
- }
-
- return sm;
- }
- }
-}
-
diff --git a/graphics/java/android/renderscript/Path.java b/graphics/java/android/renderscript/Path.java
deleted file mode 100644
index f3502aa..0000000
--- a/graphics/java/android/renderscript/Path.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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 class Path extends BaseObj {
-
- public enum Primitive {
- QUADRATIC_BEZIER(0),
- CUBIC_BEZIER(1);
-
- int mID;
- Primitive(int id) {
- mID = id;
- }
- }
-
- Allocation mVertexBuffer;
- Allocation mLoopBuffer;
- Primitive mPrimitive;
- float mQuality;
- boolean mCoverageToAlpha;
-
- Path(long id, RenderScript rs, Primitive p, Allocation vtx, Allocation loop, float q) {
- super(id, rs);
- mVertexBuffer = vtx;
- mLoopBuffer = loop;
- mPrimitive = p;
- mQuality = q;
- }
-
- public Allocation getVertexAllocation() {
- return mVertexBuffer;
- }
-
- public Allocation getLoopAllocation() {
- return mLoopBuffer;
- }
-
- public Primitive getPrimitive() {
- return mPrimitive;
- }
-
- @Override
- void updateFromNative() {
- }
-
-
- public static Path createStaticPath(RenderScript rs, Primitive p, float quality, Allocation vtx) {
- long id = rs.nPathCreate(p.mID, false, vtx.getID(rs), 0, quality);
- Path newPath = new Path(id, rs, p, null, null, quality);
- return newPath;
- }
-
- public static Path createStaticPath(RenderScript rs, Primitive p, float quality, Allocation vtx, Allocation loops) {
- return null;
- }
-
- public static Path createDynamicPath(RenderScript rs, Primitive p, float quality, Allocation vtx) {
- return null;
- }
-
- public static Path createDynamicPath(RenderScript rs, Primitive p, float quality, Allocation vtx, Allocation loops) {
- return null;
- }
-
-
-}
-
-
diff --git a/graphics/java/android/renderscript/Program.java b/graphics/java/android/renderscript/Program.java
deleted file mode 100644
index 3eb9b75..0000000
--- a/graphics/java/android/renderscript/Program.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * 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 java.io.UnsupportedEncodingException;
-
-import android.content.res.Resources;
-import android.util.Log;
-
-
-/**
- * @hide
- *
- * Program is a base class for all the objects that modify
- * various stages of the graphics pipeline
- *
- **/
-public class Program extends BaseObj {
- static final int MAX_INPUT = 8;
- static final int MAX_OUTPUT = 8;
- static final int MAX_CONSTANT = 8;
- static final int MAX_TEXTURE = 8;
-
- /**
- *
- * TextureType specifies what textures are attached to Program
- * objects
- *
- **/
- public enum TextureType {
- TEXTURE_2D (0),
- TEXTURE_CUBE (1);
-
- int mID;
- TextureType(int id) {
- mID = id;
- }
- }
-
- enum ProgramParam {
- INPUT (0),
- OUTPUT (1),
- CONSTANT (2),
- TEXTURE_TYPE (3);
-
- int mID;
- ProgramParam(int id) {
- mID = id;
- }
- };
-
- Element mInputs[];
- Element mOutputs[];
- Type mConstants[];
- TextureType mTextures[];
- String mTextureNames[];
- int mTextureCount;
- String mShader;
-
- Program(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Program object can have zero or more constant allocations
- * associated with it. This method returns the total count.
- * @return number of constant input types
- */
- public int getConstantCount() {
- return mConstants != null ? mConstants.length : 0;
- }
-
- /**
- * Returns the type of the constant buffer used in the program
- * object. It could be used to query internal elements or create
- * an allocation to store constant data.
- * @param slot index of the constant input type to return
- * @return constant input type
- */
- public Type getConstant(int slot) {
- if (slot < 0 || slot >= mConstants.length) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- return mConstants[slot];
- }
-
- /**
- * Returns the number of textures used in this program object
- * @return number of texture inputs
- */
- public int getTextureCount() {
- return mTextureCount;
- }
-
- /**
- * Returns the type of texture at a given slot. e.g. 2D or Cube
- * @param slot index of the texture input
- * @return texture input type
- */
- public TextureType getTextureType(int slot) {
- if ((slot < 0) || (slot >= mTextureCount)) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- return mTextures[slot];
- }
-
- /**
- * Returns the name of the texture input at a given slot. e.g.
- * tex0, diffuse, spec
- * @param slot index of the texture input
- * @return texture input name
- */
- public String getTextureName(int slot) {
- if ((slot < 0) || (slot >= mTextureCount)) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- return mTextureNames[slot];
- }
-
- /**
- * Binds a constant buffer to be used as uniform inputs to the
- * program
- *
- * @param a allocation containing uniform data
- * @param slot index within the program's list of constant
- * buffer allocations
- */
- public void bindConstants(Allocation a, int slot) {
- if (slot < 0 || slot >= mConstants.length) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- if (a != null &&
- a.getType().getID(mRS) != mConstants[slot].getID(mRS)) {
- throw new IllegalArgumentException("Allocation type does not match slot type.");
- }
- long id = a != null ? a.getID(mRS) : 0;
- mRS.nProgramBindConstants(getID(mRS), slot, id);
- }
-
- /**
- * Binds a texture to be used in the program
- *
- * @param va allocation containing texture data
- * @param slot index within the program's list of textures
- *
- */
- public void bindTexture(Allocation va, int slot)
- throws IllegalArgumentException {
- mRS.validate();
- if ((slot < 0) || (slot >= mTextureCount)) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- if (va != null && va.getType().hasFaces() &&
- mTextures[slot] != TextureType.TEXTURE_CUBE) {
- throw new IllegalArgumentException("Cannot bind cubemap to 2d texture slot");
- }
-
- long id = va != null ? va.getID(mRS) : 0;
- mRS.nProgramBindTexture(getID(mRS), slot, id);
- }
-
- /**
- * Binds an object that describes how a texture at the
- * corresponding location is sampled
- *
- * @param vs sampler for a corresponding texture
- * @param slot index within the program's list of textures to
- * use the sampler on
- *
- */
- public void bindSampler(Sampler vs, int slot)
- throws IllegalArgumentException {
- mRS.validate();
- if ((slot < 0) || (slot >= mTextureCount)) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
-
- long id = vs != null ? vs.getID(mRS) : 0;
- mRS.nProgramBindSampler(getID(mRS), slot, id);
- }
-
-
- public static class BaseProgramBuilder {
- RenderScript mRS;
- Element mInputs[];
- Element mOutputs[];
- Type mConstants[];
- Type mTextures[];
- TextureType mTextureTypes[];
- String mTextureNames[];
- int mInputCount;
- int mOutputCount;
- int mConstantCount;
- int mTextureCount;
- String mShader;
-
-
- protected BaseProgramBuilder(RenderScript rs) {
- mRS = rs;
- mInputs = new Element[MAX_INPUT];
- mOutputs = new Element[MAX_OUTPUT];
- mConstants = new Type[MAX_CONSTANT];
- mInputCount = 0;
- mOutputCount = 0;
- mConstantCount = 0;
- mTextureCount = 0;
- mTextureTypes = new TextureType[MAX_TEXTURE];
- mTextureNames = new String[MAX_TEXTURE];
- }
-
- /**
- * Sets the GLSL shader code to be used in the program
- *
- * @param s GLSL shader string
- * @return self
- */
- public BaseProgramBuilder setShader(String s) {
- mShader = s;
- return this;
- }
-
- /**
- * Sets the GLSL shader code to be used in the program
- *
- * @param resources application resources
- * @param resourceID id of the file containing GLSL shader code
- *
- * @return self
- */
- public BaseProgramBuilder setShader(Resources resources, int resourceID) {
- byte[] str;
- int strLength;
- InputStream is = resources.openRawResource(resourceID);
- try {
- try {
- str = new byte[1024];
- strLength = 0;
- while(true) {
- int bytesLeft = str.length - strLength;
- if (bytesLeft == 0) {
- byte[] buf2 = new byte[str.length * 2];
- System.arraycopy(str, 0, buf2, 0, str.length);
- str = buf2;
- bytesLeft = str.length - strLength;
- }
- int bytesRead = is.read(str, strLength, bytesLeft);
- if (bytesRead <= 0) {
- break;
- }
- strLength += bytesRead;
- }
- } finally {
- is.close();
- }
- } catch(IOException e) {
- throw new Resources.NotFoundException();
- }
-
- try {
- mShader = new String(str, 0, strLength, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- Log.e("RenderScript shader creation", "Could not decode shader string");
- }
-
- return this;
- }
-
- /**
- * Queries the index of the last added constant buffer type
- *
- */
- public int getCurrentConstantIndex() {
- return mConstantCount - 1;
- }
-
- /**
- * Queries the index of the last added texture type
- *
- */
- public int getCurrentTextureIndex() {
- return mTextureCount - 1;
- }
-
- /**
- * Adds constant (uniform) inputs to the program
- *
- * @param t Type that describes the layout of the Allocation
- * object to be used as constant inputs to the Program
- * @return self
- */
- public BaseProgramBuilder addConstant(Type t) throws IllegalStateException {
- // Should check for consistant and non-conflicting names...
- if(mConstantCount >= MAX_CONSTANT) {
- throw new RSIllegalArgumentException("Max input count exceeded.");
- }
- if (t.getElement().isComplex()) {
- throw new RSIllegalArgumentException("Complex elements not allowed.");
- }
- mConstants[mConstantCount] = t;
- mConstantCount++;
- return this;
- }
-
- /**
- * Adds a texture input to the Program
- *
- * @param texType describes that the texture to append it (2D,
- * Cubemap, etc.)
- * @return self
- */
- public BaseProgramBuilder addTexture(TextureType texType) throws IllegalArgumentException {
- addTexture(texType, "Tex" + mTextureCount);
- return this;
- }
-
- /**
- * Adds a texture input to the Program
- *
- * @param texType describes that the texture to append it (2D,
- * Cubemap, etc.)
- * @param texName what the texture should be called in the
- * shader
- * @return self
- */
- public BaseProgramBuilder addTexture(TextureType texType, String texName)
- throws IllegalArgumentException {
- if(mTextureCount >= MAX_TEXTURE) {
- throw new IllegalArgumentException("Max texture count exceeded.");
- }
- mTextureTypes[mTextureCount] = texType;
- mTextureNames[mTextureCount] = texName;
- mTextureCount ++;
- return this;
- }
-
- protected void initProgram(Program p) {
- p.mInputs = new Element[mInputCount];
- System.arraycopy(mInputs, 0, p.mInputs, 0, mInputCount);
- p.mOutputs = new Element[mOutputCount];
- System.arraycopy(mOutputs, 0, p.mOutputs, 0, mOutputCount);
- p.mConstants = new Type[mConstantCount];
- System.arraycopy(mConstants, 0, p.mConstants, 0, mConstantCount);
- p.mTextureCount = mTextureCount;
- p.mTextures = new TextureType[mTextureCount];
- System.arraycopy(mTextureTypes, 0, p.mTextures, 0, mTextureCount);
- p.mTextureNames = new String[mTextureCount];
- System.arraycopy(mTextureNames, 0, p.mTextureNames, 0, mTextureCount);
- }
- }
-
-}
-
-
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
deleted file mode 100644
index 2704130..0000000
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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
- * @deprecated in API 16
- * <p>The RenderScript fragment program, also known as fragment shader is responsible
- * for manipulating pixel data in a user defined way. It's constructed from a GLSL
- * shader string containing the program body, textures inputs, and a Type object
- * that describes the constants used by the program. Similar to the vertex programs,
- * when an allocation with constant input values is bound to the shader, its values
- * are sent to the graphics program automatically.</p>
- * <p> The values inside the allocation are not explicitly tracked. If they change between two draw
- * calls using the same program object, the runtime needs to be notified of that
- * change by calling rsgAllocationSyncAll so it could send the new values to hardware.
- * Communication between the vertex and fragment programs is handled internally in the
- * GLSL code. For example, if the fragment program is expecting a varying input called
- * varTex0, the GLSL code inside the program vertex must provide it.
- * </p>
- *
- **/
-public class ProgramFragment extends Program {
- ProgramFragment(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @deprecated in API 16
- */
- public static class Builder extends BaseProgramBuilder {
- /**
- * @deprecated in API 16
- * Create a builder object.
- *
- * @param rs Context to which the program will belong.
- */
- public Builder(RenderScript rs) {
- super(rs);
- }
-
- /**
- * @deprecated in API 16
- * Creates ProgramFragment from the current state of the builder
- *
- * @return ProgramFragment
- */
- public ProgramFragment create() {
- mRS.validate();
- int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
- String[] texNames = new String[mTextureCount];
- int idx = 0;
-
- for (int i=0; i < mInputCount; i++) {
- tmp[idx++] = ProgramParam.INPUT.mID;
- tmp[idx++] = (int)mInputs[i].getID(mRS);
- }
- for (int i=0; i < mOutputCount; i++) {
- tmp[idx++] = ProgramParam.OUTPUT.mID;
- tmp[idx++] = (int)mOutputs[i].getID(mRS);
- }
- for (int i=0; i < mConstantCount; i++) {
- tmp[idx++] = ProgramParam.CONSTANT.mID;
- tmp[idx++] = (int)mConstants[i].getID(mRS);
- }
- for (int i=0; i < mTextureCount; i++) {
- tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
- tmp[idx++] = (int)mTextureTypes[i].mID;
- texNames[i] = mTextureNames[i];
- }
-
- long id = mRS.nProgramFragmentCreate(mShader, texNames, tmp);
- ProgramFragment pf = new ProgramFragment(id, mRS);
- initProgram(pf);
- return pf;
- }
- }
-}
-
-
-
diff --git a/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java b/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java
deleted file mode 100644
index e1c35c5..0000000
--- a/graphics/java/android/renderscript/ProgramFragmentFixedFunction.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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
- * @deprecated in API 16
- * <p>ProgramFragmentFixedFunction is a helper class that provides
- * a way to make a simple fragment shader without writing any
- * GLSL code. This class allows for display of constant color, interpolated
- * color from the vertex shader, or combinations of the both
- * blended with results of up to two texture lookups.</p
- *
- **/
-public class ProgramFragmentFixedFunction extends ProgramFragment {
- ProgramFragmentFixedFunction(long id, RenderScript rs) {
- super(id, rs);
- }
-
- static class InternalBuilder extends BaseProgramBuilder {
- /**
- * @deprecated in API 16
- */
- public InternalBuilder(RenderScript rs) {
- super(rs);
- }
-
- /**
- * @deprecated in API 16
- * Creates ProgramFragmentFixedFunction from the current state
- * of the builder
- *
- * @return ProgramFragmentFixedFunction
- */
- public ProgramFragmentFixedFunction create() {
- mRS.validate();
- int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
- String[] texNames = new String[mTextureCount];
- int idx = 0;
-
- for (int i=0; i < mInputCount; i++) {
- tmp[idx++] = ProgramParam.INPUT.mID;
- tmp[idx++] = (int)mInputs[i].getID(mRS);
- }
- for (int i=0; i < mOutputCount; i++) {
- tmp[idx++] = ProgramParam.OUTPUT.mID;
- tmp[idx++] = (int)mOutputs[i].getID(mRS);
- }
- for (int i=0; i < mConstantCount; i++) {
- tmp[idx++] = ProgramParam.CONSTANT.mID;
- tmp[idx++] = (int)mConstants[i].getID(mRS);
- }
- for (int i=0; i < mTextureCount; i++) {
- tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
- tmp[idx++] = (int)mTextureTypes[i].mID;
- texNames[i] = mTextureNames[i];
- }
-
- long id = mRS.nProgramFragmentCreate(mShader, texNames, tmp);
- ProgramFragmentFixedFunction pf = new ProgramFragmentFixedFunction(id, mRS);
- initProgram(pf);
- return pf;
- }
- }
-
- /**
- * @deprecated in API 16
- */
- public static class Builder {
- /**
- * @deprecated in API 16
- */
- public static final int MAX_TEXTURE = 2;
- int mNumTextures;
- boolean mPointSpriteEnable;
- boolean mVaryingColorEnable;
- String mShader;
- RenderScript mRS;
-
- /**
- * @deprecated in API 16
- * EnvMode describes how textures are combined with the existing
- * color in the fixed function fragment shader
- *
- **/
- public enum EnvMode {
- /**
- * @deprecated in API 16
- **/
- REPLACE (1),
- /**
- * @deprecated in API 16
- **/
- MODULATE (2),
- /**
- * @deprecated in API 16
- **/
- DECAL (3);
-
- int mID;
- EnvMode(int id) {
- mID = id;
- }
- }
-
- /**
- * @deprecated in API 16
- * Format describes the pixel format of textures in the fixed
- * function fragment shader and how they are sampled
- *
- **/
- public enum Format {
- /**
- * @deprecated in API 16
- **/
- ALPHA (1),
- /**
- * @deprecated in API 16
- **/
- LUMINANCE_ALPHA (2),
- /**
- * @deprecated in API 16
- **/
- RGB (3),
- /**
- * @deprecated in API 16
- **/
- RGBA (4);
-
- int mID;
- Format(int id) {
- mID = id;
- }
- }
-
- private class Slot {
- EnvMode env;
- Format format;
- Slot(EnvMode _env, Format _fmt) {
- env = _env;
- format = _fmt;
- }
- }
- Slot[] mSlots;
-
- private void buildShaderString() {
- mShader = "//rs_shader_internal\n";
- mShader += "varying lowp vec4 varColor;\n";
- mShader += "varying vec2 varTex0;\n";
-
- mShader += "void main() {\n";
- if (mVaryingColorEnable) {
- mShader += " lowp vec4 col = varColor;\n";
- } else {
- mShader += " lowp vec4 col = UNI_Color;\n";
- }
-
- if (mNumTextures != 0) {
- if (mPointSpriteEnable) {
- mShader += " vec2 t0 = gl_PointCoord;\n";
- } else {
- mShader += " vec2 t0 = varTex0.xy;\n";
- }
- }
-
- for(int i = 0; i < mNumTextures; i ++) {
- switch(mSlots[i].env) {
- case REPLACE:
- switch (mSlots[i].format) {
- case ALPHA:
- mShader += " col.a = texture2D(UNI_Tex0, t0).a;\n";
- break;
- case LUMINANCE_ALPHA:
- mShader += " col.rgba = texture2D(UNI_Tex0, t0).rgba;\n";
- break;
- case RGB:
- mShader += " col.rgb = texture2D(UNI_Tex0, t0).rgb;\n";
- break;
- case RGBA:
- mShader += " col.rgba = texture2D(UNI_Tex0, t0).rgba;\n";
- break;
- }
- break;
- case MODULATE:
- switch (mSlots[i].format) {
- case ALPHA:
- mShader += " col.a *= texture2D(UNI_Tex0, t0).a;\n";
- break;
- case LUMINANCE_ALPHA:
- mShader += " col.rgba *= texture2D(UNI_Tex0, t0).rgba;\n";
- break;
- case RGB:
- mShader += " col.rgb *= texture2D(UNI_Tex0, t0).rgb;\n";
- break;
- case RGBA:
- mShader += " col.rgba *= texture2D(UNI_Tex0, t0).rgba;\n";
- break;
- }
- break;
- case DECAL:
- mShader += " col = texture2D(UNI_Tex0, t0);\n";
- break;
- }
- }
-
- mShader += " gl_FragColor = col;\n";
- mShader += "}\n";
- }
-
- /**
- * @deprecated
- * Creates a builder for fixed function fragment program
- *
- * @param rs Context to which the program will belong.
- */
- public Builder(RenderScript rs) {
- mRS = rs;
- mSlots = new Slot[MAX_TEXTURE];
- mPointSpriteEnable = false;
- }
-
- /**
- * @deprecated in API 16
- * Adds a texture to be fetched as part of the fixed function
- * fragment program
- *
- * @param env specifies how the texture is combined with the
- * current color
- * @param fmt specifies the format of the texture and how its
- * components will be used to combine with the
- * current color
- * @param slot index of the texture to apply the operations on
- *
- * @return this
- */
- public Builder setTexture(EnvMode env, Format fmt, int slot)
- throws IllegalArgumentException {
- if((slot < 0) || (slot >= MAX_TEXTURE)) {
- throw new IllegalArgumentException("MAX_TEXTURE exceeded.");
- }
- mSlots[slot] = new Slot(env, fmt);
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Specifies whether the texture coordinate passed from the
- * vertex program is replaced with an openGL internal point
- * sprite texture coordinate
- *
- **/
- public Builder setPointSpriteTexCoordinateReplacement(boolean enable) {
- mPointSpriteEnable = enable;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Specifies whether the varying color passed from the vertex
- * program or the constant color set on the fragment program is
- * used in the final color calculation in the fixed function
- * fragment shader
- *
- **/
- public Builder setVaryingColor(boolean enable) {
- mVaryingColorEnable = enable;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Creates the fixed function fragment program from the current
- * state of the builder.
- *
- */
- public ProgramFragmentFixedFunction create() {
- InternalBuilder sb = new InternalBuilder(mRS);
- mNumTextures = 0;
- for(int i = 0; i < MAX_TEXTURE; i ++) {
- if(mSlots[i] != null) {
- mNumTextures ++;
- }
- }
- buildShaderString();
- sb.setShader(mShader);
-
- Type constType = null;
- if (!mVaryingColorEnable) {
- Element.Builder b = new Element.Builder(mRS);
- b.add(Element.F32_4(mRS), "Color");
- Type.Builder typeBuilder = new Type.Builder(mRS, b.create());
- typeBuilder.setX(1);
- constType = typeBuilder.create();
- sb.addConstant(constType);
- }
- for (int i = 0; i < mNumTextures; i ++) {
- sb.addTexture(TextureType.TEXTURE_2D);
- }
-
- ProgramFragmentFixedFunction pf = sb.create();
- pf.mTextureCount = MAX_TEXTURE;
- if (!mVaryingColorEnable) {
- Allocation constantData = Allocation.createTyped(mRS,constType);
- FieldPacker fp = new FieldPacker(16);
- Float4 f4 = new Float4(1.f, 1.f, 1.f, 1.f);
- fp.addF32(f4);
- constantData.setFromFieldPacker(0, fp);
- pf.bindConstants(constantData, 0);
- }
- return pf;
- }
- }
-}
-
-
-
-
diff --git a/graphics/java/android/renderscript/ProgramRaster.java b/graphics/java/android/renderscript/ProgramRaster.java
deleted file mode 100644
index 8c7c9aa..0000000
--- a/graphics/java/android/renderscript/ProgramRaster.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * 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
- * @deprecated in API 16
- * Program raster is primarily used to specify whether point sprites are enabled and to control
- * the culling mode. By default, back faces are culled.
- **/
-public class ProgramRaster extends BaseObj {
-
- /**
- * @deprecated in API 16
- **/
- public enum CullMode {
- /**
- * @deprecated in API 16
- **/
- BACK (0),
- /**
- * @deprecated in API 16
- **/
- FRONT (1),
- /**
- * @deprecated in API 16
- **/
- NONE (2);
-
- int mID;
- CullMode(int id) {
- mID = id;
- }
- }
-
- boolean mPointSprite;
- CullMode mCullMode;
-
- ProgramRaster(long id, RenderScript rs) {
- super(id, rs);
-
- mPointSprite = false;
- mCullMode = CullMode.BACK;
- }
-
- /**
- * @deprecated in API 16
- * Specifies whether vertices are rendered as screen aligned
- * elements of a specified size
- * @return whether point sprites are enabled
- */
- public boolean isPointSpriteEnabled() {
- return mPointSprite;
- }
-
- /**
- * @deprecated in API 16
- * Specifies how triangles are culled based on their orientation
- * @return cull mode
- */
- public CullMode getCullMode() {
- return mCullMode;
- }
-
- /**
- * @deprecated in API 16
- */
- public static ProgramRaster CULL_BACK(RenderScript rs) {
- if(rs.mProgramRaster_CULL_BACK == null) {
- ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
- builder.setCullMode(CullMode.BACK);
- rs.mProgramRaster_CULL_BACK = builder.create();
- }
- return rs.mProgramRaster_CULL_BACK;
- }
-
- /**
- * @deprecated in API 16
- */
- public static ProgramRaster CULL_FRONT(RenderScript rs) {
- if(rs.mProgramRaster_CULL_FRONT == null) {
- ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
- builder.setCullMode(CullMode.FRONT);
- rs.mProgramRaster_CULL_FRONT = builder.create();
- }
- return rs.mProgramRaster_CULL_FRONT;
- }
-
- /**
- * @deprecated in API 16
- */
- public static ProgramRaster CULL_NONE(RenderScript rs) {
- if(rs.mProgramRaster_CULL_NONE == null) {
- ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
- builder.setCullMode(CullMode.NONE);
- rs.mProgramRaster_CULL_NONE = builder.create();
- }
- return rs.mProgramRaster_CULL_NONE;
- }
-
- /**
- * @deprecated in API 16
- */
- public static class Builder {
- RenderScript mRS;
- boolean mPointSprite;
- CullMode mCullMode;
-
- /**
- * @deprecated in API 16
- */
- public Builder(RenderScript rs) {
- mRS = rs;
- mPointSprite = false;
- mCullMode = CullMode.BACK;
- }
-
- /**
- * @deprecated in API 16
- */
- public Builder setPointSpriteEnabled(boolean enable) {
- mPointSprite = enable;
- return this;
- }
-
- /**
- * @deprecated in API 16
- */
- public Builder setCullMode(CullMode m) {
- mCullMode = m;
- return this;
- }
-
- /**
- * @deprecated in API 16
- */
- public ProgramRaster create() {
- mRS.validate();
- long id = mRS.nProgramRasterCreate(mPointSprite, mCullMode.mID);
- ProgramRaster programRaster = new ProgramRaster(id, mRS);
- programRaster.mPointSprite = mPointSprite;
- programRaster.mCullMode = mCullMode;
- return programRaster;
- }
- }
-
-}
-
-
-
-
-
-
diff --git a/graphics/java/android/renderscript/ProgramStore.java b/graphics/java/android/renderscript/ProgramStore.java
deleted file mode 100644
index 730c51b..0000000
--- a/graphics/java/android/renderscript/ProgramStore.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * 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
- * <p>ProgramStore contains a set of parameters that control how
- * the graphics hardware handles writes to the framebuffer.
- * It could be used to:</p>
- * <ul>
- * <li>enable/disable depth testing</li>
- * <li>specify wheather depth writes are performed</li>
- * <li>setup various blending modes for use in effects like
- * transparency</li>
- * <li>define write masks for color components written into the
- * framebuffer</li>
- * </ul>
- *
- **/
-public class ProgramStore extends BaseObj {
- /**
- * Specifies the function used to determine whether a fragment
- * will be drawn during the depth testing stage in the rendering
- * pipeline by comparing its value with that already in the depth
- * buffer. DepthFunc is only valid when depth buffer is present
- * and depth testing is enabled
- */
- public enum DepthFunc {
-
- /**
- * Always drawn
- */
- ALWAYS (0),
- /**
- * Drawn if the incoming depth value is less than that in the
- * depth buffer
- */
- LESS (1),
- /**
- * Drawn if the incoming depth value is less or equal to that in
- * the depth buffer
- */
- LESS_OR_EQUAL (2),
- /**
- * Drawn if the incoming depth value is greater than that in the
- * depth buffer
- */
- GREATER (3),
- /**
- * Drawn if the incoming depth value is greater or equal to that
- * in the depth buffer
- */
- GREATER_OR_EQUAL (4),
- /**
- * Drawn if the incoming depth value is equal to that in the
- * depth buffer
- */
- EQUAL (5),
- /**
- * Drawn if the incoming depth value is not equal to that in the
- * depth buffer
- */
- NOT_EQUAL (6);
-
- int mID;
- DepthFunc(int id) {
- mID = id;
- }
- }
-
- /**
- * Specifies the functions used to combine incoming pixels with
- * those already in the frame buffer.
- *
- * BlendSrcFunc describes how the coefficient used to scale the
- * source pixels during the blending operation is computed
- *
- */
- public enum BlendSrcFunc {
- ZERO (0),
- ONE (1),
- DST_COLOR (2),
- ONE_MINUS_DST_COLOR (3),
- SRC_ALPHA (4),
- ONE_MINUS_SRC_ALPHA (5),
- DST_ALPHA (6),
- ONE_MINUS_DST_ALPHA (7),
- SRC_ALPHA_SATURATE (8);
-
- int mID;
- BlendSrcFunc(int id) {
- mID = id;
- }
- }
-
- /**
- * Specifies the functions used to combine incoming pixels with
- * those already in the frame buffer.
- *
- * BlendDstFunc describes how the coefficient used to scale the
- * pixels already in the framebuffer is computed during the
- * blending operation
- *
- */
- public enum BlendDstFunc {
- ZERO (0),
- ONE (1),
- SRC_COLOR (2),
- ONE_MINUS_SRC_COLOR (3),
- SRC_ALPHA (4),
- ONE_MINUS_SRC_ALPHA (5),
- DST_ALPHA (6),
- ONE_MINUS_DST_ALPHA (7);
-
- int mID;
- BlendDstFunc(int id) {
- mID = id;
- }
- }
-
- DepthFunc mDepthFunc;
- boolean mDepthMask;
- boolean mColorMaskR;
- boolean mColorMaskG;
- boolean mColorMaskB;
- boolean mColorMaskA;
- BlendSrcFunc mBlendSrc;
- BlendDstFunc mBlendDst;
- boolean mDither;
-
- ProgramStore(int id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Returns the function used to test writing into the depth
- * buffer
- * @return depth function
- */
- public DepthFunc getDepthFunc() {
- return mDepthFunc;
- }
-
- /**
- * Queries whether writes are enabled into the depth buffer
- * @return depth mask
- */
- public boolean isDepthMaskEnabled() {
- return mDepthMask;
- }
-
- /**
- * Queries whether red channel is written
- * @return red color channel mask
- */
- public boolean isColorMaskRedEnabled() {
- return mColorMaskR;
- }
-
- /**
- * Queries whether green channel is written
- * @return green color channel mask
- */
- public boolean isColorMaskGreenEnabled() {
- return mColorMaskG;
- }
-
- /**
- * Queries whether blue channel is written
- * @return blue color channel mask
- */
- public boolean isColorMaskBlueEnabled() {
- return mColorMaskB;
- }
-
- /**
- * Queries whether alpha channel is written
- * @return alpha channel mask
- */
- public boolean isColorMaskAlphaEnabled() {
- return mColorMaskA;
- }
-
- /**
- * Specifies how the source blending factor is computed
- * @return source blend function
- */
- public BlendSrcFunc getBlendSrcFunc() {
- return mBlendSrc;
- }
-
- /**
- * Specifies how the destination blending factor is computed
- * @return destination blend function
- */
- public BlendDstFunc getBlendDstFunc() {
- return mBlendDst;
- }
-
- /**
- * Specifies whether colors are dithered before writing into the
- * framebuffer
- * @return whether dither is enabled
- */
- public boolean isDitherEnabled() {
- return mDither;
- }
-
- /**
- * Returns a pre-defined program store object with the following
- * characteristics:
- * - incoming pixels are drawn if their depth value is less than
- * the stored value in the depth buffer. If the pixel is
- * drawn, its value is also stored in the depth buffer
- * - incoming pixels override the value stored in the color
- * buffer if it passes the depth test
- *
- * @param rs Context to which the program will belong.
- **/
- public static ProgramStore BLEND_NONE_DEPTH_TEST(RenderScript rs) {
- if(rs.mProgramStore_BLEND_NONE_DEPTH_TEST == null) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.LESS);
- builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ZERO);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(true);
- rs.mProgramStore_BLEND_NONE_DEPTH_TEST = builder.create();
- }
- return rs.mProgramStore_BLEND_NONE_DEPTH_TEST;
- }
- /**
- * Returns a pre-defined program store object with the following
- * characteristics:
- * - incoming pixels always pass the depth test and their value
- * is not stored in the depth buffer
- * - incoming pixels override the value stored in the color
- * buffer
- *
- * @param rs Context to which the program will belong.
- **/
- public static ProgramStore BLEND_NONE_DEPTH_NONE(RenderScript rs) {
- if(rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH == null) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
- builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ZERO);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(false);
- rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH = builder.create();
- }
- return rs.mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH;
- }
- /**
- * Returns a pre-defined program store object with the following
- * characteristics:
- * - incoming pixels are drawn if their depth value is less than
- * the stored value in the depth buffer. If the pixel is
- * drawn, its value is also stored in the depth buffer
- * - if the incoming (Source) pixel passes depth test, its value
- * is combined with the stored color (Dest) using the
- * following formula
- * Final.RGB = Source.RGB * Source.A + Dest.RGB * (1 - Source.A)
- *
- * @param rs Context to which the program will belong.
- **/
- public static ProgramStore BLEND_ALPHA_DEPTH_TEST(RenderScript rs) {
- if(rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST == null) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.LESS);
- builder.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE_MINUS_SRC_ALPHA);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(true);
- rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST = builder.create();
- }
- return rs.mProgramStore_BLEND_ALPHA_DEPTH_TEST;
- }
- /**
- * Returns a pre-defined program store object with the following
- * characteristics:
- * - incoming pixels always pass the depth test and their value
- * is not stored in the depth buffer
- * - incoming pixel's value is combined with the stored color
- * (Dest) using the following formula
- * Final.RGB = Source.RGB * Source.A + Dest.RGB * (1 - Source.A)
- *
- * @param rs Context to which the program will belong.
- **/
- public static ProgramStore BLEND_ALPHA_DEPTH_NONE(RenderScript rs) {
- if(rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH == null) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
- builder.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE_MINUS_SRC_ALPHA);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(false);
- rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH = builder.create();
- }
- return rs.mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH;
- }
-
- /**
- * Builder class for ProgramStore object. If the builder is left
- * empty, the equivalent of BLEND_NONE_DEPTH_NONE would be
- * returned
- */
- public static class Builder {
- RenderScript mRS;
- DepthFunc mDepthFunc;
- boolean mDepthMask;
- boolean mColorMaskR;
- boolean mColorMaskG;
- boolean mColorMaskB;
- boolean mColorMaskA;
- BlendSrcFunc mBlendSrc;
- BlendDstFunc mBlendDst;
- boolean mDither;
-
- public Builder(RenderScript rs) {
- mRS = rs;
- mDepthFunc = DepthFunc.ALWAYS;
- mDepthMask = false;
- mColorMaskR = true;
- mColorMaskG = true;
- mColorMaskB = true;
- mColorMaskA = true;
- mBlendSrc = BlendSrcFunc.ONE;
- mBlendDst = BlendDstFunc.ZERO;
- }
-
- /**
- * Specifies the depth testing behavior
- *
- * @param func function used for depth testing
- *
- * @return this
- */
- public Builder setDepthFunc(DepthFunc func) {
- mDepthFunc = func;
- return this;
- }
-
- /**
- * Enables writes into the depth buffer
- *
- * @param enable specifies whether depth writes are
- * enabled or disabled
- *
- * @return this
- */
- public Builder setDepthMaskEnabled(boolean enable) {
- mDepthMask = enable;
- return this;
- }
-
- /**
- * Enables writes into the color buffer
- *
- * @param r specifies whether red channel is written
- * @param g specifies whether green channel is written
- * @param b specifies whether blue channel is written
- * @param a specifies whether alpha channel is written
- *
- * @return this
- */
- public Builder setColorMaskEnabled(boolean r, boolean g, boolean b, boolean a) {
- mColorMaskR = r;
- mColorMaskG = g;
- mColorMaskB = b;
- mColorMaskA = a;
- return this;
- }
-
- /**
- * Specifies how incoming pixels are combined with the pixels
- * stored in the framebuffer
- *
- * @param src specifies how the source blending factor is
- * computed
- * @param dst specifies how the destination blending factor is
- * computed
- *
- * @return this
- */
- public Builder setBlendFunc(BlendSrcFunc src, BlendDstFunc dst) {
- mBlendSrc = src;
- mBlendDst = dst;
- return this;
- }
-
- /**
- * Enables dithering
- *
- * @param enable specifies whether dithering is enabled or
- * disabled
- *
- * @return this
- */
- public Builder setDitherEnabled(boolean enable) {
- mDither = enable;
- return this;
- }
-
- /**
- * Creates a program store from the current state of the builder
- */
- public ProgramStore create() {
- mRS.validate();
- int id = mRS.nProgramStoreCreate(mColorMaskR, mColorMaskG, mColorMaskB, mColorMaskA,
- mDepthMask, mDither,
- mBlendSrc.mID, mBlendDst.mID, mDepthFunc.mID);
- ProgramStore programStore = new ProgramStore(id, mRS);
- programStore.mDepthFunc = mDepthFunc;
- programStore.mDepthMask = mDepthMask;
- programStore.mColorMaskR = mColorMaskR;
- programStore.mColorMaskG = mColorMaskG;
- programStore.mColorMaskB = mColorMaskB;
- programStore.mColorMaskA = mColorMaskA;
- programStore.mBlendSrc = mBlendSrc;
- programStore.mBlendDst = mBlendDst;
- programStore.mDither = mDither;
- return programStore;
- }
- }
-
-}
-
-
-
-
diff --git a/graphics/java/android/renderscript/ProgramVertex.java b/graphics/java/android/renderscript/ProgramVertex.java
deleted file mode 100644
index d194ba9..0000000
--- a/graphics/java/android/renderscript/ProgramVertex.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * @hide
- * <p>The RenderScript vertex program, also known as a vertex shader, describes a stage in
- * the graphics pipeline responsible for manipulating geometric data in a user-defined way.
- * The object is constructed by providing the RenderScript system with the following data:</p>
- * <ul>
- * <li>Element describing its varying inputs or attributes</li>
- * <li>GLSL shader string that defines the body of the program</li>
- * <li>a Type that describes the layout of an Allocation containing constant or uniform inputs</li>
- * </ul>
- *
- * <p>Once the program is created, you bind it to the graphics context, RenderScriptGL, and it will be used for
- * all subsequent draw calls until you bind a new program. If the program has constant inputs,
- * the user needs to bind an allocation containing those inputs. The allocation's type must match
- * the one provided during creation. The RenderScript library then does all the necessary plumbing
- * to send those constants to the graphics hardware. Varying inputs to the shader, such as position, normal,
- * and texture coordinates are matched by name between the input Element and the Mesh object being drawn.
- * The signatures don't have to be exact or in any strict order. As long as the input name in the shader
- * matches a channel name and size available on the mesh, the runtime takes care of connecting the
- * two. Unlike OpenGL, there is no need to link the vertex and fragment programs.</p>
- *
- **/
-package android.renderscript;
-
-
-/**
- * @hide
- * @deprecated in API 16
- * ProgramVertex, also know as a vertex shader, describes a
- * stage in the graphics pipeline responsible for manipulating
- * geometric data in a user-defined way.
- *
- **/
-public class ProgramVertex extends Program {
-
- ProgramVertex(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @deprecated in API 16
- * @return number of input attribute elements
- */
- public int getInputCount() {
- return mInputs != null ? mInputs.length : 0;
- }
-
- /**
- * @deprecated in API 16
- * @param slot location of the input to return
- * @return input attribute element
- */
- public Element getInput(int slot) {
- if (slot < 0 || slot >= mInputs.length) {
- throw new IllegalArgumentException("Slot ID out of range.");
- }
- return mInputs[slot];
- }
-
- /**
- * @hide
- * @deprecated in API 16
- * Builder class for creating ProgramVertex objects.
- * The builder starts empty and the user must minimally provide
- * the GLSL shader code, and the varying inputs. Constant, or
- * uniform parameters to the shader may optionally be provided as
- * well.
- *
- **/
- public static class Builder extends BaseProgramBuilder {
- /**
- * @deprecated in API 16
- * Create a builder object.
- *
- * @param rs Context to which the program will belong.
- */
- public Builder(RenderScript rs) {
- super(rs);
- }
-
- /**
- * @deprecated in API 16
- * Add varying inputs to the program
- *
- * @param e element describing the layout of the varying input
- * structure
- * @return self
- */
- public Builder addInput(Element e) throws IllegalStateException {
- // Should check for consistant and non-conflicting names...
- if(mInputCount >= MAX_INPUT) {
- throw new RSIllegalArgumentException("Max input count exceeded.");
- }
- if (e.isComplex()) {
- throw new RSIllegalArgumentException("Complex elements not allowed.");
- }
- mInputs[mInputCount++] = e;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Creates ProgramVertex from the current state of the builder
- *
- * @return ProgramVertex
- */
- public ProgramVertex create() {
- mRS.validate();
- int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
- String[] texNames = new String[mTextureCount];
- int idx = 0;
-
- for (int i=0; i < mInputCount; i++) {
- tmp[idx++] = ProgramParam.INPUT.mID;
- tmp[idx++] = (int)mInputs[i].getID(mRS);
- }
- for (int i=0; i < mOutputCount; i++) {
- tmp[idx++] = ProgramParam.OUTPUT.mID;
- tmp[idx++] = (int)mOutputs[i].getID(mRS);
- }
- for (int i=0; i < mConstantCount; i++) {
- tmp[idx++] = ProgramParam.CONSTANT.mID;
- tmp[idx++] = (int)mConstants[i].getID(mRS);
- }
- for (int i=0; i < mTextureCount; i++) {
- tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
- tmp[idx++] = (int)mTextureTypes[i].mID;
- texNames[i] = mTextureNames[i];
- }
-
- long id = mRS.nProgramVertexCreate(mShader, texNames, tmp);
- ProgramVertex pv = new ProgramVertex(id, mRS);
- initProgram(pv);
- return pv;
- }
- }
-
-}
diff --git a/graphics/java/android/renderscript/ProgramVertexFixedFunction.java b/graphics/java/android/renderscript/ProgramVertexFixedFunction.java
deleted file mode 100644
index 2d281b8..0000000
--- a/graphics/java/android/renderscript/ProgramVertexFixedFunction.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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
- * @deprecated in API 16
- * ProgramVertexFixedFunction is a helper class that provides a
- * simple way to create a fixed function emulation vertex shader
- * without writing any GLSL code.
- *
- **/
-public class ProgramVertexFixedFunction extends ProgramVertex {
-
- ProgramVertexFixedFunction(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @deprecated in API 16
- * Binds the constant buffer containing fixed function emulation
- * matrices
- *
- * @param va allocation containing fixed function matrices
- */
- public void bindConstants(Constants va) {
- mRS.validate();
- bindConstants(va.getAllocation(), 0);
- }
-
- static class InternalBuilder extends BaseProgramBuilder {
- /**
- * @deprecated in API 16
- */
- public InternalBuilder(RenderScript rs) {
- super(rs);
- }
-
- /**
- * @deprecated in API 16
- */
- public InternalBuilder addInput(Element e) throws IllegalStateException {
- // Should check for consistant and non-conflicting names...
- if(mInputCount >= MAX_INPUT) {
- throw new RSIllegalArgumentException("Max input count exceeded.");
- }
- if (e.isComplex()) {
- throw new RSIllegalArgumentException("Complex elements not allowed.");
- }
- mInputs[mInputCount++] = e;
- return this;
- }
-
- /**
- * @deprecated in API 16
- * Creates ProgramVertexFixedFunction from the current state of
- * the builder
- *
- * @return ProgramVertexFixedFunction
- */
- public ProgramVertexFixedFunction create() {
- mRS.validate();
- int[] tmp = new int[(mInputCount + mOutputCount + mConstantCount + mTextureCount) * 2];
- String[] texNames = new String[mTextureCount];
- int idx = 0;
-
- for (int i=0; i < mInputCount; i++) {
- tmp[idx++] = ProgramParam.INPUT.mID;
- tmp[idx++] = (int)mInputs[i].getID(mRS);
- }
- for (int i=0; i < mOutputCount; i++) {
- tmp[idx++] = ProgramParam.OUTPUT.mID;
- tmp[idx++] = (int)mOutputs[i].getID(mRS);
- }
- for (int i=0; i < mConstantCount; i++) {
- tmp[idx++] = ProgramParam.CONSTANT.mID;
- tmp[idx++] = (int)mConstants[i].getID(mRS);
- }
- for (int i=0; i < mTextureCount; i++) {
- tmp[idx++] = ProgramParam.TEXTURE_TYPE.mID;
- tmp[idx++] = (int)mTextureTypes[i].mID;
- texNames[i] = mTextureNames[i];
- }
-
- long id = mRS.nProgramVertexCreate(mShader, texNames, tmp);
- ProgramVertexFixedFunction pv = new ProgramVertexFixedFunction(id, mRS);
- initProgram(pv);
- return pv;
- }
- }
-
- /**
- * @deprecated in API 16
- */
- public static class Builder {
- boolean mTextureMatrixEnable;
- String mShader;
- RenderScript mRS;
-
- /**
- * @deprecated in API 16
- * Creates a builder for fixed function vertex program
- *
- * @param rs Context to which the program will belong.
- */
- public Builder(RenderScript rs) {
- mRS = rs;
- }
-
- /**
- * @deprecated in API 16
- * Specifies whether texture matrix calculations are to be added
- * to the shader
- *
- */
- public Builder setTextureMatrixEnable(boolean enable) {
- mTextureMatrixEnable = enable;
- return this;
- }
- static Type getConstantInputType(RenderScript rs) {
- Element.Builder b = new Element.Builder(rs);
- b.add(Element.MATRIX4X4(rs), "MV");
- b.add(Element.MATRIX4X4(rs), "P");
- b.add(Element.MATRIX4X4(rs), "TexMatrix");
- b.add(Element.MATRIX4X4(rs), "MVP");
-
- Type.Builder typeBuilder = new Type.Builder(rs, b.create());
- typeBuilder.setX(1);
- return typeBuilder.create();
- }
-
- private void buildShaderString() {
-
- mShader = "//rs_shader_internal\n";
- mShader += "varying vec4 varColor;\n";
- mShader += "varying vec2 varTex0;\n";
-
- mShader += "void main() {\n";
- mShader += " gl_Position = UNI_MVP * ATTRIB_position;\n";
- mShader += " gl_PointSize = 1.0;\n";
-
- mShader += " varColor = ATTRIB_color;\n";
- if (mTextureMatrixEnable) {
- mShader += " varTex0 = (UNI_TexMatrix * vec4(ATTRIB_texture0, 0.0, 1.0)).xy;\n";
- } else {
- mShader += " varTex0 = ATTRIB_texture0;\n";
- }
- mShader += "}\n";
- }
-
- /**
- * @deprecated in API 16
- * Creates ProgramVertexFixedFunction from the current state of
- * the builder
- *
- * @return Fixed function emulation ProgramVertex
- */
- public ProgramVertexFixedFunction create() {
- buildShaderString();
-
- InternalBuilder sb = new InternalBuilder(mRS);
- sb.setShader(mShader);
- sb.addConstant(getConstantInputType(mRS));
-
- Element.Builder b = new Element.Builder(mRS);
- b.add(Element.F32_4(mRS), "position");
- b.add(Element.F32_4(mRS), "color");
- b.add(Element.F32_3(mRS), "normal");
- b.add(Element.F32_2(mRS), "texture0");
- sb.addInput(b.create());
-
- return sb.create();
- }
- }
-
- /**
- * @deprecated in API 16
- * Helper class to store modelview, projection and texture
- * matrices for ProgramVertexFixedFunction
- *
- */
- public static class Constants {
- static final int MODELVIEW_OFFSET = 0;
- static final int PROJECTION_OFFSET = 16;
- static final int TEXTURE_OFFSET = 32;
-
- Matrix4f mModel;
- Matrix4f mProjection;
- Matrix4f mTexture;
-
- Allocation mAlloc;
- Allocation getAllocation() {
- return mAlloc;
- }
- private FieldPacker mIOBuffer;
-
- /**
- * @deprecated in API 16
- * Creates a buffer to store fixed function emulation matrices
- *
- * @param rs Context to which the allocation will belong.
- **/
- public Constants(RenderScript rs) {
- Type constInputType = ProgramVertexFixedFunction.Builder.getConstantInputType(rs);
- mAlloc = Allocation.createTyped(rs, constInputType);
- int bufferSize = constInputType.getElement().getBytesSize()*
- constInputType.getCount();
- mIOBuffer = new FieldPacker(bufferSize);
- mModel = new Matrix4f();
- mProjection = new Matrix4f();
- mTexture = new Matrix4f();
- setModelview(new Matrix4f());
- setProjection(new Matrix4f());
- setTexture(new Matrix4f());
- }
-
- /**
- * @deprecated in API 16
- * Forces deallocation of memory backing the contant matrices.
- * Normally, this is unnecessary and will be garbage collected
- *
- */
- public void destroy() {
- mAlloc.destroy();
- mAlloc = null;
- }
-
- private void addToBuffer(int offset, Matrix4f m) {
- mIOBuffer.reset(offset);
- for(int i = 0; i < 16; i ++) {
- mIOBuffer.addF32(m.mMat[i]);
- }
- mAlloc.setFromFieldPacker(0, mIOBuffer);
- }
-
- /**
- * @deprecated in API 16
- * Sets the modelview matrix in the fixed function matrix buffer
- *
- * @param m modelview matrix
- */
- public void setModelview(Matrix4f m) {
- mModel.load(m);
- addToBuffer(MODELVIEW_OFFSET*4, m);
- }
-
- /**
- * @deprecated in API 16
- * Sets the projection matrix in the fixed function matrix buffer
- *
- * @param m projection matrix
- */
- public void setProjection(Matrix4f m) {
- mProjection.load(m);
- addToBuffer(PROJECTION_OFFSET*4, m);
- }
-
- /**
- * @deprecated in API 16
- * Sets the texture matrix in the fixed function matrix buffer.
- * Texture matrix must be enabled in the
- * ProgramVertexFixedFunction builder for the shader to utilize
- * it.
- *
- * @param m modelview matrix
- */
- public void setTexture(Matrix4f m) {
- mTexture.load(m);
- addToBuffer(TEXTURE_OFFSET*4, m);
- }
- }
-}
diff --git a/graphics/java/android/renderscript/RSDriverException.java b/graphics/java/android/renderscript/RSDriverException.java
deleted file mode 100644
index 9e6507f..0000000
--- a/graphics/java/android/renderscript/RSDriverException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 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;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSDriverException extends RSRuntimeException {
- public RSDriverException(String string) {
- super(string);
- }
-}
-
-
-
diff --git a/graphics/java/android/renderscript/RSIllegalArgumentException.java b/graphics/java/android/renderscript/RSIllegalArgumentException.java
deleted file mode 100644
index 5c68594..0000000
--- a/graphics/java/android/renderscript/RSIllegalArgumentException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 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;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSIllegalArgumentException extends RSRuntimeException {
- public RSIllegalArgumentException(String string) {
- super(string);
- }
-}
-
-
diff --git a/graphics/java/android/renderscript/RSInvalidStateException.java b/graphics/java/android/renderscript/RSInvalidStateException.java
deleted file mode 100644
index c881898..0000000
--- a/graphics/java/android/renderscript/RSInvalidStateException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 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;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSInvalidStateException extends RSRuntimeException {
- public RSInvalidStateException(String string) {
- super(string);
- }
-}
-
-
-
diff --git a/graphics/java/android/renderscript/RSRuntimeException.java b/graphics/java/android/renderscript/RSRuntimeException.java
deleted file mode 100644
index b4b629e..0000000
--- a/graphics/java/android/renderscript/RSRuntimeException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 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;
-
-
-/**
- * Base class for all exceptions thrown by the Android
- * RenderScript
- */
-public class RSRuntimeException
- extends java.lang.RuntimeException {
- public RSRuntimeException(String string) {
- super(string);
- }
-}
-
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
deleted file mode 100644
index 5db72d9..0000000
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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 android.content.Context;
-import android.util.AttributeSet;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-
-/**
- * @hide
- * @deprecated in API 16
- * The Surface View for a graphics renderscript (RenderScriptGL) to draw on.
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- */
-public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
- private SurfaceHolder mSurfaceHolder;
- private RenderScriptGL mRS;
-
- /**
- * @deprecated in API 16
- * Standard View constructor. In order to render something, you
- * must call {@link android.opengl.GLSurfaceView#setRenderer} to
- * register a renderer.
- */
- public RSSurfaceView(Context context) {
- super(context);
- init();
- //Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
- }
-
- /**
- * @deprecated in API 16
- * Standard View constructor. In order to render something, you
- * must call {@link android.opengl.GLSurfaceView#setRenderer} to
- * register a renderer.
- */
- public RSSurfaceView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- //Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
- }
-
- private void init() {
- // Install a SurfaceHolder.Callback so we get notified when the
- // underlying surface is created and destroyed
- SurfaceHolder holder = getHolder();
- holder.addCallback(this);
- }
-
- /**
- * @deprecated in API 16
- * This method is part of the SurfaceHolder.Callback interface, and is
- * not normally called or subclassed by clients of RSSurfaceView.
- */
- public void surfaceCreated(SurfaceHolder holder) {
- mSurfaceHolder = holder;
- }
-
- /**
- * @deprecated in API 16
- * This method is part of the SurfaceHolder.Callback interface, and is
- * not normally called or subclassed by clients of RSSurfaceView.
- */
- public void surfaceDestroyed(SurfaceHolder holder) {
- synchronized (this) {
- // Surface will be destroyed when we return
- if (mRS != null) {
- mRS.setSurface(null, 0, 0);
- }
- }
- }
-
- /**
- * @deprecated in API 16
- * This method is part of the SurfaceHolder.Callback interface, and is
- * not normally called or subclassed by clients of RSSurfaceView.
- */
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- synchronized (this) {
- if (mRS != null) {
- mRS.setSurface(holder, w, h);
- }
- }
- }
-
- /**
- * @deprecated in API 16
- * Inform the view that the activity is paused. The owner of this view must
- * call this method when the activity is paused. Calling this method will
- * pause the rendering thread.
- * Must not be called before a renderer has been set.
- */
- public void pause() {
- if(mRS != null) {
- mRS.pause();
- }
- }
-
- /**
- * @deprecated in API 16
- * Inform the view that the activity is resumed. The owner of this view must
- * call this method when the activity is resumed. Calling this method will
- * recreate the OpenGL display and resume the rendering
- * thread.
- * Must not be called before a renderer has been set.
- */
- public void resume() {
- if(mRS != null) {
- mRS.resume();
- }
- }
-
- /**
- * @deprecated in API 16
- **/
- public RenderScriptGL createRenderScriptGL(RenderScriptGL.SurfaceConfig sc) {
- RenderScriptGL rs = new RenderScriptGL(this.getContext(), sc);
- setRenderScriptGL(rs);
- return rs;
- }
-
- /**
- * @deprecated in API 16
- **/
- public void destroyRenderScriptGL() {
- synchronized (this) {
- mRS.destroy();
- mRS = null;
- }
- }
-
- /**
- * @deprecated in API 16
- **/
- public void setRenderScriptGL(RenderScriptGL rs) {
- mRS = rs;
- }
-
- /**
- * @deprecated in API 16
- **/
- public RenderScriptGL getRenderScriptGL() {
- return mRS;
- }
-}
diff --git a/graphics/java/android/renderscript/RSTextureView.java b/graphics/java/android/renderscript/RSTextureView.java
deleted file mode 100644
index af3258a..0000000
--- a/graphics/java/android/renderscript/RSTextureView.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) 2011 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 android.content.Context;
-import android.graphics.SurfaceTexture;
-import android.util.AttributeSet;
-import android.view.TextureView;
-
-/**
- * @hide
- * @deprecated in API 16
- * The Texture View for a graphics renderscript (RenderScriptGL)
- * to draw on.
- *
- */
-public class RSTextureView extends TextureView implements TextureView.SurfaceTextureListener {
- private RenderScriptGL mRS;
- private SurfaceTexture mSurfaceTexture;
-
- /**
- * @deprecated in API 16
- * Standard View constructor. In order to render something, you
- * must call {@link android.opengl.GLSurfaceView#setRenderer} to
- * register a renderer.
- */
- public RSTextureView(Context context) {
- super(context);
- init();
- //Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
- }
-
- /**
- * @deprecated in API 16
- * Standard View constructor. In order to render something, you
- * must call {@link android.opengl.GLSurfaceView#setRenderer} to
- * register a renderer.
- */
- public RSTextureView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- //Log.v(RenderScript.LOG_TAG, "RSSurfaceView");
- }
-
- private void init() {
- setSurfaceTextureListener(this);
- //android.util.Log.e("rs", "getSurfaceTextureListerner " + getSurfaceTextureListener());
- }
-
- /**
- * @deprecated in API 16
- */
- @Override
- public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
- //Log.e(RenderScript.LOG_TAG, "onSurfaceTextureAvailable");
- mSurfaceTexture = surface;
-
- if (mRS != null) {
- mRS.setSurfaceTexture(mSurfaceTexture, width, height);
- }
- }
-
- /**
- * @deprecated in API 16
- */
- @Override
- public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
- //Log.e(RenderScript.LOG_TAG, "onSurfaceTextureSizeChanged");
- mSurfaceTexture = surface;
-
- if (mRS != null) {
- mRS.setSurfaceTexture(mSurfaceTexture, width, height);
- }
- }
-
- /**
- * @deprecated in API 16
- */
- @Override
- public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
- //Log.e(RenderScript.LOG_TAG, "onSurfaceTextureDestroyed");
- mSurfaceTexture = surface;
-
- if (mRS != null) {
- mRS.setSurfaceTexture(null, 0, 0);
- }
-
- return true;
- }
-
- /**
- * @deprecated in API 16
- */
- @Override
- public void onSurfaceTextureUpdated(SurfaceTexture surface) {
- //Log.e(RenderScript.LOG_TAG, "onSurfaceTextureUpdated");
- mSurfaceTexture = surface;
- }
-
- /**
- * @deprecated in API 16
- * Inform the view that the activity is paused. The owner of this view must
- * call this method when the activity is paused. Calling this method will
- * pause the rendering thread.
- * Must not be called before a renderer has been set.
- */
- public void pause() {
- if(mRS != null) {
- mRS.pause();
- }
- }
-
- /**
- * @deprecated in API 16
- * Inform the view that the activity is resumed. The owner of this view must
- * call this method when the activity is resumed. Calling this method will
- * recreate the OpenGL display and resume the rendering
- * thread.
- * Must not be called before a renderer has been set.
- */
- public void resume() {
- if(mRS != null) {
- mRS.resume();
- }
- }
-
- /**
- * @deprecated in API 16
- * Create a new RenderScriptGL object and attach it to the
- * TextureView if present.
- *
- *
- * @param sc The RS surface config to create.
- *
- * @return RenderScriptGL The new object created.
- */
- public RenderScriptGL createRenderScriptGL(RenderScriptGL.SurfaceConfig sc) {
- RenderScriptGL rs = new RenderScriptGL(this.getContext(), sc);
- setRenderScriptGL(rs);
- if (mSurfaceTexture != null) {
- mRS.setSurfaceTexture(mSurfaceTexture, getWidth(), getHeight());
- }
- return rs;
- }
-
- /**
- * @deprecated in API 16
- * Destroy the RenderScriptGL object associated with this
- * TextureView.
- */
- public void destroyRenderScriptGL() {
- mRS.destroy();
- mRS = null;
- }
-
- /**
- * @deprecated in API 16
- * Set a new RenderScriptGL object. This also will attach the
- * new object to the TextureView if present.
- *
- * @param rs The new RS object.
- */
- public void setRenderScriptGL(RenderScriptGL rs) {
- mRS = rs;
- if (mSurfaceTexture != null) {
- mRS.setSurfaceTexture(mSurfaceTexture, getWidth(), getHeight());
- }
- }
-
- /**
- * @deprecated in API 16
- * Returns the previously set RenderScriptGL object.
- *
- * @return RenderScriptGL
- */
- public RenderScriptGL getRenderScriptGL() {
- return mRS;
- }
-}
-
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
deleted file mode 100644
index d2c7456..0000000
--- a/graphics/java/android/renderscript/RenderScript.java
+++ /dev/null
@@ -1,1213 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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.File;
-import java.lang.reflect.Method;
-
-import android.content.Context;
-import android.content.res.AssetManager;
-import android.graphics.Bitmap;
-import android.graphics.SurfaceTexture;
-import android.os.Process;
-import android.util.Log;
-import android.view.Surface;
-import android.os.SystemProperties;
-import android.os.Trace;
-
-/**
- * This class provides access to a RenderScript context, which controls RenderScript
- * initialization, resource management, and teardown. An instance of the RenderScript
- * class must be created before any other RS objects can be created.
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class RenderScript {
- static final long TRACE_TAG = Trace.TRACE_TAG_RS;
-
- static final String LOG_TAG = "RenderScript_jni";
- static final boolean DEBUG = false;
- @SuppressWarnings({"UnusedDeclaration", "deprecation"})
- static final boolean LOG_ENABLED = false;
-
- private Context mApplicationContext;
-
- /*
- * We use a class initializer to allow the native code to cache some
- * field offsets.
- */
- @SuppressWarnings({"FieldCanBeLocal", "UnusedDeclaration"}) // TODO: now used locally; remove?
- static boolean sInitialized;
- native static void _nInit();
-
- static Object sRuntime;
- static Method registerNativeAllocation;
- static Method registerNativeFree;
-
- static {
- sInitialized = false;
- if (!SystemProperties.getBoolean("config.disable_renderscript", false)) {
- try {
- Class<?> vm_runtime = Class.forName("dalvik.system.VMRuntime");
- Method get_runtime = vm_runtime.getDeclaredMethod("getRuntime");
- sRuntime = get_runtime.invoke(null);
- registerNativeAllocation = vm_runtime.getDeclaredMethod("registerNativeAllocation", Integer.TYPE);
- registerNativeFree = vm_runtime.getDeclaredMethod("registerNativeFree", Integer.TYPE);
- } catch (Exception e) {
- Log.e(LOG_TAG, "Error loading GC methods: " + e);
- throw new RSRuntimeException("Error loading GC methods: " + e);
- }
- try {
- System.loadLibrary("rs_jni");
- _nInit();
- sInitialized = true;
- } catch (UnsatisfiedLinkError e) {
- Log.e(LOG_TAG, "Error loading RS jni library: " + e);
- throw new RSRuntimeException("Error loading RS jni library: " + e);
- }
- }
- }
-
- // Non-threadsafe functions.
- native long nDeviceCreate();
- native void nDeviceDestroy(long dev);
- native void nDeviceSetConfig(long dev, int param, int value);
- native int nContextGetUserMessage(long con, int[] data);
- native String nContextGetErrorMessage(long con);
- native int nContextPeekMessage(long con, int[] subID);
- native void nContextInitToClient(long con);
- native void nContextDeinitToClient(long con);
-
- static File mCacheDir;
-
- /**
- * Sets the directory to use as a persistent storage for the
- * renderscript object file cache.
- *
- * @hide
- * @param cacheDir A directory the current process can write to
- */
- public static void setupDiskCache(File cacheDir) {
- if (!sInitialized) {
- Log.e(LOG_TAG, "RenderScript.setupDiskCache() called when disabled");
- return;
- }
-
- // Defer creation of cache path to nScriptCCreate().
- mCacheDir = cacheDir;
- }
-
- /**
- * ContextType specifies the specific type of context to be created.
- *
- */
- public enum ContextType {
- /**
- * NORMAL context, this is the default and what shipping apps should
- * use.
- */
- NORMAL (0),
-
- /**
- * DEBUG context, perform extra runtime checks to validate the
- * kernels and APIs are being used as intended. Get and SetElementAt
- * will be bounds checked in this mode.
- */
- DEBUG (1),
-
- /**
- * PROFILE context, Intended to be used once the first time an
- * application is run on a new device. This mode allows the runtime to
- * do additional testing and performance tuning.
- */
- PROFILE (2);
-
- int mID;
- ContextType(int id) {
- mID = id;
- }
- }
-
- ContextType mContextType;
-
- // Methods below are wrapped to protect the non-threadsafe
- // lockless fifo.
- native long rsnContextCreateGL(long dev, int ver, int sdkVer,
- int colorMin, int colorPref,
- int alphaMin, int alphaPref,
- int depthMin, int depthPref,
- int stencilMin, int stencilPref,
- int samplesMin, int samplesPref, float samplesQ, int dpi);
- synchronized long nContextCreateGL(long dev, int ver, int sdkVer,
- int colorMin, int colorPref,
- int alphaMin, int alphaPref,
- int depthMin, int depthPref,
- int stencilMin, int stencilPref,
- int samplesMin, int samplesPref, float samplesQ, int dpi) {
- return rsnContextCreateGL(dev, ver, sdkVer, colorMin, colorPref,
- alphaMin, alphaPref, depthMin, depthPref,
- stencilMin, stencilPref,
- samplesMin, samplesPref, samplesQ, dpi);
- }
- native long rsnContextCreate(long dev, int ver, int sdkVer, int contextType);
- synchronized long nContextCreate(long dev, int ver, int sdkVer, int contextType) {
- return rsnContextCreate(dev, ver, sdkVer, contextType);
- }
- native void rsnContextDestroy(long con);
- synchronized void nContextDestroy() {
- validate();
- rsnContextDestroy(mContext);
- }
- native void rsnContextSetSurface(long con, int w, int h, Surface sur);
- synchronized void nContextSetSurface(int w, int h, Surface sur) {
- validate();
- rsnContextSetSurface(mContext, w, h, sur);
- }
- native void rsnContextSetSurfaceTexture(long con, int w, int h, SurfaceTexture sur);
- synchronized void nContextSetSurfaceTexture(int w, int h, SurfaceTexture sur) {
- validate();
- rsnContextSetSurfaceTexture(mContext, w, h, sur);
- }
- native void rsnContextSetPriority(long con, int p);
- synchronized void nContextSetPriority(int p) {
- validate();
- rsnContextSetPriority(mContext, p);
- }
- native void rsnContextDump(long con, int bits);
- synchronized void nContextDump(int bits) {
- validate();
- rsnContextDump(mContext, bits);
- }
- native void rsnContextFinish(long con);
- synchronized void nContextFinish() {
- validate();
- rsnContextFinish(mContext);
- }
-
- native void rsnContextSendMessage(long con, int id, int[] data);
- synchronized void nContextSendMessage(int id, int[] data) {
- validate();
- rsnContextSendMessage(mContext, id, data);
- }
-
- native void rsnContextBindRootScript(long con, int script);
- synchronized void nContextBindRootScript(int script) {
- validate();
- rsnContextBindRootScript(mContext, script);
- }
- native void rsnContextBindSampler(long con, int sampler, int slot);
- synchronized void nContextBindSampler(int sampler, int slot) {
- validate();
- rsnContextBindSampler(mContext, sampler, slot);
- }
- native void rsnContextBindProgramStore(long con, int pfs);
- synchronized void nContextBindProgramStore(int pfs) {
- validate();
- rsnContextBindProgramStore(mContext, pfs);
- }
- native void rsnContextBindProgramFragment(long con, int pf);
- synchronized void nContextBindProgramFragment(int pf) {
- validate();
- rsnContextBindProgramFragment(mContext, pf);
- }
- native void rsnContextBindProgramVertex(long con, int pv);
- synchronized void nContextBindProgramVertex(int pv) {
- validate();
- rsnContextBindProgramVertex(mContext, pv);
- }
- native void rsnContextBindProgramRaster(long con, int pr);
- synchronized void nContextBindProgramRaster(int pr) {
- validate();
- rsnContextBindProgramRaster(mContext, pr);
- }
- native void rsnContextPause(long con);
- synchronized void nContextPause() {
- validate();
- rsnContextPause(mContext);
- }
- native void rsnContextResume(long con);
- synchronized void nContextResume() {
- validate();
- rsnContextResume(mContext);
- }
-
- native void rsnAssignName(long con, long obj, byte[] name);
- synchronized void nAssignName(long obj, byte[] name) {
- validate();
- rsnAssignName(mContext, obj, name);
- }
- native String rsnGetName(long con, long obj);
- synchronized String nGetName(long obj) {
- validate();
- return rsnGetName(mContext, obj);
- }
- native void rsnObjDestroy(long con, long id);
- synchronized void nObjDestroy(long id) {
- // There is a race condition here. The calling code may be run
- // by the gc while teardown is occuring. This protects againts
- // deleting dead objects.
- if (mContext != 0) {
- rsnObjDestroy(mContext, id);
- }
- }
-
- native long rsnElementCreate(long con, long type, int kind, boolean norm, int vecSize);
- synchronized long nElementCreate(long type, int kind, boolean norm, int vecSize) {
- validate();
- return rsnElementCreate(mContext, type, kind, norm, vecSize);
- }
- native long rsnElementCreate2(long con, int[]elements, String[] names, int[] arraySizes);
- synchronized long nElementCreate2(int[] elements, String[] names, int[] arraySizes) {
- validate();
- return rsnElementCreate2(mContext, elements, names, arraySizes);
- }
- native void rsnElementGetNativeData(long con, long id, int[] elementData);
- synchronized void nElementGetNativeData(long id, int[] elementData) {
- validate();
- rsnElementGetNativeData(mContext, id, elementData);
- }
- native void rsnElementGetSubElements(long con, long id,
- int[] IDs, String[] names, int[] arraySizes);
- synchronized void nElementGetSubElements(long id, int[] IDs, String[] names, int[] arraySizes) {
- validate();
- rsnElementGetSubElements(mContext, id, IDs, names, arraySizes);
- }
-
- native long rsnTypeCreate(long con, long eid, int x, int y, int z, boolean mips, boolean faces, int yuv);
- synchronized long nTypeCreate(long eid, int x, int y, int z, boolean mips, boolean faces, int yuv) {
- validate();
- return rsnTypeCreate(mContext, eid, x, y, z, mips, faces, yuv);
- }
- native void rsnTypeGetNativeData(long con, long id, int[] typeData);
- synchronized void nTypeGetNativeData(long id, int[] typeData) {
- validate();
- rsnTypeGetNativeData(mContext, id, typeData);
- }
-
- native long rsnAllocationCreateTyped(long con, long type, int mip, int usage, int pointer);
- synchronized long nAllocationCreateTyped(long type, int mip, int usage, int pointer) {
- validate();
- return rsnAllocationCreateTyped(mContext, type, mip, usage, pointer);
- }
- native long rsnAllocationCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage);
- synchronized long nAllocationCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) {
- validate();
- return rsnAllocationCreateFromBitmap(mContext, type, mip, bmp, usage);
- }
-
- native long rsnAllocationCreateBitmapBackedAllocation(long con, long type, int mip, Bitmap bmp, int usage);
- synchronized long nAllocationCreateBitmapBackedAllocation(long type, int mip, Bitmap bmp, int usage) {
- validate();
- return rsnAllocationCreateBitmapBackedAllocation(mContext, type, mip, bmp, usage);
- }
-
- native long rsnAllocationCubeCreateFromBitmap(long con, long type, int mip, Bitmap bmp, int usage);
- synchronized long nAllocationCubeCreateFromBitmap(long type, int mip, Bitmap bmp, int usage) {
- validate();
- return rsnAllocationCubeCreateFromBitmap(mContext, type, mip, bmp, usage);
- }
- native long rsnAllocationCreateBitmapRef(long con, long type, Bitmap bmp);
- synchronized long nAllocationCreateBitmapRef(long type, Bitmap bmp) {
- validate();
- return rsnAllocationCreateBitmapRef(mContext, type, bmp);
- }
- native long rsnAllocationCreateFromAssetStream(long con, int mips, int assetStream, int usage);
- synchronized long nAllocationCreateFromAssetStream(int mips, int assetStream, int usage) {
- validate();
- return rsnAllocationCreateFromAssetStream(mContext, mips, assetStream, usage);
- }
-
- native void rsnAllocationCopyToBitmap(long con, long alloc, Bitmap bmp);
- synchronized void nAllocationCopyToBitmap(long alloc, Bitmap bmp) {
- validate();
- rsnAllocationCopyToBitmap(mContext, alloc, bmp);
- }
-
-
- native void rsnAllocationSyncAll(long con, long alloc, int src);
- synchronized void nAllocationSyncAll(long alloc, int src) {
- validate();
- rsnAllocationSyncAll(mContext, alloc, src);
- }
- native Surface rsnAllocationGetSurface(long con, long alloc);
- synchronized Surface nAllocationGetSurface(long alloc) {
- validate();
- return rsnAllocationGetSurface(mContext, alloc);
- }
- native void rsnAllocationSetSurface(long con, long alloc, Surface sur);
- synchronized void nAllocationSetSurface(long alloc, Surface sur) {
- validate();
- rsnAllocationSetSurface(mContext, alloc, sur);
- }
- native void rsnAllocationIoSend(long con, long alloc);
- synchronized void nAllocationIoSend(long alloc) {
- validate();
- rsnAllocationIoSend(mContext, alloc);
- }
- native void rsnAllocationIoReceive(long con, long alloc);
- synchronized void nAllocationIoReceive(long alloc) {
- validate();
- rsnAllocationIoReceive(mContext, alloc);
- }
-
-
- native void rsnAllocationGenerateMipmaps(long con, long alloc);
- synchronized void nAllocationGenerateMipmaps(long alloc) {
- validate();
- rsnAllocationGenerateMipmaps(mContext, alloc);
- }
- native void rsnAllocationCopyFromBitmap(long con, long alloc, Bitmap bmp);
- synchronized void nAllocationCopyFromBitmap(long alloc, Bitmap bmp) {
- validate();
- rsnAllocationCopyFromBitmap(mContext, alloc, bmp);
- }
-
-
- native void rsnAllocationData1D(long con, long id, int off, int mip, int count, Object d, int sizeBytes, int dt);
- synchronized void nAllocationData1D(long id, int off, int mip, int count, Object d, int sizeBytes, Element.DataType dt) {
- validate();
- rsnAllocationData1D(mContext, id, off, mip, count, d, sizeBytes, dt.mID);
- }
-
- native void rsnAllocationElementData1D(long con,long id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes);
- synchronized void nAllocationElementData1D(long id, int xoff, int mip, int compIdx, byte[] d, int sizeBytes) {
- validate();
- rsnAllocationElementData1D(mContext, id, xoff, mip, compIdx, d, sizeBytes);
- }
-
- native void rsnAllocationData2D(long con,
- long dstAlloc, int dstXoff, int dstYoff,
- int dstMip, int dstFace,
- int width, int height,
- long srcAlloc, int srcXoff, int srcYoff,
- int srcMip, int srcFace);
- synchronized void nAllocationData2D(long dstAlloc, int dstXoff, int dstYoff,
- int dstMip, int dstFace,
- int width, int height,
- long srcAlloc, int srcXoff, int srcYoff,
- int srcMip, int srcFace) {
- validate();
- rsnAllocationData2D(mContext,
- dstAlloc, dstXoff, dstYoff,
- dstMip, dstFace,
- width, height,
- srcAlloc, srcXoff, srcYoff,
- srcMip, srcFace);
- }
-
- native void rsnAllocationData2D(long con, long id, int xoff, int yoff, int mip, int face,
- int w, int h, Object d, int sizeBytes, int dt);
- synchronized void nAllocationData2D(long id, int xoff, int yoff, int mip, int face,
- int w, int h, Object d, int sizeBytes, Element.DataType dt) {
- validate();
- rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes, dt.mID);
- }
-
- native void rsnAllocationData2D(long con, long id, int xoff, int yoff, int mip, int face, Bitmap b);
- synchronized void nAllocationData2D(long id, int xoff, int yoff, int mip, int face, Bitmap b) {
- validate();
- rsnAllocationData2D(mContext, id, xoff, yoff, mip, face, b);
- }
-
- native void rsnAllocationData3D(long con,
- long dstAlloc, int dstXoff, int dstYoff, int dstZoff,
- int dstMip,
- int width, int height, int depth,
- long srcAlloc, int srcXoff, int srcYoff, int srcZoff,
- int srcMip);
- synchronized void nAllocationData3D(long dstAlloc, int dstXoff, int dstYoff, int dstZoff,
- int dstMip,
- int width, int height, int depth,
- long srcAlloc, int srcXoff, int srcYoff, int srcZoff,
- int srcMip) {
- validate();
- rsnAllocationData3D(mContext,
- dstAlloc, dstXoff, dstYoff, dstZoff,
- dstMip, width, height, depth,
- srcAlloc, srcXoff, srcYoff, srcZoff, srcMip);
- }
-
- native void rsnAllocationData3D(long con, long id, int xoff, int yoff, int zoff, int mip,
- int w, int h, int depth, Object d, int sizeBytes, int dt);
- synchronized void nAllocationData3D(long id, int xoff, int yoff, int zoff, int mip,
- int w, int h, int depth, Object d, int sizeBytes, Element.DataType dt) {
- validate();
- rsnAllocationData3D(mContext, id, xoff, yoff, zoff, mip, w, h, depth, d, sizeBytes, dt.mID);
- }
-
- native void rsnAllocationRead(long con, long id, Object d, int dt);
- synchronized void nAllocationRead(long id, Object d, Element.DataType dt) {
- validate();
- rsnAllocationRead(mContext, id, d, dt.mID);
- }
-
- native void rsnAllocationRead1D(long con, long id, int off, int mip, int count, Object d,
- int sizeBytes, int dt);
- synchronized void nAllocationRead1D(long id, int off, int mip, int count, Object d,
- int sizeBytes, Element.DataType dt) {
- validate();
- rsnAllocationRead1D(mContext, id, off, mip, count, d, sizeBytes, dt.mID);
- }
-
- native void rsnAllocationRead2D(long con, long id, int xoff, int yoff, int mip, int face,
- int w, int h, Object d, int sizeBytes, int dt);
- synchronized void nAllocationRead2D(long id, int xoff, int yoff, int mip, int face,
- int w, int h, Object d, int sizeBytes, Element.DataType dt) {
- validate();
- rsnAllocationRead2D(mContext, id, xoff, yoff, mip, face, w, h, d, sizeBytes, dt.mID);
- }
-
- native long rsnAllocationGetType(long con, long id);
- synchronized long nAllocationGetType(long id) {
- validate();
- return rsnAllocationGetType(mContext, id);
- }
-
- native void rsnAllocationResize1D(long con, long id, int dimX);
- synchronized void nAllocationResize1D(long id, int dimX) {
- validate();
- rsnAllocationResize1D(mContext, id, dimX);
- }
-
- native long rsnFileA3DCreateFromAssetStream(long con, int assetStream);
- synchronized long nFileA3DCreateFromAssetStream(int assetStream) {
- validate();
- return rsnFileA3DCreateFromAssetStream(mContext, assetStream);
- }
- native long rsnFileA3DCreateFromFile(long con, String path);
- synchronized long nFileA3DCreateFromFile(String path) {
- validate();
- return rsnFileA3DCreateFromFile(mContext, path);
- }
- native long rsnFileA3DCreateFromAsset(long con, AssetManager mgr, String path);
- synchronized long nFileA3DCreateFromAsset(AssetManager mgr, String path) {
- validate();
- return rsnFileA3DCreateFromAsset(mContext, mgr, path);
- }
- native int rsnFileA3DGetNumIndexEntries(long con, long fileA3D);
- synchronized int nFileA3DGetNumIndexEntries(long fileA3D) {
- validate();
- return rsnFileA3DGetNumIndexEntries(mContext, fileA3D);
- }
- native void rsnFileA3DGetIndexEntries(long con, long fileA3D, int numEntries, int[] IDs, String[] names);
- synchronized void nFileA3DGetIndexEntries(long fileA3D, int numEntries, int[] IDs, String[] names) {
- validate();
- rsnFileA3DGetIndexEntries(mContext, fileA3D, numEntries, IDs, names);
- }
- native int rsnFileA3DGetEntryByIndex(long con, long fileA3D, int index);
- synchronized int nFileA3DGetEntryByIndex(long fileA3D, int index) {
- validate();
- return rsnFileA3DGetEntryByIndex(mContext, fileA3D, index);
- }
-
- native int rsnFontCreateFromFile(long con, String fileName, float size, int dpi);
- synchronized int nFontCreateFromFile(String fileName, float size, int dpi) {
- validate();
- return rsnFontCreateFromFile(mContext, fileName, size, dpi);
- }
- native int rsnFontCreateFromAssetStream(long con, String name, float size, int dpi, int assetStream);
- synchronized int nFontCreateFromAssetStream(String name, float size, int dpi, int assetStream) {
- validate();
- return rsnFontCreateFromAssetStream(mContext, name, size, dpi, assetStream);
- }
- native int rsnFontCreateFromAsset(long con, AssetManager mgr, String path, float size, int dpi);
- synchronized int nFontCreateFromAsset(AssetManager mgr, String path, float size, int dpi) {
- validate();
- return rsnFontCreateFromAsset(mContext, mgr, path, size, dpi);
- }
-
-
- native void rsnScriptBindAllocation(long con, long script, long alloc, int slot);
- synchronized void nScriptBindAllocation(long script, long alloc, int slot) {
- validate();
- rsnScriptBindAllocation(mContext, script, alloc, slot);
- }
- native void rsnScriptSetTimeZone(long con, long script, byte[] timeZone);
- synchronized void nScriptSetTimeZone(long script, byte[] timeZone) {
- validate();
- rsnScriptSetTimeZone(mContext, script, timeZone);
- }
- native void rsnScriptInvoke(long con, long id, int slot);
- synchronized void nScriptInvoke(long id, int slot) {
- validate();
- rsnScriptInvoke(mContext, id, slot);
- }
- native void rsnScriptForEach(long con, long id, int slot, long ain, long aout, byte[] params);
- native void rsnScriptForEach(long con, long id, int slot, long ain, long aout);
- native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout, byte[] params,
- int xstart, int xend, int ystart, int yend, int zstart, int zend);
- native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout,
- int xstart, int xend, int ystart, int yend, int zstart, int zend);
- synchronized void nScriptForEach(long id, int slot, long ain, long aout, byte[] params) {
- validate();
- if (params == null) {
- rsnScriptForEach(mContext, id, slot, ain, aout);
- } else {
- rsnScriptForEach(mContext, id, slot, ain, aout, params);
- }
- }
-
- synchronized void nScriptForEachClipped(long id, int slot, long ain, long aout, byte[] params,
- int xstart, int xend, int ystart, int yend, int zstart, int zend) {
- validate();
- if (params == null) {
- rsnScriptForEachClipped(mContext, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend);
- } else {
- rsnScriptForEachClipped(mContext, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend);
- }
- }
-
- native void rsnScriptInvokeV(long con, long id, int slot, byte[] params);
- synchronized void nScriptInvokeV(long id, int slot, byte[] params) {
- validate();
- rsnScriptInvokeV(mContext, id, slot, params);
- }
-
- native void rsnScriptSetVarI(long con, long id, int slot, int val);
- synchronized void nScriptSetVarI(long id, int slot, int val) {
- validate();
- rsnScriptSetVarI(mContext, id, slot, val);
- }
- native int rsnScriptGetVarI(long con, long id, int slot);
- synchronized int nScriptGetVarI(long id, int slot) {
- validate();
- return rsnScriptGetVarI(mContext, id, slot);
- }
-
- native void rsnScriptSetVarJ(long con, long id, int slot, long val);
- synchronized void nScriptSetVarJ(long id, int slot, long val) {
- validate();
- rsnScriptSetVarJ(mContext, id, slot, val);
- }
- native long rsnScriptGetVarJ(long con, long id, int slot);
- synchronized long nScriptGetVarJ(long id, int slot) {
- validate();
- return rsnScriptGetVarJ(mContext, id, slot);
- }
-
- native void rsnScriptSetVarF(long con, long id, int slot, float val);
- synchronized void nScriptSetVarF(long id, int slot, float val) {
- validate();
- rsnScriptSetVarF(mContext, id, slot, val);
- }
- native float rsnScriptGetVarF(long con, long id, int slot);
- synchronized float nScriptGetVarF(long id, int slot) {
- validate();
- return rsnScriptGetVarF(mContext, id, slot);
- }
- native void rsnScriptSetVarD(long con, long id, int slot, double val);
- synchronized void nScriptSetVarD(long id, int slot, double val) {
- validate();
- rsnScriptSetVarD(mContext, id, slot, val);
- }
- native double rsnScriptGetVarD(long con, long id, int slot);
- synchronized double nScriptGetVarD(long id, int slot) {
- validate();
- return rsnScriptGetVarD(mContext, id, slot);
- }
- native void rsnScriptSetVarV(long con, long id, int slot, byte[] val);
- synchronized void nScriptSetVarV(long id, int slot, byte[] val) {
- validate();
- rsnScriptSetVarV(mContext, id, slot, val);
- }
- native void rsnScriptGetVarV(long con, long id, int slot, byte[] val);
- synchronized void nScriptGetVarV(long id, int slot, byte[] val) {
- validate();
- rsnScriptGetVarV(mContext, id, slot, val);
- }
- native void rsnScriptSetVarVE(long con, long id, int slot, byte[] val,
- long e, int[] dims);
- synchronized void nScriptSetVarVE(long id, int slot, byte[] val,
- long e, int[] dims) {
- validate();
- rsnScriptSetVarVE(mContext, id, slot, val, e, dims);
- }
- native void rsnScriptSetVarObj(long con, long id, int slot, long val);
- synchronized void nScriptSetVarObj(long id, int slot, long val) {
- validate();
- rsnScriptSetVarObj(mContext, id, slot, val);
- }
-
- native int rsnScriptCCreate(long con, String resName, String cacheDir,
- byte[] script, int length);
- synchronized int nScriptCCreate(String resName, String cacheDir, byte[] script, int length) {
- validate();
- return rsnScriptCCreate(mContext, resName, cacheDir, script, length);
- }
-
- native long rsnScriptIntrinsicCreate(long con, int id, long eid);
- synchronized long nScriptIntrinsicCreate(int id, long eid) {
- validate();
- return rsnScriptIntrinsicCreate(mContext, id, eid);
- }
-
- native long rsnScriptKernelIDCreate(long con, long sid, int slot, int sig);
- synchronized long nScriptKernelIDCreate(long sid, int slot, int sig) {
- validate();
- return rsnScriptKernelIDCreate(mContext, sid, slot, sig);
- }
-
- native long rsnScriptFieldIDCreate(long con, long sid, int slot);
- synchronized long nScriptFieldIDCreate(long sid, int slot) {
- validate();
- return rsnScriptFieldIDCreate(mContext, sid, slot);
- }
-
- native long rsnScriptGroupCreate(long con, int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types);
- synchronized long nScriptGroupCreate(int[] kernels, int[] src, int[] dstk, int[] dstf, int[] types) {
- validate();
- return rsnScriptGroupCreate(mContext, kernels, src, dstk, dstf, types);
- }
-
- native void rsnScriptGroupSetInput(long con, long group, long kernel, long alloc);
- synchronized void nScriptGroupSetInput(long group, long kernel, long alloc) {
- validate();
- rsnScriptGroupSetInput(mContext, group, kernel, alloc);
- }
-
- native void rsnScriptGroupSetOutput(long con, long group, long kernel, long alloc);
- synchronized void nScriptGroupSetOutput(long group, long kernel, long alloc) {
- validate();
- rsnScriptGroupSetOutput(mContext, group, kernel, alloc);
- }
-
- native void rsnScriptGroupExecute(long con, long group);
- synchronized void nScriptGroupExecute(long group) {
- validate();
- rsnScriptGroupExecute(mContext, group);
- }
-
- native int rsnSamplerCreate(long con, int magFilter, int minFilter,
- int wrapS, int wrapT, int wrapR, float aniso);
- synchronized int nSamplerCreate(int magFilter, int minFilter,
- int wrapS, int wrapT, int wrapR, float aniso) {
- validate();
- return rsnSamplerCreate(mContext, magFilter, minFilter, wrapS, wrapT, wrapR, aniso);
- }
-
- native int rsnProgramStoreCreate(long con, boolean r, boolean g, boolean b, boolean a,
- boolean depthMask, boolean dither,
- int srcMode, int dstMode, int depthFunc);
- synchronized int nProgramStoreCreate(boolean r, boolean g, boolean b, boolean a,
- boolean depthMask, boolean dither,
- int srcMode, int dstMode, int depthFunc) {
- validate();
- return rsnProgramStoreCreate(mContext, r, g, b, a, depthMask, dither, srcMode,
- dstMode, depthFunc);
- }
-
- native long rsnProgramRasterCreate(long con, boolean pointSprite, int cullMode);
- synchronized long nProgramRasterCreate(boolean pointSprite, int cullMode) {
- validate();
- return rsnProgramRasterCreate(mContext, pointSprite, cullMode);
- }
-
- native void rsnProgramBindConstants(long con, long pv, int slot, long mID);
- synchronized void nProgramBindConstants(long pv, int slot, long mID) {
- validate();
- rsnProgramBindConstants(mContext, pv, slot, mID);
- }
- native void rsnProgramBindTexture(long con, long vpf, int slot, long a);
- synchronized void nProgramBindTexture(long vpf, int slot, long a) {
- validate();
- rsnProgramBindTexture(mContext, vpf, slot, a);
- }
- native void rsnProgramBindSampler(long con, long vpf, int slot, long s);
- synchronized void nProgramBindSampler(long vpf, int slot, long s) {
- validate();
- rsnProgramBindSampler(mContext, vpf, slot, s);
- }
- native long rsnProgramFragmentCreate(long con, String shader, String[] texNames, int[] params);
- synchronized long nProgramFragmentCreate(String shader, String[] texNames, int[] params) {
- validate();
- return rsnProgramFragmentCreate(mContext, shader, texNames, params);
- }
- native long rsnProgramVertexCreate(long con, String shader, String[] texNames, int[] params);
- synchronized long nProgramVertexCreate(String shader, String[] texNames, int[] params) {
- validate();
- return rsnProgramVertexCreate(mContext, shader, texNames, params);
- }
-
- native long rsnMeshCreate(long con, int[] vtx, int[] idx, int[] prim);
- synchronized long nMeshCreate(int[] vtx, int[] idx, int[] prim) {
- validate();
- return rsnMeshCreate(mContext, vtx, idx, prim);
- }
- native int rsnMeshGetVertexBufferCount(long con, long id);
- synchronized int nMeshGetVertexBufferCount(long id) {
- validate();
- return rsnMeshGetVertexBufferCount(mContext, id);
- }
- native int rsnMeshGetIndexCount(long con, long id);
- synchronized int nMeshGetIndexCount(long id) {
- validate();
- return rsnMeshGetIndexCount(mContext, id);
- }
- native void rsnMeshGetVertices(long con, long id, int[] vtxIds, int vtxIdCount);
- synchronized void nMeshGetVertices(long id, int[] vtxIds, int vtxIdCount) {
- validate();
- rsnMeshGetVertices(mContext, id, vtxIds, vtxIdCount);
- }
- native void rsnMeshGetIndices(long con, long id, int[] idxIds, int[] primitives, int vtxIdCount);
- synchronized void nMeshGetIndices(long id, int[] idxIds, int[] primitives, int vtxIdCount) {
- validate();
- rsnMeshGetIndices(mContext, id, idxIds, primitives, vtxIdCount);
- }
-
- native long rsnPathCreate(long con, int prim, boolean isStatic, long vtx, int loop, float q);
- synchronized long nPathCreate(int prim, boolean isStatic, long vtx, int loop, float q) {
- validate();
- return rsnPathCreate(mContext, prim, isStatic, vtx, loop, q);
- }
-
- long mDev;
- long mContext;
- @SuppressWarnings({"FieldCanBeLocal"})
- MessageThread mMessageThread;
-
- Element mElement_U8;
- Element mElement_I8;
- Element mElement_U16;
- Element mElement_I16;
- Element mElement_U32;
- Element mElement_I32;
- Element mElement_U64;
- Element mElement_I64;
- Element mElement_F32;
- Element mElement_F64;
- Element mElement_BOOLEAN;
-
- Element mElement_ELEMENT;
- Element mElement_TYPE;
- Element mElement_ALLOCATION;
- Element mElement_SAMPLER;
- Element mElement_SCRIPT;
- Element mElement_MESH;
- Element mElement_PROGRAM_FRAGMENT;
- Element mElement_PROGRAM_VERTEX;
- Element mElement_PROGRAM_RASTER;
- Element mElement_PROGRAM_STORE;
- Element mElement_FONT;
-
- Element mElement_A_8;
- Element mElement_RGB_565;
- Element mElement_RGB_888;
- Element mElement_RGBA_5551;
- Element mElement_RGBA_4444;
- Element mElement_RGBA_8888;
-
- Element mElement_FLOAT_2;
- Element mElement_FLOAT_3;
- Element mElement_FLOAT_4;
-
- Element mElement_DOUBLE_2;
- Element mElement_DOUBLE_3;
- Element mElement_DOUBLE_4;
-
- Element mElement_UCHAR_2;
- Element mElement_UCHAR_3;
- Element mElement_UCHAR_4;
-
- Element mElement_CHAR_2;
- Element mElement_CHAR_3;
- Element mElement_CHAR_4;
-
- Element mElement_USHORT_2;
- Element mElement_USHORT_3;
- Element mElement_USHORT_4;
-
- Element mElement_SHORT_2;
- Element mElement_SHORT_3;
- Element mElement_SHORT_4;
-
- Element mElement_UINT_2;
- Element mElement_UINT_3;
- Element mElement_UINT_4;
-
- Element mElement_INT_2;
- Element mElement_INT_3;
- Element mElement_INT_4;
-
- Element mElement_ULONG_2;
- Element mElement_ULONG_3;
- Element mElement_ULONG_4;
-
- Element mElement_LONG_2;
- Element mElement_LONG_3;
- Element mElement_LONG_4;
-
- Element mElement_YUV;
-
- Element mElement_MATRIX_4X4;
- Element mElement_MATRIX_3X3;
- Element mElement_MATRIX_2X2;
-
- Sampler mSampler_CLAMP_NEAREST;
- Sampler mSampler_CLAMP_LINEAR;
- Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR;
- Sampler mSampler_WRAP_NEAREST;
- Sampler mSampler_WRAP_LINEAR;
- Sampler mSampler_WRAP_LINEAR_MIP_LINEAR;
- Sampler mSampler_MIRRORED_REPEAT_NEAREST;
- Sampler mSampler_MIRRORED_REPEAT_LINEAR;
- Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
-
- ProgramStore mProgramStore_BLEND_NONE_DEPTH_TEST;
- ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH;
- ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_TEST;
- ProgramStore mProgramStore_BLEND_ALPHA_DEPTH_NO_DEPTH;
-
- ProgramRaster mProgramRaster_CULL_BACK;
- ProgramRaster mProgramRaster_CULL_FRONT;
- ProgramRaster mProgramRaster_CULL_NONE;
-
- ///////////////////////////////////////////////////////////////////////////////////
- //
-
- /**
- * The base class from which an application should derive in order
- * to receive RS messages from scripts. When a script calls {@code
- * rsSendToClient}, the data fields will be filled, and the run
- * method will be called on a separate thread. This will occur
- * some time after {@code rsSendToClient} completes in the script,
- * as {@code rsSendToClient} is asynchronous. Message handlers are
- * not guaranteed to have completed when {@link
- * android.renderscript.RenderScript#finish} returns.
- *
- */
- public static class RSMessageHandler implements Runnable {
- protected int[] mData;
- protected int mID;
- protected int mLength;
- public void run() {
- }
- }
- /**
- * If an application is expecting messages, it should set this
- * field to an instance of {@link RSMessageHandler}. This
- * instance will receive all the user messages sent from {@code
- * sendToClient} by scripts from this context.
- *
- */
- RSMessageHandler mMessageCallback = null;
-
- public void setMessageHandler(RSMessageHandler msg) {
- mMessageCallback = msg;
- }
- public RSMessageHandler getMessageHandler() {
- return mMessageCallback;
- }
-
- /**
- * Place a message into the message queue to be sent back to the message
- * handler once all previous commands have been executed.
- *
- * @param id
- * @param data
- */
- public void sendMessage(int id, int[] data) {
- nContextSendMessage(id, data);
- }
-
- /**
- * The runtime error handler base class. An application should derive from this class
- * if it wishes to install an error handler. When errors occur at runtime,
- * the fields in this class will be filled, and the run method will be called.
- *
- */
- public static class RSErrorHandler implements Runnable {
- protected String mErrorMessage;
- protected int mErrorNum;
- public void run() {
- }
- }
-
- /**
- * Application Error handler. All runtime errors will be dispatched to the
- * instance of RSAsyncError set here. If this field is null a
- * {@link RSRuntimeException} will instead be thrown with details about the error.
- * This will cause program termaination.
- *
- */
- RSErrorHandler mErrorCallback = null;
-
- public void setErrorHandler(RSErrorHandler msg) {
- mErrorCallback = msg;
- }
- public RSErrorHandler getErrorHandler() {
- return mErrorCallback;
- }
-
- /**
- * RenderScript worker thread priority enumeration. The default value is
- * NORMAL. Applications wishing to do background processing should set
- * their priority to LOW to avoid starving forground processes.
- */
- public enum Priority {
- LOW (Process.THREAD_PRIORITY_BACKGROUND + (5 * Process.THREAD_PRIORITY_LESS_FAVORABLE)),
- NORMAL (Process.THREAD_PRIORITY_DISPLAY);
-
- int mID;
- Priority(int id) {
- mID = id;
- }
- }
-
- void validate() {
- if (mContext == 0) {
- throw new RSInvalidStateException("Calling RS with no Context active.");
- }
- }
-
-
- /**
- * Change the priority of the worker threads for this context.
- *
- * @param p New priority to be set.
- */
- public void setPriority(Priority p) {
- validate();
- nContextSetPriority(p.mID);
- }
-
- static class MessageThread extends Thread {
- RenderScript mRS;
- boolean mRun = true;
- int[] mAuxData = new int[2];
-
- static final int RS_MESSAGE_TO_CLIENT_NONE = 0;
- static final int RS_MESSAGE_TO_CLIENT_EXCEPTION = 1;
- static final int RS_MESSAGE_TO_CLIENT_RESIZE = 2;
- static final int RS_MESSAGE_TO_CLIENT_ERROR = 3;
- static final int RS_MESSAGE_TO_CLIENT_USER = 4;
- static final int RS_MESSAGE_TO_CLIENT_NEW_BUFFER = 5;
-
- static final int RS_ERROR_FATAL_DEBUG = 0x0800;
- static final int RS_ERROR_FATAL_UNKNOWN = 0x1000;
-
- MessageThread(RenderScript rs) {
- super("RSMessageThread");
- mRS = rs;
-
- }
-
- public void run() {
- // This function is a temporary solution. The final solution will
- // used typed allocations where the message id is the type indicator.
- int[] rbuf = new int[16];
- mRS.nContextInitToClient(mRS.mContext);
- while(mRun) {
- rbuf[0] = 0;
- int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData);
- int size = mAuxData[1];
- int subID = mAuxData[0];
-
- if (msg == RS_MESSAGE_TO_CLIENT_USER) {
- if ((size>>2) >= rbuf.length) {
- rbuf = new int[(size + 3) >> 2];
- }
- if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) !=
- RS_MESSAGE_TO_CLIENT_USER) {
- throw new RSDriverException("Error processing message from RenderScript.");
- }
-
- if(mRS.mMessageCallback != null) {
- mRS.mMessageCallback.mData = rbuf;
- mRS.mMessageCallback.mID = subID;
- mRS.mMessageCallback.mLength = size;
- mRS.mMessageCallback.run();
- } else {
- throw new RSInvalidStateException("Received a message from the script with no message handler installed.");
- }
- continue;
- }
-
- if (msg == RS_MESSAGE_TO_CLIENT_ERROR) {
- String e = mRS.nContextGetErrorMessage(mRS.mContext);
-
- // Throw RSRuntimeException under the following conditions:
- //
- // 1) It is an unknown fatal error.
- // 2) It is a debug fatal error, and we are not in a
- // debug context.
- // 3) It is a debug fatal error, and we do not have an
- // error callback.
- if (subID >= RS_ERROR_FATAL_UNKNOWN ||
- (subID >= RS_ERROR_FATAL_DEBUG &&
- (mRS.mContextType != ContextType.DEBUG ||
- mRS.mErrorCallback == null))) {
- throw new RSRuntimeException("Fatal error " + subID + ", details: " + e);
- }
-
- if(mRS.mErrorCallback != null) {
- mRS.mErrorCallback.mErrorMessage = e;
- mRS.mErrorCallback.mErrorNum = subID;
- mRS.mErrorCallback.run();
- } else {
- android.util.Log.e(LOG_TAG, "non fatal RS error, " + e);
- // Do not throw here. In these cases, we do not have
- // a fatal error.
- }
- continue;
- }
-
- if (msg == RS_MESSAGE_TO_CLIENT_NEW_BUFFER) {
- Allocation.sendBufferNotification(subID);
- continue;
- }
-
- // 2: teardown.
- // But we want to avoid starving other threads during
- // teardown by yielding until the next line in the destructor
- // can execute to set mRun = false
- try {
- sleep(1, 0);
- } catch(InterruptedException e) {
- }
- }
- //Log.d(LOG_TAG, "MessageThread exiting.");
- }
- }
-
- RenderScript(Context ctx) {
- mContextType = ContextType.NORMAL;
- if (ctx != null) {
- mApplicationContext = ctx.getApplicationContext();
- }
- }
-
- /**
- * Gets the application context associated with the RenderScript context.
- *
- * @return The application context.
- */
- public final Context getApplicationContext() {
- return mApplicationContext;
- }
-
- /**
- * @hide
- */
- public static RenderScript create(Context ctx, int sdkVersion) {
- return create(ctx, sdkVersion, ContextType.NORMAL);
- }
-
- /**
- * Create a RenderScript context.
- *
- * @hide
- * @param ctx The context.
- * @return RenderScript
- */
- public static RenderScript create(Context ctx, int sdkVersion, ContextType ct) {
- if (!sInitialized) {
- Log.e(LOG_TAG, "RenderScript.create() called when disabled; someone is likely to crash");
- return null;
- }
-
- RenderScript rs = new RenderScript(ctx);
-
- rs.mDev = rs.nDeviceCreate();
- rs.mContext = rs.nContextCreate(rs.mDev, 0, sdkVersion, ct.mID);
- rs.mContextType = ct;
- if (rs.mContext == 0) {
- throw new RSDriverException("Failed to create RS context.");
- }
- rs.mMessageThread = new MessageThread(rs);
- rs.mMessageThread.start();
- return rs;
- }
-
- /**
- * Create a RenderScript context.
- *
- * @param ctx The context.
- * @return RenderScript
- */
- public static RenderScript create(Context ctx) {
- return create(ctx, ContextType.NORMAL);
- }
-
- /**
- * Create a RenderScript context.
- *
- *
- * @param ctx The context.
- * @param ct The type of context to be created.
- * @return RenderScript
- */
- public static RenderScript create(Context ctx, ContextType ct) {
- int v = ctx.getApplicationInfo().targetSdkVersion;
- return create(ctx, v, ct);
- }
-
- /**
- * Print the currently available debugging information about the state of
- * the RS context to the log.
- *
- */
- public void contextDump() {
- validate();
- nContextDump(0);
- }
-
- /**
- * Wait for any pending asynchronous opeations (such as copies to a RS
- * allocation or RS script executions) to complete.
- *
- */
- public void finish() {
- nContextFinish();
- }
-
- /**
- * Destroys this RenderScript context. Once this function is called,
- * using this context or any objects belonging to this context is
- * illegal.
- *
- */
- public void destroy() {
- validate();
- nContextDeinitToClient(mContext);
- mMessageThread.mRun = false;
- try {
- mMessageThread.join();
- } catch(InterruptedException e) {
- }
-
- nContextDestroy();
- mContext = 0;
-
- nDeviceDestroy(mDev);
- mDev = 0;
- }
-
- boolean isAlive() {
- return mContext != 0;
- }
-
- long safeID(BaseObj o) {
- if(o != null) {
- return o.getID(this);
- }
- return 0;
- }
-}
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
deleted file mode 100644
index 714e835..0000000
--- a/graphics/java/android/renderscript/RenderScriptGL.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * 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 android.content.Context;
-import android.graphics.SurfaceTexture;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-
-/**
- * @hide
- * @deprecated in API 16
- * The Graphics derivitive of RenderScript. Extends the basic context to add a
- * root script which is the display window for graphical output. When the
- * system needs to update the display the currently bound root script will be
- * called. This script is expected to issue the rendering commands to repaint
- * the screen.
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class RenderScriptGL extends RenderScript {
- int mWidth;
- int mHeight;
-
- /**
- * @deprecated in API 16
- * Class which is used to describe a pixel format for a graphical buffer.
- * This is used to describe the intended format of the display surface.
- *
- * The configuration is described by pairs of minimum and preferred bit
- * depths for each component within the config and additional structural
- * information.
- */
- public static class SurfaceConfig {
- int mDepthMin = 0;
- int mDepthPref = 0;
- int mStencilMin = 0;
- int mStencilPref = 0;
- int mColorMin = 8;
- int mColorPref = 8;
- int mAlphaMin = 0;
- int mAlphaPref = 0;
- int mSamplesMin = 1;
- int mSamplesPref = 1;
- float mSamplesQ = 1.f;
-
- /**
- * @deprecated in API 16
- */
- public SurfaceConfig() {
- }
-
- /**
- * @deprecated in API 16
- */
- public SurfaceConfig(SurfaceConfig sc) {
- mDepthMin = sc.mDepthMin;
- mDepthPref = sc.mDepthPref;
- mStencilMin = sc.mStencilMin;
- mStencilPref = sc.mStencilPref;
- mColorMin = sc.mColorMin;
- mColorPref = sc.mColorPref;
- mAlphaMin = sc.mAlphaMin;
- mAlphaPref = sc.mAlphaPref;
- mSamplesMin = sc.mSamplesMin;
- mSamplesPref = sc.mSamplesPref;
- mSamplesQ = sc.mSamplesQ;
- }
-
- private void validateRange(int umin, int upref, int rmin, int rmax) {
- if (umin < rmin || umin > rmax) {
- throw new RSIllegalArgumentException("Minimum value provided out of range.");
- }
- if (upref < umin) {
- throw new RSIllegalArgumentException("preferred must be >= Minimum.");
- }
- }
-
- /**
- * @deprecated in API 16
- * Set the per-component bit depth for color (red, green, blue). This
- * configures the surface for an unsigned integer buffer type.
- *
- * @param minimum
- * @param preferred
- */
- public void setColor(int minimum, int preferred) {
- validateRange(minimum, preferred, 5, 8);
- mColorMin = minimum;
- mColorPref = preferred;
- }
-
- /**
- * @deprecated in API 16
- * Set the bit depth for alpha. This configures the surface for
- * an unsigned integer buffer type.
- *
- * @param minimum
- * @param preferred
- */
- public void setAlpha(int minimum, int preferred) {
- validateRange(minimum, preferred, 0, 8);
- mAlphaMin = minimum;
- mAlphaPref = preferred;
- }
-
- /**
- * @deprecated in API 16
- * Set the bit depth for the depth buffer. This configures the
- * surface for an unsigned integer buffer type. If a minimum of 0
- * is specified then its possible no depth buffer will be
- * allocated.
- *
- * @param minimum
- * @param preferred
- */
- public void setDepth(int minimum, int preferred) {
- validateRange(minimum, preferred, 0, 24);
- mDepthMin = minimum;
- mDepthPref = preferred;
- }
-
- /**
- * @deprecated in API 16
- * Configure the multisample rendering.
- *
- * @param minimum The required number of samples, must be at least 1.
- * @param preferred The targe number of samples, must be at least
- * minimum
- * @param Q The quality of samples, range 0-1. Used to decide between
- * different formats which have the same number of samples but
- * different rendering quality.
- */
- public void setSamples(int minimum, int preferred, float Q) {
- validateRange(minimum, preferred, 1, 32);
- if (Q < 0.0f || Q > 1.0f) {
- throw new RSIllegalArgumentException("Quality out of 0-1 range.");
- }
- mSamplesMin = minimum;
- mSamplesPref = preferred;
- mSamplesQ = Q;
- }
- };
-
- SurfaceConfig mSurfaceConfig;
-
- /**
- * @deprecated in API 16
- * Construct a new RenderScriptGL context.
- *
- * @param ctx The context.
- * @param sc The desired format of the primary rendering surface.
- */
- public RenderScriptGL(Context ctx, SurfaceConfig sc) {
- super(ctx);
- mSurfaceConfig = new SurfaceConfig(sc);
-
- int sdkVersion = ctx.getApplicationInfo().targetSdkVersion;
-
- mWidth = 0;
- mHeight = 0;
- mDev = nDeviceCreate();
- int dpi = ctx.getResources().getDisplayMetrics().densityDpi;
- mContext = nContextCreateGL(mDev, 0, sdkVersion,
- mSurfaceConfig.mColorMin, mSurfaceConfig.mColorPref,
- mSurfaceConfig.mAlphaMin, mSurfaceConfig.mAlphaPref,
- mSurfaceConfig.mDepthMin, mSurfaceConfig.mDepthPref,
- mSurfaceConfig.mStencilMin, mSurfaceConfig.mStencilPref,
- mSurfaceConfig.mSamplesMin, mSurfaceConfig.mSamplesPref,
- mSurfaceConfig.mSamplesQ, dpi);
- if (mContext == 0) {
- throw new RSDriverException("Failed to create RS context.");
- }
- mMessageThread = new MessageThread(this);
- mMessageThread.start();
- }
-
- /**
- * @deprecated in API 16
- * Bind an os surface
- *
- *
- * @param w
- * @param h
- * @param sur
- */
- public void setSurface(SurfaceHolder sur, int w, int h) {
- validate();
- Surface s = null;
- if (sur != null) {
- s = sur.getSurface();
- }
- mWidth = w;
- mHeight = h;
- nContextSetSurface(w, h, s);
- }
-
- /**
- * @deprecated in API 16
- * Bind an os surface
- *
- * @param w
- * @param h
- * @param sur
- */
- public void setSurfaceTexture(SurfaceTexture sur, int w, int h) {
- validate();
- //android.util.Log.v("rs", "set surface " + sur + " w=" + w + ", h=" + h);
-
- mWidth = w;
- mHeight = h;
- nContextSetSurfaceTexture(w, h, sur);
- }
-
- /**
- * @deprecated in API 16
- * return the height of the last set surface.
- *
- * @return int
- */
- public int getHeight() {
- return mHeight;
- }
-
- /**
- * @deprecated in API 16
- * return the width of the last set surface.
- *
- * @return int
- */
- public int getWidth() {
- return mWidth;
- }
-
- /**
- * @deprecated in API 16
- * Temporarly halt calls to the root rendering script.
- *
- */
- public void pause() {
- validate();
- nContextPause();
- }
-
- /**
- * @deprecated in API 16
- * Resume calls to the root rendering script.
- *
- */
- public void resume() {
- validate();
- nContextResume();
- }
-
-
- /**
- * @deprecated in API 16
- * Set the script to handle calls to render the primary surface.
- *
- * @param s Graphics script to process rendering requests.
- */
- public void bindRootScript(Script s) {
- validate();
- nContextBindRootScript((int)safeID(s));
- }
-
- /**
- * @deprecated in API 16
- * Set the default ProgramStore object seen as the parent state by the root
- * rendering script.
- *
- * @param p
- */
- public void bindProgramStore(ProgramStore p) {
- validate();
- nContextBindProgramStore((int)safeID(p));
- }
-
- /**
- * @deprecated in API 16
- * Set the default ProgramFragment object seen as the parent state by the
- * root rendering script.
- *
- * @param p
- */
- public void bindProgramFragment(ProgramFragment p) {
- validate();
- nContextBindProgramFragment((int)safeID(p));
- }
-
- /**
- * @deprecated in API 16
- * Set the default ProgramRaster object seen as the parent state by the
- * root rendering script.
- *
- * @param p
- */
- public void bindProgramRaster(ProgramRaster p) {
- validate();
- nContextBindProgramRaster((int)safeID(p));
- }
-
- /**
- * @deprecated in API 16
- * Set the default ProgramVertex object seen as the parent state by the
- * root rendering script.
- *
- * @param p
- */
- public void bindProgramVertex(ProgramVertex p) {
- validate();
- nContextBindProgramVertex((int)safeID(p));
- }
-
-}
diff --git a/graphics/java/android/renderscript/Sampler.java b/graphics/java/android/renderscript/Sampler.java
deleted file mode 100644
index 39b867b..0000000
--- a/graphics/java/android/renderscript/Sampler.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * 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;
-
-/**
- * Sampler object that defines how Allocations can be read as textures within a
- * kernel. Samplers are used in conjunction with the {@code rsSample} runtime
- * function to return values from normalized coordinates.
- *
- * Any Allocation used with a Sampler must have been created with {@link
- * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a Sampler on
- * an {@link android.renderscript.Allocation} that was not created with {@link
- * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is undefined.
- **/
-public class Sampler extends BaseObj {
- public enum Value {
- NEAREST (0),
- LINEAR (1),
- LINEAR_MIP_LINEAR (2),
- LINEAR_MIP_NEAREST (5),
- WRAP (3),
- CLAMP (4),
- MIRRORED_REPEAT (6);
-
- int mID;
- Value(int id) {
- mID = id;
- }
- }
-
- Value mMin;
- Value mMag;
- Value mWrapS;
- Value mWrapT;
- Value mWrapR;
- float mAniso;
-
- Sampler(int id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * @return minification setting for the sampler
- */
- public Value getMinification() {
- return mMin;
- }
-
- /**
- * @return magnification setting for the sampler
- */
- public Value getMagnification() {
- return mMag;
- }
-
- /**
- * @return S wrapping mode for the sampler
- */
- public Value getWrapS() {
- return mWrapS;
- }
-
- /**
- * @return T wrapping mode for the sampler
- */
- public Value getWrapT() {
- return mWrapT;
- }
-
- /**
- * @return anisotropy setting for the sampler
- */
- public float getAnisotropy() {
- return mAniso;
- }
-
- /**
- * Retrieve a sampler with min and mag set to nearest and wrap modes set to
- * clamp.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler CLAMP_NEAREST(RenderScript rs) {
- if(rs.mSampler_CLAMP_NEAREST == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.NEAREST);
- b.setMagnification(Value.NEAREST);
- b.setWrapS(Value.CLAMP);
- b.setWrapT(Value.CLAMP);
- rs.mSampler_CLAMP_NEAREST = b.create();
- }
- return rs.mSampler_CLAMP_NEAREST;
- }
-
- /**
- * Retrieve a sampler with min and mag set to linear and wrap modes set to
- * clamp.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler CLAMP_LINEAR(RenderScript rs) {
- if(rs.mSampler_CLAMP_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.CLAMP);
- b.setWrapT(Value.CLAMP);
- rs.mSampler_CLAMP_LINEAR = b.create();
- }
- return rs.mSampler_CLAMP_LINEAR;
- }
-
- /**
- * Retrieve a sampler with mag set to linear, min linear mipmap linear, and
- * wrap modes set to clamp.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript rs) {
- if(rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR_MIP_LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.CLAMP);
- b.setWrapT(Value.CLAMP);
- rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create();
- }
- return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR;
- }
-
- /**
- * Retrieve a sampler with min and mag set to nearest and wrap modes set to
- * wrap.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler WRAP_NEAREST(RenderScript rs) {
- if(rs.mSampler_WRAP_NEAREST == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.NEAREST);
- b.setMagnification(Value.NEAREST);
- b.setWrapS(Value.WRAP);
- b.setWrapT(Value.WRAP);
- rs.mSampler_WRAP_NEAREST = b.create();
- }
- return rs.mSampler_WRAP_NEAREST;
- }
-
- /**
- * Retrieve a sampler with min and mag set to linear and wrap modes set to
- * wrap.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler WRAP_LINEAR(RenderScript rs) {
- if(rs.mSampler_WRAP_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.WRAP);
- b.setWrapT(Value.WRAP);
- rs.mSampler_WRAP_LINEAR = b.create();
- }
- return rs.mSampler_WRAP_LINEAR;
- }
-
- /**
- * Retrieve a sampler with mag set to linear, min linear mipmap linear, and
- * wrap modes set to wrap.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript rs) {
- if(rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR_MIP_LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.WRAP);
- b.setWrapT(Value.WRAP);
- rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create();
- }
- return rs.mSampler_WRAP_LINEAR_MIP_LINEAR;
- }
-
- /**
- * Retrieve a sampler with min and mag set to nearest and wrap modes set to
- * mirrored repeat.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript rs) {
- if(rs.mSampler_MIRRORED_REPEAT_NEAREST == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.NEAREST);
- b.setMagnification(Value.NEAREST);
- b.setWrapS(Value.MIRRORED_REPEAT);
- b.setWrapT(Value.MIRRORED_REPEAT);
- rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create();
- }
- return rs.mSampler_MIRRORED_REPEAT_NEAREST;
- }
-
- /**
- * Retrieve a sampler with min and mag set to linear and wrap modes set to
- * mirrored repeat.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript rs) {
- if(rs.mSampler_MIRRORED_REPEAT_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.MIRRORED_REPEAT);
- b.setWrapT(Value.MIRRORED_REPEAT);
- rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create();
- }
- return rs.mSampler_MIRRORED_REPEAT_LINEAR;
- }
-
- /**
- * Retrieve a sampler with min and mag set to linear and wrap modes set to
- * mirrored repeat.
- *
- * @param rs Context to which the sampler will belong.
- *
- * @return Sampler
- */
- public static Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(RenderScript rs) {
- if(rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) {
- Builder b = new Builder(rs);
- b.setMinification(Value.LINEAR_MIP_LINEAR);
- b.setMagnification(Value.LINEAR);
- b.setWrapS(Value.MIRRORED_REPEAT);
- b.setWrapT(Value.MIRRORED_REPEAT);
- rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create();
- }
- return rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
- }
-
- /**
- * Builder for creating non-standard samplers. This is only necessary if
- * a Sampler with different min and mag modes is desired.
- */
- public static class Builder {
- RenderScript mRS;
- Value mMin;
- Value mMag;
- Value mWrapS;
- Value mWrapT;
- Value mWrapR;
- float mAniso;
-
- public Builder(RenderScript rs) {
- mRS = rs;
- mMin = Value.NEAREST;
- mMag = Value.NEAREST;
- mWrapS = Value.WRAP;
- mWrapT = Value.WRAP;
- mWrapR = Value.WRAP;
- mAniso = 1.0f;
- }
-
- public void setMinification(Value v) {
- if (v == Value.NEAREST ||
- v == Value.LINEAR ||
- v == Value.LINEAR_MIP_LINEAR ||
- v == Value.LINEAR_MIP_NEAREST) {
- mMin = v;
- } else {
- throw new IllegalArgumentException("Invalid value");
- }
- }
-
- public void setMagnification(Value v) {
- if (v == Value.NEAREST || v == Value.LINEAR) {
- mMag = v;
- } else {
- throw new IllegalArgumentException("Invalid value");
- }
- }
-
- public void setWrapS(Value v) {
- if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) {
- mWrapS = v;
- } else {
- throw new IllegalArgumentException("Invalid value");
- }
- }
-
- public void setWrapT(Value v) {
- if (v == Value.WRAP || v == Value.CLAMP || v == Value.MIRRORED_REPEAT) {
- mWrapT = v;
- } else {
- throw new IllegalArgumentException("Invalid value");
- }
- }
-
- public void setAnisotropy(float v) {
- if(v >= 0.0f) {
- mAniso = v;
- } else {
- throw new IllegalArgumentException("Invalid value");
- }
- }
-
- public Sampler create() {
- mRS.validate();
- int id = mRS.nSamplerCreate(mMag.mID, mMin.mID,
- mWrapS.mID, mWrapT.mID, mWrapR.mID, mAniso);
- Sampler sampler = new Sampler(id, mRS);
- sampler.mMin = mMin;
- sampler.mMag = mMag;
- sampler.mWrapS = mWrapS;
- sampler.mWrapT = mWrapT;
- sampler.mWrapR = mWrapR;
- sampler.mAniso = mAniso;
- return sampler;
- }
- }
-
-}
-
diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java
deleted file mode 100644
index 5ab18f7..0000000
--- a/graphics/java/android/renderscript/Script.java
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Copyright (C) 2008-2012 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 android.util.SparseArray;
-
-/**
- * The parent class for all executable scripts. This should not be used by
- * applications.
- **/
-public class Script extends BaseObj {
-
- /**
- * KernelID is an identifier for a Script + root function pair. It is used
- * as an identifier for ScriptGroup creation.
- *
- * This class should not be directly created. Instead use the method in the
- * reflected or intrinsic code "getKernelID_funcname()".
- *
- */
- public static final class KernelID extends BaseObj {
- Script mScript;
- int mSlot;
- int mSig;
- KernelID(long id, RenderScript rs, Script s, int slot, int sig) {
- super(id, rs);
- mScript = s;
- mSlot = slot;
- mSig = sig;
- }
- }
-
- private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>();
- /**
- * Only to be used by generated reflected classes.
- */
- protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) {
- KernelID k = mKIDs.get(slot);
- if (k != null) {
- return k;
- }
-
- long id = mRS.nScriptKernelIDCreate(getID(mRS), slot, sig);
- if (id == 0) {
- throw new RSDriverException("Failed to create KernelID");
- }
-
- k = new KernelID(id, mRS, this, slot, sig);
- mKIDs.put(slot, k);
- return k;
- }
-
- /**
- * FieldID is an identifier for a Script + exported field pair. It is used
- * as an identifier for ScriptGroup creation.
- *
- * This class should not be directly created. Instead use the method in the
- * reflected or intrinsic code "getFieldID_funcname()".
- *
- */
- public static final class FieldID extends BaseObj {
- Script mScript;
- int mSlot;
- FieldID(long id, RenderScript rs, Script s, int slot) {
- super(id, rs);
- mScript = s;
- mSlot = slot;
- }
- }
-
- private final SparseArray<FieldID> mFIDs = new SparseArray();
- /**
- * Only to be used by generated reflected classes.
- */
- protected FieldID createFieldID(int slot, Element e) {
- FieldID f = mFIDs.get(slot);
- if (f != null) {
- return f;
- }
-
- long id = mRS.nScriptFieldIDCreate(getID(mRS), slot);
- if (id == 0) {
- throw new RSDriverException("Failed to create FieldID");
- }
-
- f = new FieldID(id, mRS, this, slot);
- mFIDs.put(slot, f);
- return f;
- }
-
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- protected void invoke(int slot) {
- mRS.nScriptInvoke(getID(mRS), slot);
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- protected void invoke(int slot, FieldPacker v) {
- if (v != null) {
- mRS.nScriptInvokeV(getID(mRS), slot, v.getData());
- } else {
- mRS.nScriptInvoke(getID(mRS), slot);
- }
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
- if (ain == null && aout == null) {
- throw new RSIllegalArgumentException(
- "At least one of ain or aout is required to be non-null.");
- }
- long in_id = 0;
- if (ain != null) {
- in_id = ain.getID(mRS);
- }
- long out_id = 0;
- if (aout != null) {
- out_id = aout.getID(mRS);
- }
- byte[] params = null;
- if (v != null) {
- params = v.getData();
- }
- mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params);
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
- if (ain == null && aout == null) {
- throw new RSIllegalArgumentException(
- "At least one of ain or aout is required to be non-null.");
- }
-
- if (sc == null) {
- forEach(slot, ain, aout, v);
- return;
- }
- long in_id = 0;
- if (ain != null) {
- in_id = ain.getID(mRS);
- }
- long out_id = 0;
- if (aout != null) {
- out_id = aout.getID(mRS);
- }
- byte[] params = null;
- if (v != null) {
- params = v.getData();
- }
- mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend);
- }
-
- Script(long id, RenderScript rs) {
- super(id, rs);
- }
-
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void bindAllocation(Allocation va, int slot) {
- mRS.validate();
- if (va != null) {
- mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot);
- } else {
- mRS.nScriptBindAllocation(getID(mRS), 0, slot);
- }
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, float v) {
- mRS.nScriptSetVarF(getID(mRS), index, v);
- }
- public float getVarF(int index) {
- return mRS.nScriptGetVarF(getID(mRS), index);
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, double v) {
- mRS.nScriptSetVarD(getID(mRS), index, v);
- }
- public double getVarD(int index) {
- return mRS.nScriptGetVarD(getID(mRS), index);
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, int v) {
- mRS.nScriptSetVarI(getID(mRS), index, v);
- }
- public int getVarI(int index) {
- return mRS.nScriptGetVarI(getID(mRS), index);
- }
-
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, long v) {
- mRS.nScriptSetVarJ(getID(mRS), index, v);
- }
- public long getVarJ(int index) {
- return mRS.nScriptGetVarJ(getID(mRS), index);
- }
-
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, boolean v) {
- mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0);
- }
- public boolean getVarB(int index) {
- return mRS.nScriptGetVarI(getID(mRS), index) > 0 ? true : false;
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, BaseObj o) {
- mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS));
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, FieldPacker v) {
- mRS.nScriptSetVarV(getID(mRS), index, v.getData());
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void setVar(int index, FieldPacker v, Element e, int[] dims) {
- mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims);
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public void getVarV(int index, FieldPacker v) {
- mRS.nScriptGetVarV(getID(mRS), index, v.getData());
- }
-
- public void setTimeZone(String timeZone) {
- mRS.validate();
- try {
- mRS.nScriptSetTimeZone(getID(mRS), timeZone.getBytes("UTF-8"));
- } catch (java.io.UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public static class Builder {
- RenderScript mRS;
-
- Builder(RenderScript rs) {
- mRS = rs;
- }
- }
-
-
- /**
- * Only intended for use by generated reflected code.
- *
- */
- public static class FieldBase {
- protected Element mElement;
- protected Allocation mAllocation;
-
- protected void init(RenderScript rs, int dimx) {
- mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT);
- }
-
- protected void init(RenderScript rs, int dimx, int usages) {
- mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages);
- }
-
- protected FieldBase() {
- }
-
- public Element getElement() {
- return mElement;
- }
-
- public Type getType() {
- return mAllocation.getType();
- }
-
- public Allocation getAllocation() {
- return mAllocation;
- }
-
- //@Override
- public void updateAllocation() {
- }
- }
-
-
- /**
- * Class used to specify clipping for a kernel launch.
- *
- */
- public static final class LaunchOptions {
- private int xstart = 0;
- private int ystart = 0;
- private int xend = 0;
- private int yend = 0;
- private int zstart = 0;
- private int zend = 0;
- private int strategy;
-
- /**
- * Set the X range. If the end value is set to 0 the X dimension is not
- * clipped.
- *
- * @param xstartArg Must be >= 0
- * @param xendArg Must be >= xstartArg
- *
- * @return LaunchOptions
- */
- public LaunchOptions setX(int xstartArg, int xendArg) {
- if (xstartArg < 0 || xendArg <= xstartArg) {
- throw new RSIllegalArgumentException("Invalid dimensions");
- }
- xstart = xstartArg;
- xend = xendArg;
- return this;
- }
-
- /**
- * Set the Y range. If the end value is set to 0 the Y dimension is not
- * clipped.
- *
- * @param ystartArg Must be >= 0
- * @param yendArg Must be >= ystartArg
- *
- * @return LaunchOptions
- */
- public LaunchOptions setY(int ystartArg, int yendArg) {
- if (ystartArg < 0 || yendArg <= ystartArg) {
- throw new RSIllegalArgumentException("Invalid dimensions");
- }
- ystart = ystartArg;
- yend = yendArg;
- return this;
- }
-
- /**
- * Set the Z range. If the end value is set to 0 the Z dimension is not
- * clipped.
- *
- * @param zstartArg Must be >= 0
- * @param zendArg Must be >= zstartArg
- *
- * @return LaunchOptions
- */
- public LaunchOptions setZ(int zstartArg, int zendArg) {
- if (zstartArg < 0 || zendArg <= zstartArg) {
- throw new RSIllegalArgumentException("Invalid dimensions");
- }
- zstart = zstartArg;
- zend = zendArg;
- return this;
- }
-
-
- /**
- * Returns the current X start
- *
- * @return int current value
- */
- public int getXStart() {
- return xstart;
- }
- /**
- * Returns the current X end
- *
- * @return int current value
- */
- public int getXEnd() {
- return xend;
- }
- /**
- * Returns the current Y start
- *
- * @return int current value
- */
- public int getYStart() {
- return ystart;
- }
- /**
- * Returns the current Y end
- *
- * @return int current value
- */
- public int getYEnd() {
- return yend;
- }
- /**
- * Returns the current Z start
- *
- * @return int current value
- */
- public int getZStart() {
- return zstart;
- }
- /**
- * Returns the current Z end
- *
- * @return int current value
- */
- public int getZEnd() {
- return zend;
- }
-
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptC.java b/graphics/java/android/renderscript/ScriptC.java
deleted file mode 100644
index c7979f6..0000000
--- a/graphics/java/android/renderscript/ScriptC.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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 android.content.res.Resources;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * The superclass for all user-defined scripts. This is only
- * intended to be used by the generated derived classes.
- **/
-public class ScriptC extends Script {
- private static final String TAG = "ScriptC";
-
- /**
- * Only intended for use by the generated derived classes.
- *
- * @param id
- * @param rs
- */
- protected ScriptC(int id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Only intended for use by the generated derived classes.
- *
- *
- * @param rs
- * @param resources
- * @param resourceID
- */
- protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
- super(0, rs);
- int id = internalCreate(rs, resources, resourceID);
- if (id == 0) {
- throw new RSRuntimeException("Loading of ScriptC script failed.");
- }
- setID(id);
- }
-
- /**
- * Name of the file that holds the object cache.
- */
- private static final String CACHE_PATH = "com.android.renderscript.cache";
-
- static String mCachePath;
-
- private static synchronized int internalCreate(RenderScript rs, Resources resources, int resourceID) {
- byte[] pgm;
- int pgmLength;
- InputStream is = resources.openRawResource(resourceID);
- try {
- try {
- pgm = new byte[1024];
- pgmLength = 0;
- while(true) {
- int bytesLeft = pgm.length - pgmLength;
- if (bytesLeft == 0) {
- byte[] buf2 = new byte[pgm.length * 2];
- System.arraycopy(pgm, 0, buf2, 0, pgm.length);
- pgm = buf2;
- bytesLeft = pgm.length - pgmLength;
- }
- int bytesRead = is.read(pgm, pgmLength, bytesLeft);
- if (bytesRead <= 0) {
- break;
- }
- pgmLength += bytesRead;
- }
- } finally {
- is.close();
- }
- } catch(IOException e) {
- throw new Resources.NotFoundException();
- }
-
- String resName = resources.getResourceEntryName(resourceID);
-
- // Create the RS cache path if we haven't done so already.
- if (mCachePath == null) {
- File f = new File(rs.mCacheDir, CACHE_PATH);
- mCachePath = f.getAbsolutePath();
- f.mkdirs();
- }
- // Log.v(TAG, "Create script for resource = " + resName);
- return rs.nScriptCCreate(resName, mCachePath, pgm, pgmLength);
- }
-}
diff --git a/graphics/java/android/renderscript/ScriptGroup.java b/graphics/java/android/renderscript/ScriptGroup.java
deleted file mode 100644
index f1a7273..0000000
--- a/graphics/java/android/renderscript/ScriptGroup.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * Copyright (C) 2012 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.util.ArrayList;
-
-/**
- * ScriptGroup creates a group of kernels that are executed
- * together with one execution call as if they were a single kernel.
- * The kernels may be connected internally or to an external allocation.
- * The intermediate results for internal connections are not observable
- * after the execution of the script.
- * <p>
- * External connections are grouped into inputs and outputs.
- * All outputs are produced by a script kernel and placed into a
- * user-supplied allocation. Inputs provide the input of a kernel.
- * Inputs bound to script globals are set directly upon the script.
- * <p>
- * A ScriptGroup must contain at least one kernel. A ScriptGroup
- * must contain only a single directed acyclic graph (DAG) of
- * script kernels and connections. Attempting to create a
- * ScriptGroup with multiple DAGs or attempting to create
- * a cycle within a ScriptGroup will throw an exception.
- * <p>
- * Currently, all kernels in a ScriptGroup must be from separate
- * Script objects. Attempting to use multiple kernels from the same
- * Script object will result in an {@link android.renderscript.RSInvalidStateException}.
- *
- **/
-public final class ScriptGroup extends BaseObj {
- IO mOutputs[];
- IO mInputs[];
-
- static class IO {
- Script.KernelID mKID;
- Allocation mAllocation;
-
- IO(Script.KernelID s) {
- mKID = s;
- }
- }
-
- static class ConnectLine {
- ConnectLine(Type t, Script.KernelID from, Script.KernelID to) {
- mFrom = from;
- mToK = to;
- mAllocationType = t;
- }
-
- ConnectLine(Type t, Script.KernelID from, Script.FieldID to) {
- mFrom = from;
- mToF = to;
- mAllocationType = t;
- }
-
- Script.FieldID mToF;
- Script.KernelID mToK;
- Script.KernelID mFrom;
- Type mAllocationType;
- }
-
- static class Node {
- Script mScript;
- ArrayList<Script.KernelID> mKernels = new ArrayList<Script.KernelID>();
- ArrayList<ConnectLine> mInputs = new ArrayList<ConnectLine>();
- ArrayList<ConnectLine> mOutputs = new ArrayList<ConnectLine>();
- int dagNumber;
-
- Node mNext;
-
- Node(Script s) {
- mScript = s;
- }
- }
-
-
- ScriptGroup(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Sets an input of the ScriptGroup. This specifies an
- * Allocation to be used for kernels that require an input
- * Allocation provided from outside of the ScriptGroup.
- *
- * @param s The ID of the kernel where the allocation should be
- * connected.
- * @param a The allocation to connect.
- */
- public void setInput(Script.KernelID s, Allocation a) {
- for (int ct=0; ct < mInputs.length; ct++) {
- if (mInputs[ct].mKID == s) {
- mInputs[ct].mAllocation = a;
- mRS.nScriptGroupSetInput(getID(mRS), s.getID(mRS), mRS.safeID(a));
- return;
- }
- }
- throw new RSIllegalArgumentException("Script not found");
- }
-
- /**
- * Sets an output of the ScriptGroup. This specifies an
- * Allocation to be used for the kernels that require an output
- * Allocation visible after the ScriptGroup is executed.
- *
- * @param s The ID of the kernel where the allocation should be
- * connected.
- * @param a The allocation to connect.
- */
- public void setOutput(Script.KernelID s, Allocation a) {
- for (int ct=0; ct < mOutputs.length; ct++) {
- if (mOutputs[ct].mKID == s) {
- mOutputs[ct].mAllocation = a;
- mRS.nScriptGroupSetOutput(getID(mRS), s.getID(mRS), mRS.safeID(a));
- return;
- }
- }
- throw new RSIllegalArgumentException("Script not found");
- }
-
- /**
- * Execute the ScriptGroup. This will run all the kernels in
- * the ScriptGroup. No internal connection results will be visible
- * after execution of the ScriptGroup.
- */
- public void execute() {
- mRS.nScriptGroupExecute(getID(mRS));
- }
-
-
- /**
- * Helper class to build a ScriptGroup. A ScriptGroup is
- * created in two steps.
- * <p>
- * First, all kernels to be used by the ScriptGroup should be added.
- * <p>
- * Second, add connections between kernels. There are two types
- * of connections: kernel to kernel and kernel to field.
- * Kernel to kernel allows a kernel's output to be passed to
- * another kernel as input. Kernel to field allows the output of
- * one kernel to be bound as a script global. Kernel to kernel is
- * higher performance and should be used where possible.
- * <p>
- * A ScriptGroup must contain a single directed acyclic graph (DAG); it
- * cannot contain cycles. Currently, all kernels used in a ScriptGroup
- * must come from different Script objects. Additionally, all kernels
- * in a ScriptGroup must have at least one input, output, or internal
- * connection.
- * <p>
- * Once all connections are made, a call to {@link #create} will
- * return the ScriptGroup object.
- *
- */
- public static final class Builder {
- private RenderScript mRS;
- private ArrayList<Node> mNodes = new ArrayList<Node>();
- private ArrayList<ConnectLine> mLines = new ArrayList<ConnectLine>();
- private int mKernelCount;
-
- /**
- * Create a Builder for generating a ScriptGroup.
- *
- *
- * @param rs The RenderScript context.
- */
- public Builder(RenderScript rs) {
- mRS = rs;
- }
-
- // do a DFS from original node, looking for original node
- // any cycle that could be created must contain original node
- private void validateCycle(Node target, Node original) {
- for (int ct = 0; ct < target.mOutputs.size(); ct++) {
- final ConnectLine cl = target.mOutputs.get(ct);
- if (cl.mToK != null) {
- Node tn = findNode(cl.mToK.mScript);
- if (tn.equals(original)) {
- throw new RSInvalidStateException("Loops in group not allowed.");
- }
- validateCycle(tn, original);
- }
- if (cl.mToF != null) {
- Node tn = findNode(cl.mToF.mScript);
- if (tn.equals(original)) {
- throw new RSInvalidStateException("Loops in group not allowed.");
- }
- validateCycle(tn, original);
- }
- }
- }
-
- private void mergeDAGs(int valueUsed, int valueKilled) {
- for (int ct=0; ct < mNodes.size(); ct++) {
- if (mNodes.get(ct).dagNumber == valueKilled)
- mNodes.get(ct).dagNumber = valueUsed;
- }
- }
-
- private void validateDAGRecurse(Node n, int dagNumber) {
- // combine DAGs if this node has been seen already
- if (n.dagNumber != 0 && n.dagNumber != dagNumber) {
- mergeDAGs(n.dagNumber, dagNumber);
- return;
- }
-
- n.dagNumber = dagNumber;
- for (int ct=0; ct < n.mOutputs.size(); ct++) {
- final ConnectLine cl = n.mOutputs.get(ct);
- if (cl.mToK != null) {
- Node tn = findNode(cl.mToK.mScript);
- validateDAGRecurse(tn, dagNumber);
- }
- if (cl.mToF != null) {
- Node tn = findNode(cl.mToF.mScript);
- validateDAGRecurse(tn, dagNumber);
- }
- }
- }
-
- private void validateDAG() {
- for (int ct=0; ct < mNodes.size(); ct++) {
- Node n = mNodes.get(ct);
- if (n.mInputs.size() == 0) {
- if (n.mOutputs.size() == 0 && mNodes.size() > 1) {
- throw new RSInvalidStateException("Groups cannot contain unconnected scripts");
- }
- validateDAGRecurse(n, ct+1);
- }
- }
- int dagNumber = mNodes.get(0).dagNumber;
- for (int ct=0; ct < mNodes.size(); ct++) {
- if (mNodes.get(ct).dagNumber != dagNumber) {
- throw new RSInvalidStateException("Multiple DAGs in group not allowed.");
- }
- }
- }
-
- private Node findNode(Script s) {
- for (int ct=0; ct < mNodes.size(); ct++) {
- if (s == mNodes.get(ct).mScript) {
- return mNodes.get(ct);
- }
- }
- return null;
- }
-
- private Node findNode(Script.KernelID k) {
- for (int ct=0; ct < mNodes.size(); ct++) {
- Node n = mNodes.get(ct);
- for (int ct2=0; ct2 < n.mKernels.size(); ct2++) {
- if (k == n.mKernels.get(ct2)) {
- return n;
- }
- }
- }
- return null;
- }
-
- /**
- * Adds a Kernel to the group.
- *
- *
- * @param k The kernel to add.
- *
- * @return Builder Returns this.
- */
- public Builder addKernel(Script.KernelID k) {
- if (mLines.size() != 0) {
- throw new RSInvalidStateException(
- "Kernels may not be added once connections exist.");
- }
-
- //android.util.Log.v("RSR", "addKernel 1 k=" + k);
- if (findNode(k) != null) {
- return this;
- }
- //android.util.Log.v("RSR", "addKernel 2 ");
- mKernelCount++;
- Node n = findNode(k.mScript);
- if (n == null) {
- //android.util.Log.v("RSR", "addKernel 3 ");
- n = new Node(k.mScript);
- mNodes.add(n);
- }
- n.mKernels.add(k);
- return this;
- }
-
- /**
- * Adds a connection to the group.
- *
- *
- * @param t The type of the connection. This is used to
- * determine the kernel launch sizes on the source side
- * of this connection.
- * @param from The source for the connection.
- * @param to The destination of the connection.
- *
- * @return Builder Returns this
- */
- public Builder addConnection(Type t, Script.KernelID from, Script.FieldID to) {
- //android.util.Log.v("RSR", "addConnection " + t +", " + from + ", " + to);
-
- Node nf = findNode(from);
- if (nf == null) {
- throw new RSInvalidStateException("From script not found.");
- }
-
- Node nt = findNode(to.mScript);
- if (nt == null) {
- throw new RSInvalidStateException("To script not found.");
- }
-
- ConnectLine cl = new ConnectLine(t, from, to);
- mLines.add(new ConnectLine(t, from, to));
-
- nf.mOutputs.add(cl);
- nt.mInputs.add(cl);
-
- validateCycle(nf, nf);
- return this;
- }
-
- /**
- * Adds a connection to the group.
- *
- *
- * @param t The type of the connection. This is used to
- * determine the kernel launch sizes for both sides of
- * this connection.
- * @param from The source for the connection.
- * @param to The destination of the connection.
- *
- * @return Builder Returns this
- */
- public Builder addConnection(Type t, Script.KernelID from, Script.KernelID to) {
- //android.util.Log.v("RSR", "addConnection " + t +", " + from + ", " + to);
-
- Node nf = findNode(from);
- if (nf == null) {
- throw new RSInvalidStateException("From script not found.");
- }
-
- Node nt = findNode(to);
- if (nt == null) {
- throw new RSInvalidStateException("To script not found.");
- }
-
- ConnectLine cl = new ConnectLine(t, from, to);
- mLines.add(new ConnectLine(t, from, to));
-
- nf.mOutputs.add(cl);
- nt.mInputs.add(cl);
-
- validateCycle(nf, nf);
- return this;
- }
-
-
-
- /**
- * Creates the Script group.
- *
- *
- * @return ScriptGroup The new ScriptGroup
- */
- public ScriptGroup create() {
- // FIXME: this is broken for 64-bit
-
- if (mNodes.size() == 0) {
- throw new RSInvalidStateException("Empty script groups are not allowed");
- }
-
- // reset DAG numbers in case we're building a second group
- for (int ct=0; ct < mNodes.size(); ct++) {
- mNodes.get(ct).dagNumber = 0;
- }
- validateDAG();
-
- ArrayList<IO> inputs = new ArrayList<IO>();
- ArrayList<IO> outputs = new ArrayList<IO>();
-
- int[] kernels = new int[mKernelCount];
- int idx = 0;
- for (int ct=0; ct < mNodes.size(); ct++) {
- Node n = mNodes.get(ct);
- for (int ct2=0; ct2 < n.mKernels.size(); ct2++) {
- final Script.KernelID kid = n.mKernels.get(ct2);
- kernels[idx++] = (int)kid.getID(mRS);
-
- boolean hasInput = false;
- boolean hasOutput = false;
- for (int ct3=0; ct3 < n.mInputs.size(); ct3++) {
- if (n.mInputs.get(ct3).mToK == kid) {
- hasInput = true;
- }
- }
- for (int ct3=0; ct3 < n.mOutputs.size(); ct3++) {
- if (n.mOutputs.get(ct3).mFrom == kid) {
- hasOutput = true;
- }
- }
- if (!hasInput) {
- inputs.add(new IO(kid));
- }
- if (!hasOutput) {
- outputs.add(new IO(kid));
- }
-
- }
- }
- if (idx != mKernelCount) {
- throw new RSRuntimeException("Count mismatch, should not happen.");
- }
-
- int[] src = new int[mLines.size()];
- int[] dstk = new int[mLines.size()];
- int[] dstf = new int[mLines.size()];
- int[] types = new int[mLines.size()];
-
- for (int ct=0; ct < mLines.size(); ct++) {
- ConnectLine cl = mLines.get(ct);
- src[ct] = (int)cl.mFrom.getID(mRS);
- if (cl.mToK != null) {
- dstk[ct] = (int)cl.mToK.getID(mRS);
- }
- if (cl.mToF != null) {
- dstf[ct] = (int)cl.mToF.getID(mRS);
- }
- types[ct] = (int)cl.mAllocationType.getID(mRS);
- }
-
- long id = mRS.nScriptGroupCreate(kernels, src, dstk, dstf, types);
- if (id == 0) {
- throw new RSRuntimeException("Object creation error, should not happen.");
- }
-
- ScriptGroup sg = new ScriptGroup(id, mRS);
- sg.mOutputs = new IO[outputs.size()];
- for (int ct=0; ct < outputs.size(); ct++) {
- sg.mOutputs[ct] = outputs.get(ct);
- }
-
- sg.mInputs = new IO[inputs.size()];
- for (int ct=0; ct < inputs.size(); ct++) {
- sg.mInputs[ct] = inputs.get(ct);
- }
-
- return sg;
- }
-
- }
-
-
-}
-
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsic.java b/graphics/java/android/renderscript/ScriptIntrinsic.java
deleted file mode 100644
index 8719e01..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsic.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Base class for all Intrinsic scripts. An intrinsic a script
- * which implements a pre-defined function. Intrinsics are
- * provided to provide effecient implemtations of common
- * operations.
- *
- * Not intended for direct use.
- **/
-public abstract class ScriptIntrinsic extends Script {
- ScriptIntrinsic(long id, RenderScript rs) {
- super(id, rs);
- }
-}
diff --git a/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java b/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java
deleted file mode 100644
index 33e64bd..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- *
- * Intrinsic for converting RGB to RGBA by using a 3D lookup table. The
- * incoming r,g,b values are use as normalized x,y,z coordinates into a 3D
- * allocation. The 8 nearest values are sampled and linearly interpolated. The
- * result is placed in the output.
- *
- **/
-public final class ScriptIntrinsic3DLUT extends ScriptIntrinsic {
- private Allocation mLUT;
- private Element mElement;
-
- private ScriptIntrinsic3DLUT(long id, RenderScript rs, Element e) {
- super(id, rs);
- mElement = e;
- }
-
- /**
- * Supported elements types are {@link Element#U8_4}
- *
- * The defaults tables are identity.
- *
- * @param rs The RenderScript context
- * @param e Element type for intputs and outputs
- *
- * @return ScriptIntrinsic3DLUT
- */
- public static ScriptIntrinsic3DLUT create(RenderScript rs, Element e) {
- long id = rs.nScriptIntrinsicCreate(8, e.getID(rs));
-
- if (!e.isCompatible(Element.U8_4(rs))) {
- throw new RSIllegalArgumentException("Element must be compatible with uchar4.");
- }
-
- return new ScriptIntrinsic3DLUT(id, rs, e);
- }
-
- /**
- * Sets the {@link android.renderscript.Allocation} to be used as the lookup table.
- *
- * The lookup table must use the same {@link android.renderscript.Element} as the intrinsic.
- *
- */
-
- public void setLUT(Allocation lut) {
- final Type t = lut.getType();
-
- if (t.getZ() == 0) {
- throw new RSIllegalArgumentException("LUT must be 3d.");
- }
-
- if (!t.getElement().isCompatible(mElement)) {
- throw new RSIllegalArgumentException("LUT element type must match.");
- }
-
- mLUT = lut;
- setVar(0, mLUT);
- }
-
-
- /**
- * Invoke the kernel and apply the lookup to each cell of ain
- * and copy to aout.
- *
- * @param ain Input allocation
- * @param aout Output allocation
- */
- public void forEach(Allocation ain, Allocation aout) {
- forEach(0, ain, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 3, null, null);
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicBlend.java b/graphics/java/android/renderscript/ScriptIntrinsicBlend.java
deleted file mode 100644
index 40f1a3e..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicBlend.java
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-
-/**
- * Intrinsic kernels for blending two {@link android.renderscript.Allocation} objects.
- **/
-public class ScriptIntrinsicBlend extends ScriptIntrinsic {
- ScriptIntrinsicBlend(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Supported elements types are {@link Element#U8_4}
- *
- * @param rs The RenderScript context
- * @param e Element type for inputs and outputs
- *
- * @return ScriptIntrinsicBlend
- */
- public static ScriptIntrinsicBlend create(RenderScript rs, Element e) {
- // 7 comes from RS_SCRIPT_INTRINSIC_ID_BLEND in rsDefines.h
- long id = rs.nScriptIntrinsicCreate(7, e.getID(rs));
- return new ScriptIntrinsicBlend(id, rs);
-
- }
-
- private void blend(int id, Allocation ain, Allocation aout) {
- if (!ain.getElement().isCompatible(Element.U8_4(mRS))) {
- throw new RSIllegalArgumentException("Input is not of expected format.");
- }
- if (!aout.getElement().isCompatible(Element.U8_4(mRS))) {
- throw new RSIllegalArgumentException("Output is not of expected format.");
- }
- forEach(id, ain, aout, null);
- }
-
- /**
- * Sets dst = {0, 0, 0, 0}
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachClear(Allocation ain, Allocation aout) {
- blend(0, ain, aout);
- }
-
- /**
- * Get a KernelID for the Clear kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDClear() {
- return createKernelID(0, 3, null, null);
- }
-
-
- /**
- * Sets dst = src
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSrc(Allocation ain, Allocation aout) {
- blend(1, ain, aout);
- }
-
- /**
- * Get a KernelID for the Src kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSrc() {
- return createKernelID(1, 3, null, null);
- }
-
- /**
- * Sets dst = dst
- *
- * This is a NOP.
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachDst(Allocation ain, Allocation aout) {
- // NOP
- }
-
- /**
- * Get a KernelID for the Dst kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDDst() {
- return createKernelID(2, 3, null, null);
- }
-
- /**
- * Sets dst = src + dst * (1.0 - src.a)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSrcOver(Allocation ain, Allocation aout) {
- blend(3, ain, aout);
- }
-
- /**
- * Get a KernelID for the SrcOver kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSrcOver() {
- return createKernelID(3, 3, null, null);
- }
-
- /**
- * Sets dst = dst + src * (1.0 - dst.a)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachDstOver(Allocation ain, Allocation aout) {
- blend(4, ain, aout);
- }
-
- /**
- * Get a KernelID for the DstOver kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDDstOver() {
- return createKernelID(4, 3, null, null);
- }
-
- /**
- * Sets dst = src * dst.a
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSrcIn(Allocation ain, Allocation aout) {
- blend(5, ain, aout);
- }
-
- /**
- * Get a KernelID for the SrcIn kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSrcIn() {
- return createKernelID(5, 3, null, null);
- }
-
- /**
- * Sets dst = dst * src.a
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachDstIn(Allocation ain, Allocation aout) {
- blend(6, ain, aout);
- }
-
- /**
- * Get a KernelID for the DstIn kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDDstIn() {
- return createKernelID(6, 3, null, null);
- }
-
- /**
- * Sets dst = src * (1.0 - dst.a)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSrcOut(Allocation ain, Allocation aout) {
- blend(7, ain, aout);
- }
-
- /**
- * Get a KernelID for the SrcOut kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSrcOut() {
- return createKernelID(7, 3, null, null);
- }
-
- /**
- * Sets dst = dst * (1.0 - src.a)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachDstOut(Allocation ain, Allocation aout) {
- blend(8, ain, aout);
- }
-
- /**
- * Get a KernelID for the DstOut kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDDstOut() {
- return createKernelID(8, 3, null, null);
- }
-
- /**
- * dst.rgb = src.rgb * dst.a + (1.0 - src.a) * dst.rgb
- * dst.a = dst.a
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSrcAtop(Allocation ain, Allocation aout) {
- blend(9, ain, aout);
- }
-
- /**
- * Get a KernelID for the SrcAtop kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSrcAtop() {
- return createKernelID(9, 3, null, null);
- }
-
- /**
- * dst = dst.rgb * src.a + (1.0 - dst.a) * src.rgb
- * dst.a = src.a
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachDstAtop(Allocation ain, Allocation aout) {
- blend(10, ain, aout);
- }
-
- /**
- * Get a KernelID for the DstAtop kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDDstAtop() {
- return createKernelID(10, 3, null, null);
- }
-
- /**
- * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachXor(Allocation ain, Allocation aout) {
- blend(11, ain, aout);
- }
-
- /**
- * Get a KernelID for the Xor kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDXor() {
- return createKernelID(11, 3, null, null);
- }
-
- ////////
-/*
- public void forEachNormal(Allocation ain, Allocation aout) {
- blend(12, ain, aout);
- }
-
- public void forEachAverage(Allocation ain, Allocation aout) {
- blend(13, ain, aout);
- }
-*/
- /**
- * Sets dst = src * dst
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachMultiply(Allocation ain, Allocation aout) {
- blend(14, ain, aout);
- }
-
- /**
- * Get a KernelID for the Multiply kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDMultiply() {
- return createKernelID(14, 3, null, null);
- }
-
-/*
- public void forEachScreen(Allocation ain, Allocation aout) {
- blend(15, ain, aout);
- }
-
- public void forEachDarken(Allocation ain, Allocation aout) {
- blend(16, ain, aout);
- }
-
- public void forEachLighten(Allocation ain, Allocation aout) {
- blend(17, ain, aout);
- }
-
- public void forEachOverlay(Allocation ain, Allocation aout) {
- blend(18, ain, aout);
- }
-
- public void forEachHardlight(Allocation ain, Allocation aout) {
- blend(19, ain, aout);
- }
-
- public void forEachSoftlight(Allocation ain, Allocation aout) {
- blend(20, ain, aout);
- }
-
- public void forEachDifference(Allocation ain, Allocation aout) {
- blend(21, ain, aout);
- }
-
- public void forEachNegation(Allocation ain, Allocation aout) {
- blend(22, ain, aout);
- }
-
- public void forEachExclusion(Allocation ain, Allocation aout) {
- blend(23, ain, aout);
- }
-
- public void forEachColorDodge(Allocation ain, Allocation aout) {
- blend(24, ain, aout);
- }
-
- public void forEachInverseColorDodge(Allocation ain, Allocation aout) {
- blend(25, ain, aout);
- }
-
- public void forEachSoftDodge(Allocation ain, Allocation aout) {
- blend(26, ain, aout);
- }
-
- public void forEachColorBurn(Allocation ain, Allocation aout) {
- blend(27, ain, aout);
- }
-
- public void forEachInverseColorBurn(Allocation ain, Allocation aout) {
- blend(28, ain, aout);
- }
-
- public void forEachSoftBurn(Allocation ain, Allocation aout) {
- blend(29, ain, aout);
- }
-
- public void forEachReflect(Allocation ain, Allocation aout) {
- blend(30, ain, aout);
- }
-
- public void forEachGlow(Allocation ain, Allocation aout) {
- blend(31, ain, aout);
- }
-
- public void forEachFreeze(Allocation ain, Allocation aout) {
- blend(32, ain, aout);
- }
-
- public void forEachHeat(Allocation ain, Allocation aout) {
- blend(33, ain, aout);
- }
-*/
- /**
- * Sets dst = min(src + dst, 1.0)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachAdd(Allocation ain, Allocation aout) {
- blend(34, ain, aout);
- }
-
- /**
- * Get a KernelID for the Add kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDAdd() {
- return createKernelID(34, 3, null, null);
- }
-
- /**
- * Sets dst = max(dst - src, 0.0)
- *
- * @param ain The source buffer
- * @param aout The destination buffer
- */
- public void forEachSubtract(Allocation ain, Allocation aout) {
- blend(35, ain, aout);
- }
-
- /**
- * Get a KernelID for the Subtract kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelIDSubtract() {
- return createKernelID(35, 3, null, null);
- }
-
-/*
- public void forEachStamp(Allocation ain, Allocation aout) {
- blend(36, ain, aout);
- }
-
- public void forEachRed(Allocation ain, Allocation aout) {
- blend(37, ain, aout);
- }
-
- public void forEachGreen(Allocation ain, Allocation aout) {
- blend(38, ain, aout);
- }
-
- public void forEachBlue(Allocation ain, Allocation aout) {
- blend(39, ain, aout);
- }
-
- public void forEachHue(Allocation ain, Allocation aout) {
- blend(40, ain, aout);
- }
-
- public void forEachSaturation(Allocation ain, Allocation aout) {
- blend(41, ain, aout);
- }
-
- public void forEachColor(Allocation ain, Allocation aout) {
- blend(42, ain, aout);
- }
-
- public void forEachLuminosity(Allocation ain, Allocation aout) {
- blend(43, ain, aout);
- }
-*/
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicBlur.java b/graphics/java/android/renderscript/ScriptIntrinsicBlur.java
deleted file mode 100644
index 2b36d27..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicBlur.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Intrinsic Gausian blur filter. Applies a gaussian blur of the
- * specified radius to all elements of an allocation.
- *
- *
- **/
-public final class ScriptIntrinsicBlur extends ScriptIntrinsic {
- private final float[] mValues = new float[9];
- private Allocation mInput;
-
- private ScriptIntrinsicBlur(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Create an intrinsic for applying a blur to an allocation. The
- * default radius is 5.0.
- *
- * Supported elements types are {@link Element#U8_4}
- *
- * @param rs The RenderScript context
- * @param e Element type for inputs and outputs
- *
- * @return ScriptIntrinsicBlur
- */
- public static ScriptIntrinsicBlur create(RenderScript rs, Element e) {
- if ((!e.isCompatible(Element.U8_4(rs))) && (!e.isCompatible(Element.U8(rs)))) {
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
- long id = rs.nScriptIntrinsicCreate(5, e.getID(rs));
- ScriptIntrinsicBlur sib = new ScriptIntrinsicBlur(id, rs);
- sib.setRadius(5.f);
- return sib;
- }
-
- /**
- * Set the input of the blur.
- * Must match the element type supplied during create.
- *
- * @param ain The input allocation
- */
- public void setInput(Allocation ain) {
- mInput = ain;
- setVar(1, ain);
- }
-
- /**
- * Set the radius of the Blur.
- *
- * Supported range 0 < radius <= 25
- *
- * @param radius The radius of the blur
- */
- public void setRadius(float radius) {
- if (radius <= 0 || radius > 25) {
- throw new RSIllegalArgumentException("Radius out of range (0 < r <= 25).");
- }
- setVar(0, radius);
- }
-
- /**
- * Apply the filter to the input and save to the specified
- * allocation.
- *
- * @param aout Output allocation. Must match creation element
- * type.
- */
- public void forEach(Allocation aout) {
- forEach(0, null, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 2, null, null);
- }
-
- /**
- * Get a FieldID for the input field of this intrinsic.
- *
- * @return Script.FieldID The FieldID object.
- */
- public Script.FieldID getFieldID_Input() {
- return createFieldID(1, null);
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java b/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java
deleted file mode 100644
index 4b0d507..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Intrinsic for applying a color matrix to allocations.
- *
- * If the element type is {@link Element.DataType#UNSIGNED_8},
- * it is converted to {@link Element.DataType#FLOAT_32} and
- * normalized from (0-255) to (0-1). If the incoming vector size
- * is less than four, a {@link Element#F32_4} is created by
- * filling the missing vector channels with zero. This value is
- * then multiplied by the 4x4 color matrix as performed by
- * rsMatrixMultiply(), adding a {@link Element#F32_4}, and then
- * writing it to the output {@link Allocation}.
- *
- * If the ouptut type is unsigned, the value is normalized from
- * (0-1) to (0-255) and converted. If the output vector size is
- * less than four, the unused channels are discarded.
- *
- * Supported elements types are {@link Element#U8}, {@link
- * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4},
- * {@link Element#F32}, {@link Element#F32_2}, {@link
- * Element#F32_3}, and {@link Element#F32_4}.
- **/
-public final class ScriptIntrinsicColorMatrix extends ScriptIntrinsic {
- private final Matrix4f mMatrix = new Matrix4f();
- private final Float4 mAdd = new Float4();
-
- private ScriptIntrinsicColorMatrix(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Create an intrinsic for applying a color matrix to an
- * allocation.
- *
- * @param rs The RenderScript context
- * @param e Element type for inputs and outputs, As of API 19,
- * this parameter is ignored. The Element type check is
- * performed in the kernel launch.
- *
- * @deprecated Use the single argument version as Element is now
- * ignored.
- *
- * @return ScriptIntrinsicColorMatrix
- */
- @Deprecated
- public static ScriptIntrinsicColorMatrix create(RenderScript rs, Element e) {
- return create(rs);
- }
-
- /**
- * Create an intrinsic for applying a color matrix to an
- * allocation.
- *
- * @param rs The RenderScript context
- *
- * @return ScriptIntrinsicColorMatrix
- */
- public static ScriptIntrinsicColorMatrix create(RenderScript rs) {
- long id = rs.nScriptIntrinsicCreate(2, 0);
- return new ScriptIntrinsicColorMatrix(id, rs);
-
- }
-
- private void setMatrix() {
- FieldPacker fp = new FieldPacker(16*4);
- fp.addMatrix(mMatrix);
- setVar(0, fp);
- }
-
- /**
- * Set the color matrix which will be applied to each cell of
- * the image.
- *
- * @param m The 4x4 matrix to set.
- */
- public void setColorMatrix(Matrix4f m) {
- mMatrix.load(m);
- setMatrix();
- }
-
- /**
- * Set the color matrix which will be applied to each cell of the image.
- * This will set the alpha channel to be a copy.
- *
- * @param m The 3x3 matrix to set.
- */
- public void setColorMatrix(Matrix3f m) {
- mMatrix.load(m);
- setMatrix();
- }
-
- /**
- * Set the value to be added after the color matrix has been
- * applied. The default value is {0, 0, 0, 0}
- *
- * @param f The float4 value to be added.
- */
- public void setAdd(Float4 f) {
- mAdd.x = f.x;
- mAdd.y = f.y;
- mAdd.z = f.z;
- mAdd.w = f.w;
-
- FieldPacker fp = new FieldPacker(4*4);
- fp.addF32(f.x);
- fp.addF32(f.y);
- fp.addF32(f.z);
- fp.addF32(f.w);
- setVar(1, fp);
- }
-
- /**
- * Set the value to be added after the color matrix has been
- * applied. The default value is {0, 0, 0, 0}
- *
- * @param r The red add value.
- * @param g The green add value.
- * @param b The blue add value.
- * @param a The alpha add value.
- */
- public void setAdd(float r, float g, float b, float a) {
- mAdd.x = r;
- mAdd.y = g;
- mAdd.z = b;
- mAdd.w = a;
-
- FieldPacker fp = new FieldPacker(4*4);
- fp.addF32(mAdd.x);
- fp.addF32(mAdd.y);
- fp.addF32(mAdd.z);
- fp.addF32(mAdd.w);
- setVar(1, fp);
- }
-
- /**
- * Set a color matrix to convert from RGB to luminance. The alpha channel
- * will be a copy.
- *
- */
- public void setGreyscale() {
- mMatrix.loadIdentity();
- mMatrix.set(0, 0, 0.299f);
- mMatrix.set(1, 0, 0.587f);
- mMatrix.set(2, 0, 0.114f);
- mMatrix.set(0, 1, 0.299f);
- mMatrix.set(1, 1, 0.587f);
- mMatrix.set(2, 1, 0.114f);
- mMatrix.set(0, 2, 0.299f);
- mMatrix.set(1, 2, 0.587f);
- mMatrix.set(2, 2, 0.114f);
- setMatrix();
- }
-
- /**
- * Set the matrix to convert from YUV to RGB with a direct copy of the 4th
- * channel.
- *
- */
- public void setYUVtoRGB() {
- mMatrix.loadIdentity();
- mMatrix.set(0, 0, 1.f);
- mMatrix.set(1, 0, 0.f);
- mMatrix.set(2, 0, 1.13983f);
- mMatrix.set(0, 1, 1.f);
- mMatrix.set(1, 1, -0.39465f);
- mMatrix.set(2, 1, -0.5806f);
- mMatrix.set(0, 2, 1.f);
- mMatrix.set(1, 2, 2.03211f);
- mMatrix.set(2, 2, 0.f);
- setMatrix();
- }
-
- /**
- * Set the matrix to convert from RGB to YUV with a direct copy of the 4th
- * channel.
- *
- */
- public void setRGBtoYUV() {
- mMatrix.loadIdentity();
- mMatrix.set(0, 0, 0.299f);
- mMatrix.set(1, 0, 0.587f);
- mMatrix.set(2, 0, 0.114f);
- mMatrix.set(0, 1, -0.14713f);
- mMatrix.set(1, 1, -0.28886f);
- mMatrix.set(2, 1, 0.436f);
- mMatrix.set(0, 2, 0.615f);
- mMatrix.set(1, 2, -0.51499f);
- mMatrix.set(2, 2, -0.10001f);
- setMatrix();
- }
-
-
- /**
- * Invoke the kernel and apply the matrix to each cell of input
- * {@link Allocation} and copy to the output {@link Allocation}.
- *
- * If the vector size of the input is less than four, the
- * remaining components are treated as zero for the matrix
- * multiply.
- *
- * If the output vector size is less than four, the unused
- * vector components are discarded.
- *
- *
- * @param ain Input allocation
- * @param aout Output allocation
- */
- public void forEach(Allocation ain, Allocation aout) {
- if (!ain.getElement().isCompatible(Element.U8(mRS)) &&
- !ain.getElement().isCompatible(Element.U8_2(mRS)) &&
- !ain.getElement().isCompatible(Element.U8_3(mRS)) &&
- !ain.getElement().isCompatible(Element.U8_4(mRS)) &&
- !ain.getElement().isCompatible(Element.F32(mRS)) &&
- !ain.getElement().isCompatible(Element.F32_2(mRS)) &&
- !ain.getElement().isCompatible(Element.F32_3(mRS)) &&
- !ain.getElement().isCompatible(Element.F32_4(mRS))) {
-
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
-
- if (!aout.getElement().isCompatible(Element.U8(mRS)) &&
- !aout.getElement().isCompatible(Element.U8_2(mRS)) &&
- !aout.getElement().isCompatible(Element.U8_3(mRS)) &&
- !aout.getElement().isCompatible(Element.U8_4(mRS)) &&
- !aout.getElement().isCompatible(Element.F32(mRS)) &&
- !aout.getElement().isCompatible(Element.F32_2(mRS)) &&
- !aout.getElement().isCompatible(Element.F32_3(mRS)) &&
- !aout.getElement().isCompatible(Element.F32_4(mRS))) {
-
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
-
- forEach(0, ain, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 3, null, null);
- }
-
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java b/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java
deleted file mode 100644
index a1a1b7e..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Intrinsic for applying a 3x3 convolve to an allocation.
- *
- **/
-public final class ScriptIntrinsicConvolve3x3 extends ScriptIntrinsic {
- private final float[] mValues = new float[9];
- private Allocation mInput;
-
- private ScriptIntrinsicConvolve3x3(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Supported elements types are {@link Element#U8}, {@link
- * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4},
- * {@link Element#F32}, {@link Element#F32_2}, {@link
- * Element#F32_3}, and {@link Element#F32_4}
- *
- * The default coefficients are.
- *
- * <code>
- * <p> [ 0, 0, 0 ]
- * <p> [ 0, 1, 0 ]
- * <p> [ 0, 0, 0 ]
- * </code>
- *
- * @param rs The RenderScript context
- * @param e Element type for intputs and outputs
- *
- * @return ScriptIntrinsicConvolve3x3
- */
- public static ScriptIntrinsicConvolve3x3 create(RenderScript rs, Element e) {
- float f[] = { 0, 0, 0, 0, 1, 0, 0, 0, 0};
- if (!e.isCompatible(Element.U8(rs)) &&
- !e.isCompatible(Element.U8_2(rs)) &&
- !e.isCompatible(Element.U8_3(rs)) &&
- !e.isCompatible(Element.U8_4(rs)) &&
- !e.isCompatible(Element.F32(rs)) &&
- !e.isCompatible(Element.F32_2(rs)) &&
- !e.isCompatible(Element.F32_3(rs)) &&
- !e.isCompatible(Element.F32_4(rs))) {
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
- long id = rs.nScriptIntrinsicCreate(1, e.getID(rs));
- ScriptIntrinsicConvolve3x3 si = new ScriptIntrinsicConvolve3x3(id, rs);
- si.setCoefficients(f);
- return si;
-
- }
-
- /**
- * Set the input of the blur.
- * Must match the element type supplied during create.
- *
- * @param ain The input allocation.
- */
- public void setInput(Allocation ain) {
- mInput = ain;
- setVar(1, ain);
- }
-
- /**
- * Set the coefficients for the convolve.
- *
- * The convolve layout is
- * <code>
- * <p> [ 0, 1, 2 ]
- * <p> [ 3, 4, 5 ]
- * <p> [ 6, 7, 8 ]
- * </code>
- *
- * @param v The array of coefficients to set
- */
- public void setCoefficients(float v[]) {
- FieldPacker fp = new FieldPacker(9*4);
- for (int ct=0; ct < mValues.length; ct++) {
- mValues[ct] = v[ct];
- fp.addF32(mValues[ct]);
- }
- setVar(0, fp);
- }
-
- /**
- * Apply the filter to the input and save to the specified
- * allocation.
- *
- * @param aout Output allocation. Must match creation element
- * type.
- */
- public void forEach(Allocation aout) {
- forEach(0, null, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 2, null, null);
- }
-
- /**
- * Get a FieldID for the input field of this intrinsic.
- *
- * @return Script.FieldID The FieldID object.
- */
- public Script.FieldID getFieldID_Input() {
- return createFieldID(1, null);
- }
-
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java b/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java
deleted file mode 100644
index 8b66896..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Intrinsic for applying a 5x5 convolve to an allocation.
- *
- **/
-public final class ScriptIntrinsicConvolve5x5 extends ScriptIntrinsic {
- private final float[] mValues = new float[25];
- private Allocation mInput;
-
- private ScriptIntrinsicConvolve5x5(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Supported elements types are {@link Element#U8}, {@link
- * Element#U8_2}, {@link Element#U8_3}, {@link Element#U8_4},
- * {@link Element#F32}, {@link Element#F32_2}, {@link
- * Element#F32_3}, and {@link Element#F32_4}
- *
- * The default coefficients are.
- * <code>
- * <p> [ 0, 0, 0, 0, 0 ]
- * <p> [ 0, 0, 0, 0, 0 ]
- * <p> [ 0, 0, 1, 0, 0 ]
- * <p> [ 0, 0, 0, 0, 0 ]
- * <p> [ 0, 0, 0, 0, 0 ]
- * </code>
- *
- * @param rs The RenderScript context
- * @param e Element type for intputs and outputs
- *
- * @return ScriptIntrinsicConvolve5x5
- */
- public static ScriptIntrinsicConvolve5x5 create(RenderScript rs, Element e) {
- if (!e.isCompatible(Element.U8(rs)) &&
- !e.isCompatible(Element.U8_2(rs)) &&
- !e.isCompatible(Element.U8_3(rs)) &&
- !e.isCompatible(Element.U8_4(rs)) &&
- !e.isCompatible(Element.F32(rs)) &&
- !e.isCompatible(Element.F32_2(rs)) &&
- !e.isCompatible(Element.F32_3(rs)) &&
- !e.isCompatible(Element.F32_4(rs))) {
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
-
- long id = rs.nScriptIntrinsicCreate(4, e.getID(rs));
- return new ScriptIntrinsicConvolve5x5(id, rs);
-
- }
-
- /**
- * Set the input of the blur.
- * Must match the element type supplied during create.
- *
- * @param ain The input allocation.
- */
- public void setInput(Allocation ain) {
- mInput = ain;
- setVar(1, ain);
- }
-
- /**
- * Set the coefficients for the convolve.
- *
- * The convolve layout is
- * <code>
- * <p> [ 0, 1, 2, 3, 4 ]
- * <p> [ 5, 6, 7, 8, 9 ]
- * <p> [ 10, 11, 12, 13, 14 ]
- * <p> [ 15, 16, 17, 18, 19 ]
- * <p> [ 20, 21, 22, 23, 24 ]
- * </code>
- *
- * @param v The array of coefficients to set
- */
- public void setCoefficients(float v[]) {
- FieldPacker fp = new FieldPacker(25*4);
- for (int ct=0; ct < mValues.length; ct++) {
- mValues[ct] = v[ct];
- fp.addF32(mValues[ct]);
- }
- setVar(0, fp);
- }
-
- /**
- * Apply the filter to the input and save to the specified
- * allocation.
- *
- * @param aout Output allocation. Must match creation element
- * type.
- */
- public void forEach(Allocation aout) {
- forEach(0, null, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 2, null, null);
- }
-
- /**
- * Get a FieldID for the input field of this intrinsic.
- *
- * @return Script.FieldID The FieldID object.
- */
- public Script.FieldID getFieldID_Input() {
- return createFieldID(1, null);
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicHistogram.java b/graphics/java/android/renderscript/ScriptIntrinsicHistogram.java
deleted file mode 100644
index 536663d..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicHistogram.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Intrinsic Histogram filter.
- *
- *
- **/
-public final class ScriptIntrinsicHistogram extends ScriptIntrinsic {
- private Allocation mOut;
-
- private ScriptIntrinsicHistogram(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Create an intrinsic for calculating the histogram of an uchar
- * or uchar4 image.
- *
- * Supported elements types are
- * {@link Element#U8_4}, {@link Element#U8_3},
- * {@link Element#U8_2}, {@link Element#U8}
- *
- * @param rs The RenderScript context
- * @param e Element type for inputs
- *
- * @return ScriptIntrinsicHistogram
- */
- public static ScriptIntrinsicHistogram create(RenderScript rs, Element e) {
- if ((!e.isCompatible(Element.U8_4(rs))) &&
- (!e.isCompatible(Element.U8_3(rs))) &&
- (!e.isCompatible(Element.U8_2(rs))) &&
- (!e.isCompatible(Element.U8(rs)))) {
- throw new RSIllegalArgumentException("Unsuported element type.");
- }
- long id = rs.nScriptIntrinsicCreate(9, e.getID(rs));
- ScriptIntrinsicHistogram sib = new ScriptIntrinsicHistogram(id, rs);
- return sib;
- }
-
- /**
- * Process an input buffer and place the histogram into the
- * output allocation. The output allocation may be a narrower
- * vector size than the input. In this case the vector size of
- * the output is used to determine how many of the input
- * channels are used in the computation. This is useful if you
- * have an RGBA input buffer but only want the histogram for
- * RGB.
- *
- * 1D and 2D input allocations are supported.
- *
- * @param ain The input image
- */
- public void forEach(Allocation ain) {
- if (ain.getType().getElement().getVectorSize() <
- mOut.getType().getElement().getVectorSize()) {
-
- throw new RSIllegalArgumentException(
- "Input vector size must be >= output vector size.");
- }
- if (ain.getType().getElement().isCompatible(Element.U8(mRS)) &&
- ain.getType().getElement().isCompatible(Element.U8_4(mRS))) {
- throw new RSIllegalArgumentException("Output type must be U32 or I32.");
- }
-
- forEach(0, ain, null, null);
- }
-
- /**
- * Set the coefficients used for the RGBA to Luminocity
- * calculation. The default is {0.299f, 0.587f, 0.114f, 0.f}.
- *
- * Coefficients must be >= 0 and sum to 1.0 or less.
- *
- * @param r Red coefficient
- * @param g Green coefficient
- * @param b Blue coefficient
- * @param a Alpha coefficient
- */
- public void setDotCoefficients(float r, float g, float b, float a) {
- if ((r < 0.f) || (g < 0.f) || (b < 0.f) || (a < 0.f)) {
- throw new RSIllegalArgumentException("Coefficient may not be negative.");
- }
- if ((r + g + b + a) > 1.f) {
- throw new RSIllegalArgumentException("Sum of coefficients must be 1.0 or less.");
- }
-
- FieldPacker fp = new FieldPacker(16);
- fp.addF32(r);
- fp.addF32(g);
- fp.addF32(b);
- fp.addF32(a);
- setVar(0, fp);
- }
-
- /**
- * Set the output of the histogram. 32 bit integer types are
- * supported.
- *
- * @param aout The output allocation
- */
- public void setOutput(Allocation aout) {
- mOut = aout;
- if (mOut.getType().getElement() != Element.U32(mRS) &&
- mOut.getType().getElement() != Element.U32_2(mRS) &&
- mOut.getType().getElement() != Element.U32_3(mRS) &&
- mOut.getType().getElement() != Element.U32_4(mRS) &&
- mOut.getType().getElement() != Element.I32(mRS) &&
- mOut.getType().getElement() != Element.I32_2(mRS) &&
- mOut.getType().getElement() != Element.I32_3(mRS) &&
- mOut.getType().getElement() != Element.I32_4(mRS)) {
-
- throw new RSIllegalArgumentException("Output type must be U32 or I32.");
- }
- if ((mOut.getType().getX() != 256) ||
- (mOut.getType().getY() != 0) ||
- mOut.getType().hasMipmaps() ||
- (mOut.getType().getYuv() != 0)) {
-
- throw new RSIllegalArgumentException("Output must be 1D, 256 elements.");
- }
- setVar(1, aout);
- }
-
- /**
- * Process an input buffer and place the histogram into the
- * output allocation. The dot product of the input channel and
- * the coefficients from 'setDotCoefficients' are used to
- * calculate the output values.
- *
- * 1D and 2D input allocations are supported.
- *
- * @param ain The input image
- */
- public void forEach_Dot(Allocation ain) {
- if (mOut.getType().getElement().getVectorSize() != 1) {
- throw new RSIllegalArgumentException("Output vector size must be one.");
- }
- if (ain.getType().getElement().isCompatible(Element.U8(mRS)) &&
- ain.getType().getElement().isCompatible(Element.U8_4(mRS))) {
- throw new RSIllegalArgumentException("Output type must be U32 or I32.");
- }
-
- forEach(1, ain, null, null);
- }
-
-
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID_Separate() {
- return createKernelID(0, 3, null, null);
- }
-
- /**
- * Get a FieldID for the input field of this intrinsic.
- *
- * @return Script.FieldID The FieldID object.
- */
- public Script.FieldID getFieldID_Input() {
- return createFieldID(1, null);
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicLUT.java b/graphics/java/android/renderscript/ScriptIntrinsicLUT.java
deleted file mode 100644
index 001095c..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicLUT.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-/**
- * Intrinsic for applying a per-channel lookup table. Each
- * channel of the input has an independant lookup table. The
- * tables are 256 entries in size and can cover the full value
- * range of {@link Element#U8_4}.
- **/
-public final class ScriptIntrinsicLUT extends ScriptIntrinsic {
- private final Matrix4f mMatrix = new Matrix4f();
- private Allocation mTables;
- private final byte mCache[] = new byte[1024];
- private boolean mDirty = true;
-
- private ScriptIntrinsicLUT(long id, RenderScript rs) {
- super(id, rs);
- mTables = Allocation.createSized(rs, Element.U8(rs), 1024);
- for (int ct=0; ct < 256; ct++) {
- mCache[ct] = (byte)ct;
- mCache[ct + 256] = (byte)ct;
- mCache[ct + 512] = (byte)ct;
- mCache[ct + 768] = (byte)ct;
- }
- setVar(0, mTables);
- }
-
- /**
- * Supported elements types are {@link Element#U8_4}
- *
- * The defaults tables are identity.
- *
- * @param rs The RenderScript context
- * @param e Element type for intputs and outputs
- *
- * @return ScriptIntrinsicLUT
- */
- public static ScriptIntrinsicLUT create(RenderScript rs, Element e) {
- long id = rs.nScriptIntrinsicCreate(3, e.getID(rs));
- return new ScriptIntrinsicLUT(id, rs);
-
- }
-
-
- private void validate(int index, int value) {
- if (index < 0 || index > 255) {
- throw new RSIllegalArgumentException("Index out of range (0-255).");
- }
- if (value < 0 || value > 255) {
- throw new RSIllegalArgumentException("Value out of range (0-255).");
- }
- }
-
- /**
- * Set an entry in the red channel lookup table
- *
- * @param index Must be 0-255
- * @param value Must be 0-255
- */
- public void setRed(int index, int value) {
- validate(index, value);
- mCache[index] = (byte)value;
- mDirty = true;
- }
-
- /**
- * Set an entry in the green channel lookup table
- *
- * @param index Must be 0-255
- * @param value Must be 0-255
- */
- public void setGreen(int index, int value) {
- validate(index, value);
- mCache[index+256] = (byte)value;
- mDirty = true;
- }
-
- /**
- * Set an entry in the blue channel lookup table
- *
- * @param index Must be 0-255
- * @param value Must be 0-255
- */
- public void setBlue(int index, int value) {
- validate(index, value);
- mCache[index+512] = (byte)value;
- mDirty = true;
- }
-
- /**
- * Set an entry in the alpha channel lookup table
- *
- * @param index Must be 0-255
- * @param value Must be 0-255
- */
- public void setAlpha(int index, int value) {
- validate(index, value);
- mCache[index+768] = (byte)value;
- mDirty = true;
- }
-
-
- /**
- * Invoke the kernel and apply the lookup to each cell of ain
- * and copy to aout.
- *
- * @param ain Input allocation
- * @param aout Output allocation
- */
- public void forEach(Allocation ain, Allocation aout) {
- if (mDirty) {
- mDirty = false;
- mTables.copyFromUnchecked(mCache);
- }
- forEach(0, ain, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 3, null, null);
- }
-}
-
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java b/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java
deleted file mode 100644
index f942982..0000000
--- a/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2012 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;
-
-
-/**
- * Intrinsic for converting an Android YUV buffer to RGB.
- *
- * The input allocation should be supplied in a supported YUV format
- * as a YUV element Allocation. The output is RGBA; the alpha channel
- * will be set to 255.
- */
-public final class ScriptIntrinsicYuvToRGB extends ScriptIntrinsic {
- private Allocation mInput;
-
- ScriptIntrinsicYuvToRGB(long id, RenderScript rs) {
- super(id, rs);
- }
-
- /**
- * Create an intrinsic for converting YUV to RGB.
- *
- * Supported elements types are {@link Element#U8_4}
- *
- * @param rs The RenderScript context
- * @param e Element type for output
- *
- * @return ScriptIntrinsicYuvToRGB
- */
- public static ScriptIntrinsicYuvToRGB create(RenderScript rs, Element e) {
- // 6 comes from RS_SCRIPT_INTRINSIC_YUV_TO_RGB in rsDefines.h
- long id = rs.nScriptIntrinsicCreate(6, e.getID(rs));
- ScriptIntrinsicYuvToRGB si = new ScriptIntrinsicYuvToRGB(id, rs);
- return si;
- }
-
-
- /**
- * Set the input yuv allocation, must be {@link Element#U8}.
- *
- * @param ain The input allocation.
- */
- public void setInput(Allocation ain) {
- mInput = ain;
- setVar(0, ain);
- }
-
- /**
- * Convert the image to RGB.
- *
- * @param aout Output allocation. Must match creation element
- * type.
- */
- public void forEach(Allocation aout) {
- forEach(0, null, aout, null);
- }
-
- /**
- * Get a KernelID for this intrinsic kernel.
- *
- * @return Script.KernelID The KernelID object.
- */
- public Script.KernelID getKernelID() {
- return createKernelID(0, 2, null, null);
- }
-
- /**
- * Get a FieldID for the input field of this intrinsic.
- *
- * @return Script.FieldID The FieldID object.
- */
- public Script.FieldID getFieldID_Input() {
- return createFieldID(0, null);
- }
-}
diff --git a/graphics/java/android/renderscript/Short2.java b/graphics/java/android/renderscript/Short2.java
deleted file mode 100644
index 24809f7..0000000
--- a/graphics/java/android/renderscript/Short2.java
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-
-/**
- * Class for exposing the native RenderScript Short2 type back to the Android system.
- *
- * Vector version of the basic short type.
- * Provides two short fields packed.
- */
-public class Short2 {
- public short x;
- public short y;
-
- public Short2() {
- }
-
- /** @hide */
- public Short2(short i) {
- this.x = this.y = i;
- }
-
- public Short2(short x, short y) {
- this.x = x;
- this.y = y;
- }
-
- /** @hide */
- public Short2(Short2 source) {
- this.x = source.x;
- this.y = source.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Short2 a) {
- this.x += a.x;
- this.y += a.y;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 add(Short2 a, Short2 b) {
- Short2 result = new Short2();
- result.x = (short)(a.x + b.x);
- result.y = (short)(a.y + b.y);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(short value) {
- x += value;
- y += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 add(Short2 a, short b) {
- Short2 result = new Short2();
- result.x = (short)(a.x + b);
- result.y = (short)(a.y + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Short2 a) {
- this.x -= a.x;
- this.y -= a.y;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 sub(Short2 a, Short2 b) {
- Short2 result = new Short2();
- result.x = (short)(a.x - b.x);
- result.y = (short)(a.y - b.y);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(short value) {
- x -= value;
- y -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 sub(Short2 a, short b) {
- Short2 result = new Short2();
- result.x = (short)(a.x - b);
- result.y = (short)(a.y - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Short2 a) {
- this.x *= a.x;
- this.y *= a.y;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 mul(Short2 a, Short2 b) {
- Short2 result = new Short2();
- result.x = (short)(a.x * b.x);
- result.y = (short)(a.y * b.y);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(short value) {
- x *= value;
- y *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 mul(Short2 a, short b) {
- Short2 result = new Short2();
- result.x = (short)(a.x * b);
- result.y = (short)(a.y * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Short2 a) {
- this.x /= a.x;
- this.y /= a.y;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 div(Short2 a, Short2 b) {
- Short2 result = new Short2();
- result.x = (short)(a.x / b.x);
- result.y = (short)(a.y / b.y);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(short value) {
- x /= value;
- y /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 div(Short2 a, short b) {
- Short2 result = new Short2();
- result.x = (short)(a.x / b);
- result.y = (short)(a.y / b);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Short2 a) {
- this.x %= a.x;
- this.y %= a.y;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 mod(Short2 a, Short2 b) {
- Short2 result = new Short2();
- result.x = (short)(a.x % b.x);
- result.y = (short)(a.y % b.y);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(short value) {
- x %= value;
- y %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short2 mod(Short2 a, short b) {
- Short2 result = new Short2();
- result.x = (short)(a.x % b);
- result.y = (short)(a.y % b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public short length() {
- return 2;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (short)(-x);
- this.y = (short)(-y);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public short dotProduct(Short2 a) {
- return (short)((x * a.x) + (y * a.y));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static short dotProduct(Short2 a, Short2 b) {
- return (short)((b.x * a.x) + (b.y * a.y));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Short2 a, short factor) {
- x += a.x * factor;
- y += a.y * factor;
- }
-
- /** @hide
- * set vector value by Short2
- *
- * @param a
- */
- public void set(Short2 a) {
- this.x = a.x;
- this.y = a.y;
- }
-
- /** @hide
- * set the vector field value by Short
- *
- * @param a
- * @param b
- */
- public void setValues(short a, short b) {
- this.x = a;
- this.y = b;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public short elementSum() {
- return (short)(x + y);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public short get(int i) {
- switch (i) {
- case 0:
- return (short)(x);
- case 1:
- return (short)(y);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, short value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, short value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to short array
- *
- * @param data
- * @param offset
- */
- public void copyTo(short[] data, int offset) {
- data[offset] = (short)(x);
- data[offset + 1] = (short)(y);
- }
-}
diff --git a/graphics/java/android/renderscript/Short3.java b/graphics/java/android/renderscript/Short3.java
deleted file mode 100644
index 661db0a..0000000
--- a/graphics/java/android/renderscript/Short3.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic short type.
- * Provides three short fields packed.
- */
-public class Short3 {
- public short x;
- public short y;
- public short z;
-
- public Short3() {
- }
-
- /** @hide */
- public Short3(short i) {
- this.x = this.y = this.z = i;
- }
-
- public Short3(short x, short y, short z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- /** @hide */
- public Short3(Short3 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Short3 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 add(Short3 a, Short3 b) {
- Short3 result = new Short3();
- result.x = (short)(a.x + b.x);
- result.y = (short)(a.y + b.y);
- result.z = (short)(a.z + b.z);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(short value) {
- x += value;
- y += value;
- z += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 add(Short3 a, short b) {
- Short3 result = new Short3();
- result.x = (short)(a.x + b);
- result.y = (short)(a.y + b);
- result.z = (short)(a.z + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Short3 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 sub(Short3 a, Short3 b) {
- Short3 result = new Short3();
- result.x = (short)(a.x - b.x);
- result.y = (short)(a.y - b.y);
- result.z = (short)(a.z - b.z);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(short value) {
- x -= value;
- y -= value;
- z -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 sub(Short3 a, short b) {
- Short3 result = new Short3();
- result.x = (short)(a.x - b);
- result.y = (short)(a.y - b);
- result.z = (short)(a.z - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Short3 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 mul(Short3 a, Short3 b) {
- Short3 result = new Short3();
- result.x = (short)(a.x * b.x);
- result.y = (short)(a.y * b.y);
- result.z = (short)(a.z * b.z);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(short value) {
- x *= value;
- y *= value;
- z *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 mul(Short3 a, short b) {
- Short3 result = new Short3();
- result.x = (short)(a.x * b);
- result.y = (short)(a.y * b);
- result.z = (short)(a.z * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Short3 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 div(Short3 a, Short3 b) {
- Short3 result = new Short3();
- result.x = (short)(a.x / b.x);
- result.y = (short)(a.y / b.y);
- result.z = (short)(a.z / b.z);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(short value) {
- x /= value;
- y /= value;
- z /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 div(Short3 a, short b) {
- Short3 result = new Short3();
- result.x = (short)(a.x / b);
- result.y = (short)(a.y / b);
- result.z = (short)(a.z / b);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Short3 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 mod(Short3 a, Short3 b) {
- Short3 result = new Short3();
- result.x = (short)(a.x % b.x);
- result.y = (short)(a.y % b.y);
- result.z = (short)(a.z % b.z);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(short value) {
- x %= value;
- y %= value;
- z %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short3 mod(Short3 a, short b) {
- Short3 result = new Short3();
- result.x = (short)(a.x % b);
- result.y = (short)(a.y % b);
- result.z = (short)(a.z % b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public short length() {
- return 3;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (short)(-x);
- this.y = (short)(-y);
- this.z = (short)(-z);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public short dotProduct(Short3 a) {
- return (short)((x * a.x) + (y * a.y) + (z * a.z));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static short dotProduct(Short3 a, Short3 b) {
- return (short)((b.x * a.x) + (b.y * a.y) + (b.z * a.z));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Short3 a, short factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- }
-
- /** @hide
- * set vector value by Short3
- *
- * @param a
- */
- public void set(Short3 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- }
-
- /** @hide
- * set the vector field value by Short
- *
- * @param a
- * @param b
- * @param c
- */
- public void setValues(short a, short b, short c) {
- this.x = a;
- this.y = b;
- this.z = c;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public short elementSum() {
- return (short)(x + y + z);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public short get(int i) {
- switch (i) {
- case 0:
- return (short)(x);
- case 1:
- return (short)(y);
- case 2:
- return (short)(z);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, short value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, short value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to short array
- *
- * @param data
- * @param offset
- */
- public void copyTo(short[] data, int offset) {
- data[offset] = (short)(x);
- data[offset + 1] = (short)(y);
- data[offset + 2] = (short)(z);
- }
-}
diff --git a/graphics/java/android/renderscript/Short4.java b/graphics/java/android/renderscript/Short4.java
deleted file mode 100644
index a2d74f2..0000000
--- a/graphics/java/android/renderscript/Short4.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * Vector version of the basic short type.
- * Provides four short fields packed.
- */
-public class Short4 {
- public short x;
- public short y;
- public short z;
- public short w;
-
- public Short4() {
- }
-
- /** @hide */
- public Short4(short i) {
- this.x = this.y = this.z = this.w = i;
- }
-
- public Short4(short x, short y, short z, short w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- }
-
- /** @hide */
- public Short4(Short4 source) {
- this.x = source.x;
- this.y = source.y;
- this.z = source.z;
- this.w = source.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- */
- public void add(Short4 a) {
- this.x += a.x;
- this.y += a.y;
- this.z += a.z;
- this.w += a.w;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 add(Short4 a, Short4 b) {
- Short4 result = new Short4();
- result.x = (short)(a.x + b.x);
- result.y = (short)(a.y + b.y);
- result.z = (short)(a.z + b.z);
- result.w = (short)(a.w + b.w);
-
- return result;
- }
-
- /** @hide
- * Vector add
- *
- * @param value
- */
- public void add(short value) {
- x += value;
- y += value;
- z += value;
- w += value;
- }
-
- /** @hide
- * Vector add
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 add(Short4 a, short b) {
- Short4 result = new Short4();
- result.x = (short)(a.x + b);
- result.y = (short)(a.y + b);
- result.z = (short)(a.z + b);
- result.w = (short)(a.w + b);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- */
- public void sub(Short4 a) {
- this.x -= a.x;
- this.y -= a.y;
- this.z -= a.z;
- this.w -= a.w;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 sub(Short4 a, Short4 b) {
- Short4 result = new Short4();
- result.x = (short)(a.x - b.x);
- result.y = (short)(a.y - b.y);
- result.z = (short)(a.z - b.z);
- result.w = (short)(a.w - b.w);
-
- return result;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param value
- */
- public void sub(short value) {
- x -= value;
- y -= value;
- z -= value;
- w -= value;
- }
-
- /** @hide
- * Vector subtraction
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 sub(Short4 a, short b) {
- Short4 result = new Short4();
- result.x = (short)(a.x - b);
- result.y = (short)(a.y - b);
- result.z = (short)(a.z - b);
- result.w = (short)(a.w - b);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- */
- public void mul(Short4 a) {
- this.x *= a.x;
- this.y *= a.y;
- this.z *= a.z;
- this.w *= a.w;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 mul(Short4 a, Short4 b) {
- Short4 result = new Short4();
- result.x = (short)(a.x * b.x);
- result.y = (short)(a.y * b.y);
- result.z = (short)(a.z * b.z);
- result.w = (short)(a.w * b.w);
-
- return result;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param value
- */
- public void mul(short value) {
- x *= value;
- y *= value;
- z *= value;
- w *= value;
- }
-
- /** @hide
- * Vector multiplication
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 mul(Short4 a, short b) {
- Short4 result = new Short4();
- result.x = (short)(a.x * b);
- result.y = (short)(a.y * b);
- result.z = (short)(a.z * b);
- result.w = (short)(a.w * b);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- */
- public void div(Short4 a) {
- this.x /= a.x;
- this.y /= a.y;
- this.z /= a.z;
- this.w /= a.w;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 div(Short4 a, Short4 b) {
- Short4 result = new Short4();
- result.x = (short)(a.x / b.x);
- result.y = (short)(a.y / b.y);
- result.z = (short)(a.z / b.z);
- result.w = (short)(a.w / b.w);
-
- return result;
- }
-
- /** @hide
- * Vector division
- *
- * @param value
- */
- public void div(short value) {
- x /= value;
- y /= value;
- z /= value;
- w /= value;
- }
-
- /** @hide
- * Vector division
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 div(Short4 a, short b) {
- Short4 result = new Short4();
- result.x = (short)(a.x / b);
- result.y = (short)(a.y / b);
- result.z = (short)(a.z / b);
- result.w = (short)(a.w / b);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- */
- public void mod(Short4 a) {
- this.x %= a.x;
- this.y %= a.y;
- this.z %= a.z;
- this.w %= a.w;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 mod(Short4 a, Short4 b) {
- Short4 result = new Short4();
- result.x = (short)(a.x % b.x);
- result.y = (short)(a.y % b.y);
- result.z = (short)(a.z % b.z);
- result.w = (short)(a.w % b.w);
-
- return result;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param value
- */
- public void mod(short value) {
- x %= value;
- y %= value;
- z %= value;
- w %= value;
- }
-
- /** @hide
- * Vector Modulo
- *
- * @param a
- * @param b
- * @return
- */
- public static Short4 mod(Short4 a, short b) {
- Short4 result = new Short4();
- result.x = (short)(a.x % b);
- result.y = (short)(a.y % b);
- result.z = (short)(a.z % b);
- result.w = (short)(a.w % b);
-
- return result;
- }
-
- /** @hide
- * get vector length
- *
- * @return
- */
- public short length() {
- return 4;
- }
-
- /** @hide
- * set vector negate
- */
- public void negate() {
- this.x = (short)(-x);
- this.y = (short)(-y);
- this.z = (short)(-z);
- this.w = (short)(-w);
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @return
- */
- public short dotProduct(Short4 a) {
- return (short)((x * a.x) + (y * a.y) + (z * a.z) + (w * a.w));
- }
-
- /** @hide
- * Vector dot Product
- *
- * @param a
- * @param b
- * @return
- */
- public static short dotProduct(Short4 a, Short4 b) {
- return (short)((b.x * a.x) + (b.y * a.y) + (b.z * a.z) + (b.w * a.w));
- }
-
- /** @hide
- * Vector add Multiple
- *
- * @param a
- * @param factor
- */
- public void addMultiple(Short4 a, short factor) {
- x += a.x * factor;
- y += a.y * factor;
- z += a.z * factor;
- w += a.w * factor;
- }
-
- /** @hide
- * set vector value by Short4
- *
- * @param a
- */
- public void set(Short4 a) {
- this.x = a.x;
- this.y = a.y;
- this.z = a.z;
- this.w = a.w;
- }
-
- /** @hide
- * set the vector field value by Short
- *
- * @param a
- * @param b
- * @param c
- * @param d
- */
- public void setValues(short a, short b, short c, short d) {
- this.x = a;
- this.y = b;
- this.z = c;
- this.w = d;
- }
-
- /** @hide
- * return the element sum of vector
- *
- * @return
- */
- public short elementSum() {
- return (short)(x + y + z + w);
- }
-
- /** @hide
- * get the vector field value by index
- *
- * @param i
- * @return
- */
- public short get(int i) {
- switch (i) {
- case 0:
- return (short)(x);
- case 1:
- return (short)(y);
- case 2:
- return (short)(z);
- case 3:
- return (short)(w);
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * set the vector field value by index
- *
- * @param i
- * @param value
- */
- public void setAt(int i, short value) {
- switch (i) {
- case 0:
- x = value;
- return;
- case 1:
- y = value;
- return;
- case 2:
- z = value;
- return;
- case 3:
- w = value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * add the vector field value by index
- *
- * @param i
- * @param value
- */
- public void addAt(int i, short value) {
- switch (i) {
- case 0:
- x += value;
- return;
- case 1:
- y += value;
- return;
- case 2:
- z += value;
- return;
- case 3:
- w += value;
- return;
- default:
- throw new IndexOutOfBoundsException("Index: i");
- }
- }
-
- /** @hide
- * copy the vector to short array
- *
- * @param data
- * @param offset
- */
- public void copyTo(short[] data, int offset) {
- data[offset] = (short)(x);
- data[offset + 1] = (short)(y);
- data[offset + 2] = (short)(z);
- data[offset + 3] = (short)(w);
- }
-}
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
deleted file mode 100644
index 83bf4a5..0000000
--- a/graphics/java/android/renderscript/Type.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-/**
- * <p>A Type describes the {@link android.renderscript.Element} and dimensions used for an {@link
- * android.renderscript.Allocation} or a parallel operation. Types are created through {@link
- * android.renderscript.Type.Builder}.</p>
- *
- * <p>A Type always includes an {@link android.renderscript.Element} and an X
- * dimension. A Type may be multidimensional, up to three dimensions. A nonzero
- * value in the Y or Z dimensions indicates that the dimension is present. Note
- * that a Type with only a given X dimension and a Type with the same X
- * dimension but Y = 1 are not equivalent.</p>
- *
- * <p>A Type also supports inclusion of level of detail (LOD) or cube map
- * faces. LOD and cube map faces are booleans to indicate present or not
- * present. </p>
- *
- * <p>A Type also supports YUV format information to support an
- * {@link android.renderscript.Allocation} in a YUV format. The YUV formats
- * supported are {@link android.graphics.ImageFormat#YV12},
- * {@link android.graphics.ImageFormat#NV21}, and
- * {@link android.graphics.ImageFormat#YUV_420_888}</p>
- *
- * <div class="special reference">
- * <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses RenderScript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
- * </div>
- **/
-public class Type extends BaseObj {
- int mDimX;
- int mDimY;
- int mDimZ;
- boolean mDimMipmaps;
- boolean mDimFaces;
- int mDimYuv;
- int mElementCount;
- Element mElement;
-
- public enum CubemapFace {
- POSITIVE_X (0),
- NEGATIVE_X (1),
- POSITIVE_Y (2),
- NEGATIVE_Y (3),
- POSITIVE_Z (4),
- NEGATIVE_Z (5),
- @Deprecated
- POSITVE_X (0),
- @Deprecated
- POSITVE_Y (2),
- @Deprecated
- POSITVE_Z (4);
-
- int mID;
- CubemapFace(int id) {
- mID = id;
- }
- }
-
- /**
- * Return the element associated with this Type.
- *
- * @return Element
- */
- public Element getElement() {
- return mElement;
- }
-
- /**
- * Return the value of the X dimension.
- *
- * @return int
- */
- public int getX() {
- return mDimX;
- }
-
- /**
- * Return the value of the Y dimension or 0 for a 1D allocation.
- *
- * @return int
- */
- public int getY() {
- return mDimY;
- }
-
- /**
- * Return the value of the Z dimension or 0 for a 1D or 2D allocation.
- *
- * @return int
- */
- public int getZ() {
- return mDimZ;
- }
-
- /**
- * Get the YUV format
- *
- *
- * @return int
- */
- public int getYuv() {
- return mDimYuv;
- }
-
- /**
- * Return if the Type has a mipmap chain.
- *
- * @return boolean
- */
- public boolean hasMipmaps() {
- return mDimMipmaps;
- }
-
- /**
- * Return if the Type is a cube map.
- *
- * @return boolean
- */
- public boolean hasFaces() {
- return mDimFaces;
- }
-
- /**
- * Return the total number of accessable cells in the Type.
- *
- * @return int
- */
- public int getCount() {
- return mElementCount;
- }
-
- void calcElementCount() {
- boolean hasLod = hasMipmaps();
- int x = getX();
- int y = getY();
- int z = getZ();
- int faces = 1;
- if (hasFaces()) {
- faces = 6;
- }
- if (x == 0) {
- x = 1;
- }
- if (y == 0) {
- y = 1;
- }
- if (z == 0) {
- z = 1;
- }
-
- int count = x * y * z * faces;
-
- while (hasLod && ((x > 1) || (y > 1) || (z > 1))) {
- if(x > 1) {
- x >>= 1;
- }
- if(y > 1) {
- y >>= 1;
- }
- if(z > 1) {
- z >>= 1;
- }
-
- count += x * y * z * faces;
- }
- mElementCount = count;
- }
-
-
- Type(long id, RenderScript rs) {
- super(id, rs);
- }
-
- @Override
- void updateFromNative() {
- // FIXME: rsaTypeGetNativeData needs 32-bit and 64-bit paths
-
- // We have 6 integer to obtain mDimX; mDimY; mDimZ;
- // mDimLOD; mDimFaces; mElement;
- int[] dataBuffer = new int[6];
- mRS.nTypeGetNativeData((int)getID(mRS), dataBuffer);
-
- mDimX = dataBuffer[0];
- mDimY = dataBuffer[1];
- mDimZ = dataBuffer[2];
- mDimMipmaps = dataBuffer[3] == 1 ? true : false;
- mDimFaces = dataBuffer[4] == 1 ? true : false;
-
- int elementID = dataBuffer[5];
- if(elementID != 0) {
- mElement = new Element(elementID, mRS);
- mElement.updateFromNative();
- }
- calcElementCount();
- }
-
- /**
- * Utility function for creating basic 1D types. The type is
- * created without mipmaps enabled.
- *
- * @param rs The RenderScript context
- * @param e The Element for the Type
- * @param dimX The X dimension, must be > 0
- *
- * @return Type
- */
- static public Type createX(RenderScript rs, Element e, int dimX) {
- if (dimX < 1) {
- throw new RSInvalidStateException("Dimension must be >= 1.");
- }
-
- long id = rs.nTypeCreate(e.getID(rs), dimX, 0, 0, false, false, 0);
- Type t = new Type(id, rs);
- t.mElement = e;
- t.mDimX = dimX;
- t.calcElementCount();
- return t;
- }
-
- /**
- * Utility function for creating basic 2D types. The type is
- * created without mipmaps or cubemaps.
- *
- * @param rs The RenderScript context
- * @param e The Element for the Type
- * @param dimX The X dimension, must be > 0
- * @param dimY The Y dimension, must be > 0
- *
- * @return Type
- */
- static public Type createXY(RenderScript rs, Element e, int dimX, int dimY) {
- if ((dimX < 1) || (dimY < 1)) {
- throw new RSInvalidStateException("Dimension must be >= 1.");
- }
-
- long id = rs.nTypeCreate(e.getID(rs), dimX, dimY, 0, false, false, 0);
- Type t = new Type(id, rs);
- t.mElement = e;
- t.mDimX = dimX;
- t.mDimY = dimY;
- t.calcElementCount();
- return t;
- }
-
- /**
- * Utility function for creating basic 3D types. The type is
- * created without mipmaps.
- *
- * @param rs The RenderScript context
- * @param e The Element for the Type
- * @param dimX The X dimension, must be > 0
- * @param dimY The Y dimension, must be > 0
- * @param dimZ The Z dimension, must be > 0
- *
- * @return Type
- */
- static public Type createXYZ(RenderScript rs, Element e, int dimX, int dimY, int dimZ) {
- if ((dimX < 1) || (dimY < 1) || (dimZ < 1)) {
- throw new RSInvalidStateException("Dimension must be >= 1.");
- }
-
- long id = rs.nTypeCreate(e.getID(rs), dimX, dimY, dimZ, false, false, 0);
- Type t = new Type(id, rs);
- t.mElement = e;
- t.mDimX = dimX;
- t.mDimY = dimY;
- t.mDimZ = dimZ;
- t.calcElementCount();
- return t;
- }
-
- /**
- * Builder class for Type.
- *
- */
- public static class Builder {
- RenderScript mRS;
- int mDimX = 1;
- int mDimY;
- int mDimZ;
- boolean mDimMipmaps;
- boolean mDimFaces;
- int mYuv;
-
- Element mElement;
-
- /**
- * Create a new builder object.
- *
- * @param rs
- * @param e The element for the type to be created.
- */
- public Builder(RenderScript rs, Element e) {
- e.checkValid();
- mRS = rs;
- mElement = e;
- }
-
- /**
- * Add a dimension to the Type.
- *
- *
- * @param value
- */
- public Builder setX(int value) {
- if(value < 1) {
- throw new RSIllegalArgumentException("Values of less than 1 for Dimension X are not valid.");
- }
- mDimX = value;
- return this;
- }
-
- public Builder setY(int value) {
- if(value < 1) {
- throw new RSIllegalArgumentException("Values of less than 1 for Dimension Y are not valid.");
- }
- mDimY = value;
- return this;
- }
-
- public Builder setZ(int value) {
- if(value < 1) {
- throw new RSIllegalArgumentException("Values of less than 1 for Dimension Z are not valid.");
- }
- mDimZ = value;
- return this;
- }
-
- public Builder setMipmaps(boolean value) {
- mDimMipmaps = value;
- return this;
- }
-
- public Builder setFaces(boolean value) {
- mDimFaces = value;
- return this;
- }
-
- /**
- * Set the YUV layout for a Type.
- *
- * @param yuvFormat {@link android.graphics.ImageFormat#YV12}, {@link android.graphics.ImageFormat#NV21}, or
- * {@link android.graphics.ImageFormat#YUV_420_888}.
- */
- public Builder setYuvFormat(int yuvFormat) {
- switch (yuvFormat) {
- case android.graphics.ImageFormat.NV21:
- case android.graphics.ImageFormat.YV12:
- case android.graphics.ImageFormat.YUV_420_888:
- break;
-
- default:
- throw new RSIllegalArgumentException(
- "Only ImageFormat.NV21, .YV12, and .YUV_420_888 are supported..");
- }
-
- mYuv = yuvFormat;
- return this;
- }
-
-
- /**
- * Validate structure and create a new Type.
- *
- * @return Type
- */
- public Type create() {
- if (mDimZ > 0) {
- if ((mDimX < 1) || (mDimY < 1)) {
- throw new RSInvalidStateException("Both X and Y dimension required when Z is present.");
- }
- if (mDimFaces) {
- throw new RSInvalidStateException("Cube maps not supported with 3D types.");
- }
- }
- if (mDimY > 0) {
- if (mDimX < 1) {
- throw new RSInvalidStateException("X dimension required when Y is present.");
- }
- }
- if (mDimFaces) {
- if (mDimY < 1) {
- throw new RSInvalidStateException("Cube maps require 2D Types.");
- }
- }
-
- if (mYuv != 0) {
- if ((mDimZ != 0) || mDimFaces || mDimMipmaps) {
- throw new RSInvalidStateException("YUV only supports basic 2D.");
- }
- }
-
- long id = mRS.nTypeCreate(mElement.getID(mRS),
- mDimX, mDimY, mDimZ, mDimMipmaps, mDimFaces, mYuv);
- Type t = new Type(id, mRS);
- t.mElement = mElement;
- t.mDimX = mDimX;
- t.mDimY = mDimY;
- t.mDimZ = mDimZ;
- t.mDimMipmaps = mDimMipmaps;
- t.mDimFaces = mDimFaces;
- t.mDimYuv = mYuv;
-
- t.calcElementCount();
- return t;
- }
- }
-
-}
diff --git a/graphics/java/android/renderscript/package.html b/graphics/java/android/renderscript/package.html
deleted file mode 100644
index eb178c1..0000000
--- a/graphics/java/android/renderscript/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<HTML>
-<BODY>
-<p>RenderScript provides support for high-performance computation across heterogeneous processors.</p>
-
-<p>For more information, see the
-<a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
-{@more}
-
-</BODY>
-</HTML>
diff --git a/graphics/jni/Android.mk b/graphics/jni/Android.mk
deleted file mode 100644
index cbb5b3b..0000000
--- a/graphics/jni/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
- android_renderscript_RenderScript.cpp
-
-LOCAL_SHARED_LIBRARIES := \
- libandroid_runtime \
- libandroidfw \
- libnativehelper \
- libRS \
- libcutils \
- liblog \
- libskia \
- libutils \
- libui \
- libgui
-
-LOCAL_STATIC_LIBRARIES :=
-
-rs_generated_include_dir := $(call intermediates-dir-for,SHARED_LIBRARIES,libRS,,)
-
-LOCAL_C_INCLUDES += \
- $(JNI_H_INCLUDE) \
- frameworks/rs \
- $(rs_generated_include_dir) \
- $(call include-path-for, corecg graphics)
-
-LOCAL_CFLAGS += -Wno-unused-parameter
-
-LOCAL_LDLIBS := -lpthread
-LOCAL_ADDITIONAL_DEPENDENCIES := $(addprefix $(rs_generated_include_dir)/,rsgApiFuncDecl.h)
-LOCAL_MODULE:= librs_jni
-LOCAL_ADDITIONAL_DEPENDENCIES += $(rs_generated_source)
-LOCAL_MODULE_TAGS := optional
-LOCAL_REQUIRED_MODULES := libRS libRSDriver
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
deleted file mode 100644
index 619e737..0000000
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ /dev/null
@@ -1,1660 +0,0 @@
-/*
- * Copyright (C) 2011-2012 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.
- */
-
-#define LOG_TAG "libRS_jni"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <math.h>
-#include <utils/misc.h>
-
-#include <core/SkBitmap.h>
-#include <core/SkPixelRef.h>
-#include <core/SkStream.h>
-#include <core/SkTemplates.h>
-
-#include <androidfw/Asset.h>
-#include <androidfw/AssetManager.h>
-#include <androidfw/ResourceTypes.h>
-
-#include "jni.h"
-#include "JNIHelp.h"
-#include "android_runtime/AndroidRuntime.h"
-#include "android_runtime/android_view_Surface.h"
-#include "android_runtime/android_util_AssetManager.h"
-
-#include <rs.h>
-#include <rsEnv.h>
-#include <gui/Surface.h>
-#include <gui/GLConsumer.h>
-#include <gui/Surface.h>
-#include <android_runtime/android_graphics_SurfaceTexture.h>
-
-//#define LOG_API ALOGE
-#define LOG_API(...)
-
-using namespace android;
-
-#define PER_ARRAY_TYPE(flag, fnc, ...) { \
- jint len = 0; \
- void *ptr = NULL; \
- size_t typeBytes = 0; \
- switch(dataType) { \
- case RS_TYPE_FLOAT_32: \
- len = _env->GetArrayLength((jfloatArray)data); \
- ptr = _env->GetFloatArrayElements((jfloatArray)data, flag); \
- typeBytes = 4; \
- fnc(__VA_ARGS__); \
- _env->ReleaseFloatArrayElements((jfloatArray)data, (jfloat *)ptr, JNI_ABORT); \
- return; \
- case RS_TYPE_FLOAT_64: \
- len = _env->GetArrayLength((jdoubleArray)data); \
- ptr = _env->GetDoubleArrayElements((jdoubleArray)data, flag); \
- typeBytes = 8; \
- fnc(__VA_ARGS__); \
- _env->ReleaseDoubleArrayElements((jdoubleArray)data, (jdouble *)ptr, JNI_ABORT);\
- return; \
- case RS_TYPE_SIGNED_8: \
- case RS_TYPE_UNSIGNED_8: \
- len = _env->GetArrayLength((jbyteArray)data); \
- ptr = _env->GetByteArrayElements((jbyteArray)data, flag); \
- typeBytes = 1; \
- fnc(__VA_ARGS__); \
- _env->ReleaseByteArrayElements((jbyteArray)data, (jbyte*)ptr, JNI_ABORT); \
- return; \
- case RS_TYPE_SIGNED_16: \
- case RS_TYPE_UNSIGNED_16: \
- len = _env->GetArrayLength((jshortArray)data); \
- ptr = _env->GetShortArrayElements((jshortArray)data, flag); \
- typeBytes = 2; \
- fnc(__VA_ARGS__); \
- _env->ReleaseShortArrayElements((jshortArray)data, (jshort *)ptr, JNI_ABORT); \
- return; \
- case RS_TYPE_SIGNED_32: \
- case RS_TYPE_UNSIGNED_32: \
- len = _env->GetArrayLength((jintArray)data); \
- ptr = _env->GetIntArrayElements((jintArray)data, flag); \
- typeBytes = 4; \
- fnc(__VA_ARGS__); \
- _env->ReleaseIntArrayElements((jintArray)data, (jint *)ptr, JNI_ABORT); \
- return; \
- case RS_TYPE_SIGNED_64: \
- case RS_TYPE_UNSIGNED_64: \
- len = _env->GetArrayLength((jlongArray)data); \
- ptr = _env->GetLongArrayElements((jlongArray)data, flag); \
- typeBytes = 8; \
- fnc(__VA_ARGS__); \
- _env->ReleaseLongArrayElements((jlongArray)data, (jlong *)ptr, JNI_ABORT); \
- return; \
- default: \
- break; \
- } \
-}
-
-
-class AutoJavaStringToUTF8 {
-public:
- AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) {
- fCStr = env->GetStringUTFChars(str, NULL);
- fLength = env->GetStringUTFLength(str);
- }
- ~AutoJavaStringToUTF8() {
- fEnv->ReleaseStringUTFChars(fJStr, fCStr);
- }
- const char* c_str() const { return fCStr; }
- jsize length() const { return fLength; }
-
-private:
- JNIEnv* fEnv;
- jstring fJStr;
- const char* fCStr;
- jsize fLength;
-};
-
-class AutoJavaStringArrayToUTF8 {
-public:
- AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength)
- : mEnv(env), mStrings(strings), mStringsLength(stringsLength) {
- mCStrings = NULL;
- mSizeArray = NULL;
- if (stringsLength > 0) {
- mCStrings = (const char **)calloc(stringsLength, sizeof(char *));
- mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t));
- for (jsize ct = 0; ct < stringsLength; ct ++) {
- jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct);
- mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL);
- mSizeArray[ct] = mEnv->GetStringUTFLength(s);
- }
- }
- }
- ~AutoJavaStringArrayToUTF8() {
- for (jsize ct=0; ct < mStringsLength; ct++) {
- jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct);
- mEnv->ReleaseStringUTFChars(s, mCStrings[ct]);
- }
- free(mCStrings);
- free(mSizeArray);
- }
- const char **c_str() const { return mCStrings; }
- size_t *c_str_len() const { return mSizeArray; }
- jsize length() const { return mStringsLength; }
-
-private:
- JNIEnv *mEnv;
- jobjectArray mStrings;
- const char **mCStrings;
- size_t *mSizeArray;
- jsize mStringsLength;
-};
-
-// ---------------------------------------------------------------------------
-
-static jfieldID gContextId = 0;
-static jfieldID gNativeBitmapID = 0;
-static jfieldID gTypeNativeCache = 0;
-
-static void _nInit(JNIEnv *_env, jclass _this)
-{
- gContextId = _env->GetFieldID(_this, "mContext", "J");
-
- jclass bitmapClass = _env->FindClass("android/graphics/Bitmap");
- gNativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "I");
-}
-
-// ---------------------------------------------------------------------------
-
-static void
-nContextFinish(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextFinish, con(%p)", con);
- rsContextFinish((RsContext)con);
-}
-
-static void
-nAssignName(JNIEnv *_env, jobject _this, jlong con, jlong obj, jbyteArray str)
-{
- LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj);
- jint len = _env->GetArrayLength(str);
- jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0);
- rsAssignName((RsContext)con, (void *)obj, (const char *)cptr, len);
- _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT);
-}
-
-static jstring
-nGetName(JNIEnv *_env, jobject _this, jlong con, jlong obj)
-{
- LOG_API("nGetName, con(%p), obj(%p)", con, (void *)obj);
- const char *name = NULL;
- rsaGetName((RsContext)con, (void *)obj, &name);
- if(name == NULL || strlen(name) == 0) {
- return NULL;
- }
- return _env->NewStringUTF(name);
-}
-
-static void
-nObjDestroy(JNIEnv *_env, jobject _this, jlong con, jlong obj)
-{
- LOG_API("nObjDestroy, con(%p) obj(%p)", con, (void *)obj);
- rsObjDestroy((RsContext)con, (void *)obj);
-}
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nDeviceCreate(JNIEnv *_env, jobject _this)
-{
- LOG_API("nDeviceCreate");
- return (jint)rsDeviceCreate();
-}
-
-static void
-nDeviceDestroy(JNIEnv *_env, jobject _this, jint dev)
-{
- LOG_API("nDeviceDestroy");
- return rsDeviceDestroy((RsDevice)dev);
-}
-
-static void
-nDeviceSetConfig(JNIEnv *_env, jobject _this, jint dev, jint p, jint value)
-{
- LOG_API("nDeviceSetConfig dev(%p), param(%i), value(%i)", (void *)dev, p, value);
- return rsDeviceSetConfig((RsDevice)dev, (RsDeviceParam)p, value);
-}
-
-static jlong
-nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer, jint ct)
-{
- LOG_API("nContextCreate");
- return (jint)rsContextCreate((RsDevice)dev, ver, sdkVer, (RsContextType)ct, 0);
-}
-
-static jlong
-nContextCreateGL(JNIEnv *_env, jobject _this, jint dev, jint ver, jint sdkVer,
- int colorMin, int colorPref,
- int alphaMin, int alphaPref,
- int depthMin, int depthPref,
- int stencilMin, int stencilPref,
- int samplesMin, int samplesPref, float samplesQ,
- int dpi)
-{
- RsSurfaceConfig sc;
- sc.alphaMin = alphaMin;
- sc.alphaPref = alphaPref;
- sc.colorMin = colorMin;
- sc.colorPref = colorPref;
- sc.depthMin = depthMin;
- sc.depthPref = depthPref;
- sc.samplesMin = samplesMin;
- sc.samplesPref = samplesPref;
- sc.samplesQ = samplesQ;
-
- LOG_API("nContextCreateGL");
- return (jint)rsContextCreateGL((RsDevice)dev, ver, sdkVer, sc, dpi);
-}
-
-static void
-nContextSetPriority(JNIEnv *_env, jobject _this, jlong con, jint p)
-{
- LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p);
- rsContextSetPriority((RsContext)con, p);
-}
-
-
-
-static void
-nContextSetSurface(JNIEnv *_env, jobject _this, jlong con, jint width, jint height, jobject wnd)
-{
- LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", con, width, height, (Surface *)wnd);
-
- ANativeWindow * window = NULL;
- if (wnd == NULL) {
-
- } else {
- window = android_view_Surface_getNativeWindow(_env, wnd).get();
- }
-
- rsContextSetSurface((RsContext)con, width, height, window);
-}
-
-static void
-nContextDestroy(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextDestroy, con(%p)", con);
- rsContextDestroy((RsContext)con);
-}
-
-static void
-nContextDump(JNIEnv *_env, jobject _this, jlong con, jint bits)
-{
- LOG_API("nContextDump, con(%p) bits(%i)", (RsContext)con, bits);
- rsContextDump((RsContext)con, bits);
-}
-
-static void
-nContextPause(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextPause, con(%p)", con);
- rsContextPause((RsContext)con);
-}
-
-static void
-nContextResume(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextResume, con(%p)", con);
- rsContextResume((RsContext)con);
-}
-
-
-static jstring
-nContextGetErrorMessage(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextGetErrorMessage, con(%p)", con);
- char buf[1024];
-
- size_t receiveLen;
- uint32_t subID;
- int id = rsContextGetMessage((RsContext)con,
- buf, sizeof(buf),
- &receiveLen, sizeof(receiveLen),
- &subID, sizeof(subID));
- if (!id && receiveLen) {
- ALOGV("message receive buffer too small. %i", receiveLen);
- }
- return _env->NewStringUTF(buf);
-}
-
-static jint
-nContextGetUserMessage(JNIEnv *_env, jobject _this, jlong con, jintArray data)
-{
- jint len = _env->GetArrayLength(data);
- LOG_API("nContextGetMessage, con(%p), len(%i)", con, len);
- jint *ptr = _env->GetIntArrayElements(data, NULL);
- size_t receiveLen;
- uint32_t subID;
- int id = rsContextGetMessage((RsContext)con,
- ptr, len * 4,
- &receiveLen, sizeof(receiveLen),
- &subID, sizeof(subID));
- if (!id && receiveLen) {
- ALOGV("message receive buffer too small. %i", receiveLen);
- }
- _env->ReleaseIntArrayElements(data, ptr, 0);
- return id;
-}
-
-static jint
-nContextPeekMessage(JNIEnv *_env, jobject _this, jlong con, jintArray auxData)
-{
- LOG_API("nContextPeekMessage, con(%p)", con);
- jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL);
- size_t receiveLen;
- uint32_t subID;
- int id = rsContextPeekMessage((RsContext)con, &receiveLen, sizeof(receiveLen),
- &subID, sizeof(subID));
- auxDataPtr[0] = (jint)subID;
- auxDataPtr[1] = (jint)receiveLen;
- _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0);
- return id;
-}
-
-static void nContextInitToClient(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextInitToClient, con(%p)", con);
- rsContextInitToClient((RsContext)con);
-}
-
-static void nContextDeinitToClient(JNIEnv *_env, jobject _this, jlong con)
-{
- LOG_API("nContextDeinitToClient, con(%p)", con);
- rsContextDeinitToClient((RsContext)con);
-}
-
-static void
-nContextSendMessage(JNIEnv *_env, jobject _this, jlong con, jint id, jintArray data)
-{
- jint *ptr = NULL;
- jint len = 0;
- if (data) {
- len = _env->GetArrayLength(data);
- jint *ptr = _env->GetIntArrayElements(data, NULL);
- }
- LOG_API("nContextSendMessage, con(%p), id(%i), len(%i)", con, id, len);
- rsContextSendMessage((RsContext)con, id, (const uint8_t *)ptr, len * sizeof(int));
- if (data) {
- _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
- }
-}
-
-
-
-static jlong
-nElementCreate(JNIEnv *_env, jobject _this, jlong con, jlong type, jint kind, jboolean norm, jint size)
-{
- LOG_API("nElementCreate, con(%p), type(%i), kind(%i), norm(%i), size(%i)", con, type, kind, norm, size);
- return (jlong)rsElementCreate((RsContext)con, (RsDataType)type, (RsDataKind)kind, norm, size);
-}
-
-static jlong
-nElementCreate2(JNIEnv *_env, jobject _this, jlong con,
- jintArray _ids, jobjectArray _names, jintArray _arraySizes)
-{
- int fieldCount = _env->GetArrayLength(_ids);
- LOG_API("nElementCreate2, con(%p)", con);
-
- jint *ids = _env->GetIntArrayElements(_ids, NULL);
- jint *arraySizes = _env->GetIntArrayElements(_arraySizes, NULL);
-
- AutoJavaStringArrayToUTF8 names(_env, _names, fieldCount);
-
- const char **nameArray = names.c_str();
- size_t *sizeArray = names.c_str_len();
-
- jlong id = (jlong)rsElementCreate2((RsContext)con,
- (RsElement *)ids, fieldCount,
- nameArray, fieldCount * sizeof(size_t), sizeArray,
- (const uint32_t *)arraySizes, fieldCount);
-
- _env->ReleaseIntArrayElements(_ids, ids, JNI_ABORT);
- _env->ReleaseIntArrayElements(_arraySizes, arraySizes, JNI_ABORT);
- return (jint)id;
-}
-
-static void
-nElementGetNativeData(JNIEnv *_env, jobject _this, jlong con, jlong id, jintArray _elementData)
-{
- int dataSize = _env->GetArrayLength(_elementData);
- LOG_API("nElementGetNativeData, con(%p)", con);
-
- // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements
- assert(dataSize == 5);
-
- uint32_t elementData[5];
- rsaElementGetNativeData((RsContext)con, (RsElement)id, elementData, dataSize);
-
- for(jint i = 0; i < dataSize; i ++) {
- _env->SetIntArrayRegion(_elementData, i, 1, (const jint*)&elementData[i]);
- }
-}
-
-
-static void
-nElementGetSubElements(JNIEnv *_env, jobject _this, jlong con, jlong id,
- jintArray _IDs,
- jobjectArray _names,
- jintArray _arraySizes)
-{
- int dataSize = _env->GetArrayLength(_IDs);
- LOG_API("nElementGetSubElements, con(%p)", con);
-
- uint32_t *ids = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t));
- const char **names = (const char **)malloc((uint32_t)dataSize * sizeof(const char *));
- uint32_t *arraySizes = (uint32_t *)malloc((uint32_t)dataSize * sizeof(uint32_t));
-
- rsaElementGetSubElements((RsContext)con, (RsElement)id, ids, names, arraySizes, (uint32_t)dataSize);
-
- for(jint i = 0; i < dataSize; i++) {
- _env->SetObjectArrayElement(_names, i, _env->NewStringUTF(names[i]));
- _env->SetIntArrayRegion(_IDs, i, 1, (const jint*)&ids[i]);
- _env->SetIntArrayRegion(_arraySizes, i, 1, (const jint*)&arraySizes[i]);
- }
-
- free(ids);
- free(names);
- free(arraySizes);
-}
-
-// -----------------------------------
-
-static jlong
-nTypeCreate(JNIEnv *_env, jobject _this, jlong con, jlong eid,
- jint dimx, jint dimy, jint dimz, jboolean mips, jboolean faces, jint yuv)
-{
- LOG_API("nTypeCreate, con(%p) eid(%p), x(%i), y(%i), z(%i), mips(%i), faces(%i), yuv(%i)",
- con, eid, dimx, dimy, dimz, mips, faces, yuv);
-
- return (jlong)rsTypeCreate((RsContext)con, (RsElement)eid, dimx, dimy, dimz, mips, faces, yuv);
-}
-
-static void
-nTypeGetNativeData(JNIEnv *_env, jobject _this, jlong con, jlong id, jintArray _typeData)
-{
- // We are packing 6 items: mDimX; mDimY; mDimZ;
- // mDimLOD; mDimFaces; mElement; into typeData
- int elementCount = _env->GetArrayLength(_typeData);
-
- assert(elementCount == 6);
- LOG_API("nTypeCreate, con(%p)", con);
-
- uint32_t typeData[6];
- rsaTypeGetNativeData((RsContext)con, (RsType)id, typeData, 6);
-
- for(jint i = 0; i < elementCount; i ++) {
- _env->SetIntArrayRegion(_typeData, i, 1, (const jint*)&typeData[i]);
- }
-}
-
-// -----------------------------------
-
-static jlong
-nAllocationCreateTyped(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mips, jint usage, jint pointer)
-{
- LOG_API("nAllocationCreateTyped, con(%p), type(%p), mip(%i), usage(%i), ptr(%p)", con, (RsElement)type, mips, usage, (void *)pointer);
- return (jint) rsAllocationCreateTyped((RsContext)con, (RsType)type, (RsAllocationMipmapControl)mips, (uint32_t)usage, (uint32_t)pointer);
-}
-
-static void
-nAllocationSyncAll(JNIEnv *_env, jobject _this, jlong con, jlong a, jint bits)
-{
- LOG_API("nAllocationSyncAll, con(%p), a(%p), bits(0x%08x)", con, (RsAllocation)a, bits);
- rsAllocationSyncAll((RsContext)con, (RsAllocation)a, (RsAllocationUsageType)bits);
-}
-
-static jobject
-nAllocationGetSurface(JNIEnv *_env, jobject _this, jlong con, jlong a)
-{
- LOG_API("nAllocationGetSurface, con(%p), a(%p)", con, (RsAllocation)a);
-
- IGraphicBufferProducer *v = (IGraphicBufferProducer *)rsAllocationGetSurface((RsContext)con, (RsAllocation)a);
- sp<IGraphicBufferProducer> bp = v;
- v->decStrong(NULL);
-
- jobject o = android_view_Surface_createFromIGraphicBufferProducer(_env, bp);
- return o;
-}
-
-static void
-nAllocationSetSurface(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject sur)
-{
- LOG_API("nAllocationSetSurface, con(%p), alloc(%p), surface(%p)",
- con, alloc, (Surface *)sur);
-
- sp<Surface> s;
- if (sur != 0) {
- s = android_view_Surface_getSurface(_env, sur);
- }
-
- rsAllocationSetSurface((RsContext)con, (RsAllocation)alloc, static_cast<ANativeWindow *>(s.get()));
-}
-
-static void
-nAllocationIoSend(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
- LOG_API("nAllocationIoSend, con(%p), alloc(%p)", con, alloc);
- rsAllocationIoSend((RsContext)con, (RsAllocation)alloc);
-}
-
-static void
-nAllocationIoReceive(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
- LOG_API("nAllocationIoReceive, con(%p), alloc(%p)", con, alloc);
- rsAllocationIoReceive((RsContext)con, (RsAllocation)alloc);
-}
-
-
-static void
-nAllocationGenerateMipmaps(JNIEnv *_env, jobject _this, jlong con, jlong alloc)
-{
- LOG_API("nAllocationGenerateMipmaps, con(%p), a(%p)", con, (RsAllocation)alloc);
- rsAllocationGenerateMipmaps((RsContext)con, (RsAllocation)alloc);
-}
-
-static jlong
-nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage)
-{
- SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
- const SkBitmap& bitmap(*nativeBitmap);
-
- bitmap.lockPixels();
- const void* ptr = bitmap.getPixels();
- jlong id = (jlong)rsAllocationCreateFromBitmap((RsContext)con,
- (RsType)type, (RsAllocationMipmapControl)mip,
- ptr, bitmap.getSize(), usage);
- bitmap.unlockPixels();
- return id;
-}
-
-static jlong
-nAllocationCreateBitmapBackedAllocation(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage)
-{
- SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
- const SkBitmap& bitmap(*nativeBitmap);
-
- bitmap.lockPixels();
- const void* ptr = bitmap.getPixels();
- jlong id = (jlong)rsAllocationCreateTyped((RsContext)con,
- (RsType)type, (RsAllocationMipmapControl)mip,
- (uint32_t)usage, (size_t)ptr);
- bitmap.unlockPixels();
- return id;
-}
-
-static jlong
-nAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type, jint mip, jobject jbitmap, jint usage)
-{
- SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
- const SkBitmap& bitmap(*nativeBitmap);
-
- bitmap.lockPixels();
- const void* ptr = bitmap.getPixels();
- jlong id = (jlong)rsAllocationCubeCreateFromBitmap((RsContext)con,
- (RsType)type, (RsAllocationMipmapControl)mip,
- ptr, bitmap.getSize(), usage);
- bitmap.unlockPixels();
- return id;
-}
-
-static void
-nAllocationCopyFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap)
-{
- SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
- const SkBitmap& bitmap(*nativeBitmap);
- int w = bitmap.width();
- int h = bitmap.height();
-
- bitmap.lockPixels();
- const void* ptr = bitmap.getPixels();
- rsAllocation2DData((RsContext)con, (RsAllocation)alloc, 0, 0,
- 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X,
- w, h, ptr, bitmap.getSize(), 0);
- bitmap.unlockPixels();
-}
-
-static void
-nAllocationCopyToBitmap(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jobject jbitmap)
-{
- SkBitmap const * nativeBitmap =
- (SkBitmap const *)_env->GetIntField(jbitmap, gNativeBitmapID);
- const SkBitmap& bitmap(*nativeBitmap);
-
- bitmap.lockPixels();
- void* ptr = bitmap.getPixels();
- rsAllocationCopyToBitmap((RsContext)con, (RsAllocation)alloc, ptr, bitmap.getSize());
- bitmap.unlockPixels();
- bitmap.notifyPixelsChanged();
-}
-
-static void ReleaseBitmapCallback(void *bmp)
-{
- SkBitmap const * nativeBitmap = (SkBitmap const *)bmp;
- nativeBitmap->unlockPixels();
-}
-
-
-static void
-nAllocationData1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod,
- jint count, jobject data, int sizeBytes, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- LOG_API("nAllocation1DData, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i), dataType(%i)",
- con, alloc, offset, count, len, sizeBytes, dataType);
- PER_ARRAY_TYPE(NULL, rsAllocation1DData, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes);
-}
-
-static void
-// native void rsnAllocationElementData1D(int con, int id, int xoff, int compIdx, byte[] d, int sizeBytes);
-nAllocationElementData1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint offset, jint lod, jint compIdx, jbyteArray data, int sizeBytes)
-{
- jint len = _env->GetArrayLength(data);
- LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes);
- jbyte *ptr = _env->GetByteArrayElements(data, NULL);
- rsAllocation1DElementData((RsContext)con, (RsAllocation)alloc, offset, lod, ptr, sizeBytes, compIdx);
- _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nAllocationData2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face,
- jint w, jint h, jobject data, int sizeBytes, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face;
- LOG_API("nAllocation2DData, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) type(%i)",
- con, alloc, xoff, yoff, w, h, sizeBytes, dataType);
- PER_ARRAY_TYPE(NULL, rsAllocation2DData, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0);
-}
-
-static void
-nAllocationData2D_alloc(JNIEnv *_env, jobject _this, jlong con,
- jlong dstAlloc, jint dstXoff, jint dstYoff,
- jint dstMip, jint dstFace,
- jint width, jint height,
- jlong srcAlloc, jint srcXoff, jint srcYoff,
- jint srcMip, jint srcFace)
-{
- LOG_API("nAllocation2DData_s, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i),"
- " dstMip(%i), dstFace(%i), width(%i), height(%i),"
- " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i), srcFace(%i)",
- con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace,
- width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace);
-
- rsAllocationCopy2DRange((RsContext)con,
- (RsAllocation)dstAlloc,
- dstXoff, dstYoff,
- dstMip, dstFace,
- width, height,
- (RsAllocation)srcAlloc,
- srcXoff, srcYoff,
- srcMip, srcFace);
-}
-
-static void
-nAllocationData3D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint zoff, jint lod,
- jint w, jint h, jint d, jobject data, int sizeBytes, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- LOG_API("nAllocation3DData, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), lod(%i), w(%i), h(%i), d(%i), sizeBytes(%i)",
- con, (RsAllocation)alloc, xoff, yoff, zoff, lod, w, h, d, sizeBytes);
- PER_ARRAY_TYPE(NULL, rsAllocation3DData, (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0);
-}
-
-static void
-nAllocationData3D_alloc(JNIEnv *_env, jobject _this, jlong con,
- jlong dstAlloc, jint dstXoff, jint dstYoff, jint dstZoff,
- jint dstMip,
- jint width, jint height, jint depth,
- jlong srcAlloc, jint srcXoff, jint srcYoff, jint srcZoff,
- jint srcMip)
-{
- LOG_API("nAllocationData3D_alloc, con(%p), dstAlloc(%p), dstXoff(%i), dstYoff(%i),"
- " dstMip(%i), width(%i), height(%i),"
- " srcAlloc(%p), srcXoff(%i), srcYoff(%i), srcMip(%i)",
- con, (RsAllocation)dstAlloc, dstXoff, dstYoff, dstMip, dstFace,
- width, height, (RsAllocation)srcAlloc, srcXoff, srcYoff, srcMip, srcFace);
-
- rsAllocationCopy3DRange((RsContext)con,
- (RsAllocation)dstAlloc,
- dstXoff, dstYoff, dstZoff, dstMip,
- width, height, depth,
- (RsAllocation)srcAlloc,
- srcXoff, srcYoff, srcZoff, srcMip);
-}
-
-
-static void
-nAllocationRead(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jobject data, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- LOG_API("nAllocationRead, con(%p), alloc(%p)", con, (RsAllocation)alloc);
- PER_ARRAY_TYPE(0, rsAllocationRead, (RsContext)con, alloc, ptr, len * typeBytes);
-}
-
-static void
-nAllocationRead1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint offset, jint lod,
- jint count, jobject data, int sizeBytes, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- LOG_API("nAllocation1DRead, con(%p), adapter(%p), offset(%i), count(%i), len(%i), sizeBytes(%i), dataType(%i)",
- con, alloc, offset, count, len, sizeBytes, dataType);
- PER_ARRAY_TYPE(0, rsAllocation1DRead, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes);
-}
-
-static void
-nAllocationRead2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xoff, jint yoff, jint lod, jint _face,
- jint w, jint h, jobject data, int sizeBytes, int dataType)
-{
- RsAllocation *alloc = (RsAllocation *)_alloc;
- RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face;
- LOG_API("nAllocation2DRead, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) type(%i)",
- con, alloc, xoff, yoff, w, h, sizeBytes, dataType);
- PER_ARRAY_TYPE(0, rsAllocation2DRead, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0);
-}
-
-static jlong
-nAllocationGetType(JNIEnv *_env, jobject _this, jlong con, jlong a)
-{
- LOG_API("nAllocationGetType, con(%p), a(%p)", con, (RsAllocation)a);
- return (jlong) rsaAllocationGetType((RsContext)con, (RsAllocation)a);
-}
-
-static void
-nAllocationResize1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, jint dimX)
-{
- LOG_API("nAllocationResize1D, con(%p), alloc(%p), sizeX(%i)", con, (RsAllocation)alloc, dimX);
- rsAllocationResize1D((RsContext)con, (RsAllocation)alloc, dimX);
-}
-
-// -----------------------------------
-
-static jlong
-nFileA3DCreateFromAssetStream(JNIEnv *_env, jobject _this, jlong con, jlong native_asset)
-{
- ALOGV("______nFileA3D %u", (uint32_t) native_asset);
-
- Asset* asset = reinterpret_cast<Asset*>(native_asset);
-
- jlong id = (jlong)rsaFileA3DCreateFromMemory((RsContext)con, asset->getBuffer(false), asset->getLength());
- return id;
-}
-
-static jlong
-nFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jstring _path)
-{
- AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr);
- if (mgr == NULL) {
- return 0;
- }
-
- AutoJavaStringToUTF8 str(_env, _path);
- Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER);
- if (asset == NULL) {
- return 0;
- }
-
- jlong id = (jlong)rsaFileA3DCreateFromAsset((RsContext)con, asset);
- return id;
-}
-
-static jlong
-nFileA3DCreateFromFile(JNIEnv *_env, jobject _this, jlong con, jstring fileName)
-{
- AutoJavaStringToUTF8 fileNameUTF(_env, fileName);
- jlong id = (jlong)rsaFileA3DCreateFromFile((RsContext)con, fileNameUTF.c_str());
-
- return id;
-}
-
-static jint
-nFileA3DGetNumIndexEntries(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D)
-{
- int32_t numEntries = 0;
- rsaFileA3DGetNumIndexEntries((RsContext)con, &numEntries, (RsFile)fileA3D);
- return numEntries;
-}
-
-static void
-nFileA3DGetIndexEntries(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D, jint numEntries, jintArray _ids, jobjectArray _entries)
-{
- ALOGV("______nFileA3D %u", (uint32_t) fileA3D);
- RsFileIndexEntry *fileEntries = (RsFileIndexEntry*)malloc((uint32_t)numEntries * sizeof(RsFileIndexEntry));
-
- rsaFileA3DGetIndexEntries((RsContext)con, fileEntries, (uint32_t)numEntries, (RsFile)fileA3D);
-
- for(jint i = 0; i < numEntries; i ++) {
- _env->SetObjectArrayElement(_entries, i, _env->NewStringUTF(fileEntries[i].objectName));
- _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&fileEntries[i].classID);
- }
-
- free(fileEntries);
-}
-
-static int
-nFileA3DGetEntryByIndex(JNIEnv *_env, jobject _this, jlong con, jlong fileA3D, jint index)
-{
- ALOGV("______nFileA3D %u", (uint32_t) fileA3D);
- jint id = (jint)rsaFileA3DGetEntryByIndex((RsContext)con, (uint32_t)index, (RsFile)fileA3D);
- return id;
-}
-
-// -----------------------------------
-
-static int
-nFontCreateFromFile(JNIEnv *_env, jobject _this, jlong con,
- jstring fileName, jfloat fontSize, jint dpi)
-{
- AutoJavaStringToUTF8 fileNameUTF(_env, fileName);
- jint id = (jint)rsFontCreateFromFile((RsContext)con,
- fileNameUTF.c_str(), fileNameUTF.length(),
- fontSize, dpi);
-
- return id;
-}
-
-static int
-nFontCreateFromAssetStream(JNIEnv *_env, jobject _this, jlong con,
- jstring name, jfloat fontSize, jint dpi, jint native_asset)
-{
- Asset* asset = reinterpret_cast<Asset*>(native_asset);
- AutoJavaStringToUTF8 nameUTF(_env, name);
-
- jint id = (jint)rsFontCreateFromMemory((RsContext)con,
- nameUTF.c_str(), nameUTF.length(),
- fontSize, dpi,
- asset->getBuffer(false), asset->getLength());
- return id;
-}
-
-static int
-nFontCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jstring _path,
- jfloat fontSize, jint dpi)
-{
- AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr);
- if (mgr == NULL) {
- return 0;
- }
-
- AutoJavaStringToUTF8 str(_env, _path);
- Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER);
- if (asset == NULL) {
- return 0;
- }
-
- jint id = (jint)rsFontCreateFromMemory((RsContext)con,
- str.c_str(), str.length(),
- fontSize, dpi,
- asset->getBuffer(false), asset->getLength());
- delete asset;
- return id;
-}
-
-// -----------------------------------
-
-static void
-nScriptBindAllocation(JNIEnv *_env, jobject _this, jlong con, jlong script, jlong alloc, jint slot)
-{
- LOG_API("nScriptBindAllocation, con(%p), script(%p), alloc(%p), slot(%i)", con, (RsScript)script, (RsAllocation)alloc, slot);
- rsScriptBindAllocation((RsContext)con, (RsScript)script, (RsAllocation)alloc, slot);
-}
-
-static void
-nScriptSetVarI(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jint val)
-{
- LOG_API("nScriptSetVarI, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val);
- rsScriptSetVarI((RsContext)con, (RsScript)script, slot, val);
-}
-
-static jint
-nScriptGetVarI(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot)
-{
- LOG_API("nScriptGetVarI, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- int value = 0;
- rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value));
- return value;
-}
-
-static void
-nScriptSetVarObj(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val)
-{
- LOG_API("nScriptSetVarObj, con(%p), s(%p), slot(%i), val(%i)", con, (void *)script, slot, val);
- rsScriptSetVarObj((RsContext)con, (RsScript)script, slot, (RsObjectBase)val);
-}
-
-static void
-nScriptSetVarJ(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jlong val)
-{
- LOG_API("nScriptSetVarJ, con(%p), s(%p), slot(%i), val(%lli)", con, (void *)script, slot, val);
- rsScriptSetVarJ((RsContext)con, (RsScript)script, slot, val);
-}
-
-static jlong
-nScriptGetVarJ(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot)
-{
- LOG_API("nScriptGetVarJ, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jlong value = 0;
- rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value));
- return value;
-}
-
-static void
-nScriptSetVarF(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, float val)
-{
- LOG_API("nScriptSetVarF, con(%p), s(%p), slot(%i), val(%f)", con, (void *)script, slot, val);
- rsScriptSetVarF((RsContext)con, (RsScript)script, slot, val);
-}
-
-static jfloat
-nScriptGetVarF(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot)
-{
- LOG_API("nScriptGetVarF, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jfloat value = 0;
- rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value));
- return value;
-}
-
-static void
-nScriptSetVarD(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, double val)
-{
- LOG_API("nScriptSetVarD, con(%p), s(%p), slot(%i), val(%lf)", con, (void *)script, slot, val);
- rsScriptSetVarD((RsContext)con, (RsScript)script, slot, val);
-}
-
-static jdouble
-nScriptGetVarD(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot)
-{
- LOG_API("nScriptGetVarD, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jdouble value = 0;
- rsScriptGetVarV((RsContext)con, (RsScript)script, slot, &value, sizeof(value));
- return value;
-}
-
-static void
-nScriptSetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data)
-{
- LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(data);
- jbyte *ptr = _env->GetByteArrayElements(data, NULL);
- rsScriptSetVarV((RsContext)con, (RsScript)script, slot, ptr, len);
- _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nScriptGetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data)
-{
- LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(data);
- jbyte *ptr = _env->GetByteArrayElements(data, NULL);
- rsScriptGetVarV((RsContext)con, (RsScript)script, slot, ptr, len);
- _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nScriptSetVarVE(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data, jlong elem, jintArray dims)
-{
- LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(data);
- jbyte *ptr = _env->GetByteArrayElements(data, NULL);
- jint dimsLen = _env->GetArrayLength(dims) * sizeof(int);
- jint *dimsPtr = _env->GetIntArrayElements(dims, NULL);
- rsScriptSetVarVE((RsContext)con, (RsScript)script, slot, ptr, len, (RsElement)elem,
- (const size_t*) dimsPtr, dimsLen);
- _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
- _env->ReleaseIntArrayElements(dims, dimsPtr, JNI_ABORT);
-}
-
-
-static void
-nScriptSetTimeZone(JNIEnv *_env, jobject _this, jlong con, jlong script, jbyteArray timeZone)
-{
- LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone);
-
- jint length = _env->GetArrayLength(timeZone);
- jbyte* timeZone_ptr;
- timeZone_ptr = (jbyte *) _env->GetPrimitiveArrayCritical(timeZone, (jboolean *)0);
-
- rsScriptSetTimeZone((RsContext)con, (RsScript)script, (const char *)timeZone_ptr, length);
-
- if (timeZone_ptr) {
- _env->ReleasePrimitiveArrayCritical(timeZone, timeZone_ptr, 0);
- }
-}
-
-static void
-nScriptInvoke(JNIEnv *_env, jobject _this, jlong con, jlong obj, jint slot)
-{
- LOG_API("nScriptInvoke, con(%p), script(%p)", con, (void *)obj);
- rsScriptInvoke((RsContext)con, (RsScript)obj, slot);
-}
-
-static void
-nScriptInvokeV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, jbyteArray data)
-{
- LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(data);
- jbyte *ptr = _env->GetByteArrayElements(data, NULL);
- rsScriptInvokeV((RsContext)con, (RsScript)script, slot, ptr, len);
- _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
-}
-
-static void
-nScriptForEach(JNIEnv *_env, jobject _this, jlong con,
- jlong script, jint slot, jlong ain, jlong aout)
-{
- LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, NULL, 0);
-}
-static void
-nScriptForEachV(JNIEnv *_env, jobject _this, jlong con,
- jlong script, jint slot, jlong ain, jlong aout, jbyteArray params)
-{
- LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(params);
- jbyte *ptr = _env->GetByteArrayElements(params, NULL);
- rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, NULL, 0);
- _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
-}
-
-static void
-nScriptForEachClipped(JNIEnv *_env, jobject _this, jlong con,
- jlong script, jint slot, jlong ain, jlong aout,
- jint xstart, jint xend,
- jint ystart, jint yend, jint zstart, jint zend)
-{
- LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- RsScriptCall sc;
- sc.xStart = xstart;
- sc.xEnd = xend;
- sc.yStart = ystart;
- sc.yEnd = yend;
- sc.zStart = zstart;
- sc.zEnd = zend;
- sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
- sc.arrayStart = 0;
- sc.arrayEnd = 0;
- rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc));
-}
-
-static void
-nScriptForEachClippedV(JNIEnv *_env, jobject _this, jlong con,
- jlong script, jint slot, jlong ain, jlong aout,
- jbyteArray params, jint xstart, jint xend,
- jint ystart, jint yend, jint zstart, jint zend)
-{
- LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
- jint len = _env->GetArrayLength(params);
- jbyte *ptr = _env->GetByteArrayElements(params, NULL);
- RsScriptCall sc;
- sc.xStart = xstart;
- sc.xEnd = xend;
- sc.yStart = ystart;
- sc.yEnd = yend;
- sc.zStart = zstart;
- sc.zEnd = zend;
- sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE;
- sc.arrayStart = 0;
- sc.arrayEnd = 0;
- rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, &sc, sizeof(sc));
- _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
-}
-
-// -----------------------------------
-
-static jint
-nScriptCCreate(JNIEnv *_env, jobject _this, jlong con,
- jstring resName, jstring cacheDir,
- jbyteArray scriptRef, jint length)
-{
- LOG_API("nScriptCCreate, con(%p)", con);
-
- AutoJavaStringToUTF8 resNameUTF(_env, resName);
- AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir);
- jint ret = 0;
- jbyte* script_ptr = NULL;
- jint _exception = 0;
- jint remaining;
- if (!scriptRef) {
- _exception = 1;
- //jniThrowException(_env, "java/lang/IllegalArgumentException", "script == null");
- goto exit;
- }
- if (length < 0) {
- _exception = 1;
- //jniThrowException(_env, "java/lang/IllegalArgumentException", "length < 0");
- goto exit;
- }
- remaining = _env->GetArrayLength(scriptRef);
- if (remaining < length) {
- _exception = 1;
- //jniThrowException(_env, "java/lang/IllegalArgumentException",
- // "length > script.length - offset");
- goto exit;
- }
- script_ptr = (jbyte *)
- _env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0);
-
- //rsScriptCSetText((RsContext)con, (const char *)script_ptr, length);
-
- ret = (jint)rsScriptCCreate((RsContext)con,
- resNameUTF.c_str(), resNameUTF.length(),
- cacheDirUTF.c_str(), cacheDirUTF.length(),
- (const char *)script_ptr, length);
-
-exit:
- if (script_ptr) {
- _env->ReleasePrimitiveArrayCritical(scriptRef, script_ptr,
- _exception ? JNI_ABORT: 0);
- }
-
- return ret;
-}
-
-static jlong
-nScriptIntrinsicCreate(JNIEnv *_env, jobject _this, jlong con, jint id, jlong eid)
-{
- LOG_API("nScriptIntrinsicCreate, con(%p) id(%i) element(%p)", con, id, (void *)eid);
- return (jlong)rsScriptIntrinsicCreate((RsContext)con, id, (RsElement)eid);
-}
-
-static jlong
-nScriptKernelIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot, jint sig)
-{
- LOG_API("nScriptKernelIDCreate, con(%p) script(%p), slot(%i), sig(%i)", con, (void *)sid, slot, sig);
- return (jint)rsScriptKernelIDCreate((RsContext)con, (RsScript)sid, slot, sig);
-}
-
-static jlong
-nScriptFieldIDCreate(JNIEnv *_env, jobject _this, jlong con, jlong sid, jint slot)
-{
- LOG_API("nScriptFieldIDCreate, con(%p) script(%p), slot(%i)", con, (void *)sid, slot);
- return (jint)rsScriptFieldIDCreate((RsContext)con, (RsScript)sid, slot);
-}
-
-static jlong
-nScriptGroupCreate(JNIEnv *_env, jobject _this, jlong con, jintArray _kernels, jintArray _src,
- jintArray _dstk, jintArray _dstf, jintArray _types)
-{
- LOG_API("nScriptGroupCreate, con(%p)", con);
-
- jint kernelsLen = _env->GetArrayLength(_kernels) * sizeof(int);
- jint *kernelsPtr = _env->GetIntArrayElements(_kernels, NULL);
- jint srcLen = _env->GetArrayLength(_src) * sizeof(int);
- jint *srcPtr = _env->GetIntArrayElements(_src, NULL);
- jint dstkLen = _env->GetArrayLength(_dstk) * sizeof(int);
- jint *dstkPtr = _env->GetIntArrayElements(_dstk, NULL);
- jint dstfLen = _env->GetArrayLength(_dstf) * sizeof(int);
- jint *dstfPtr = _env->GetIntArrayElements(_dstf, NULL);
- jint typesLen = _env->GetArrayLength(_types) * sizeof(int);
- jint *typesPtr = _env->GetIntArrayElements(_types, NULL);
-
- int id = (int)rsScriptGroupCreate((RsContext)con,
- (RsScriptKernelID *)kernelsPtr, kernelsLen,
- (RsScriptKernelID *)srcPtr, srcLen,
- (RsScriptKernelID *)dstkPtr, dstkLen,
- (RsScriptFieldID *)dstfPtr, dstfLen,
- (RsType *)typesPtr, typesLen);
-
- _env->ReleaseIntArrayElements(_kernels, kernelsPtr, 0);
- _env->ReleaseIntArrayElements(_src, srcPtr, 0);
- _env->ReleaseIntArrayElements(_dstk, dstkPtr, 0);
- _env->ReleaseIntArrayElements(_dstf, dstfPtr, 0);
- _env->ReleaseIntArrayElements(_types, typesPtr, 0);
- return id;
-}
-
-static void
-nScriptGroupSetInput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc)
-{
- LOG_API("nScriptGroupSetInput, con(%p) group(%p), kernelId(%p), alloc(%p)", con,
- (void *)gid, (void *)kid, (void *)alloc);
- rsScriptGroupSetInput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid, (RsAllocation)alloc);
-}
-
-static void
-nScriptGroupSetOutput(JNIEnv *_env, jobject _this, jlong con, jlong gid, jlong kid, jlong alloc)
-{
- LOG_API("nScriptGroupSetOutput, con(%p) group(%p), kernelId(%p), alloc(%p)", con,
- (void *)gid, (void *)kid, (void *)alloc);
- rsScriptGroupSetOutput((RsContext)con, (RsScriptGroup)gid, (RsScriptKernelID)kid, (RsAllocation)alloc);
-}
-
-static void
-nScriptGroupExecute(JNIEnv *_env, jobject _this, jlong con, jlong gid)
-{
- LOG_API("nScriptGroupSetOutput, con(%p) group(%p)", con, (void *)gid);
- rsScriptGroupExecute((RsContext)con, (RsScriptGroup)gid);
-}
-
-// ---------------------------------------------------------------------------
-
-static jint
-nProgramStoreCreate(JNIEnv *_env, jobject _this, jlong con,
- jboolean colorMaskR, jboolean colorMaskG, jboolean colorMaskB, jboolean colorMaskA,
- jboolean depthMask, jboolean ditherEnable,
- jint srcFunc, jint destFunc,
- jint depthFunc)
-{
- LOG_API("nProgramStoreCreate, con(%p)", con);
- return (jint)rsProgramStoreCreate((RsContext)con, colorMaskR, colorMaskG, colorMaskB, colorMaskA,
- depthMask, ditherEnable, (RsBlendSrcFunc)srcFunc,
- (RsBlendDstFunc)destFunc, (RsDepthFunc)depthFunc);
-}
-
-// ---------------------------------------------------------------------------
-
-static void
-nProgramBindConstants(JNIEnv *_env, jobject _this, jlong con, jlong vpv, jint slot, jlong a)
-{
- LOG_API("nProgramBindConstants, con(%p), vpf(%p), sloat(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a);
- rsProgramBindConstants((RsContext)con, (RsProgram)vpv, slot, (RsAllocation)a);
-}
-
-static void
-nProgramBindTexture(JNIEnv *_env, jobject _this, jlong con, jlong vpf, jint slot, jlong a)
-{
- LOG_API("nProgramBindTexture, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
- rsProgramBindTexture((RsContext)con, (RsProgramFragment)vpf, slot, (RsAllocation)a);
-}
-
-static void
-nProgramBindSampler(JNIEnv *_env, jobject _this, jlong con, jlong vpf, jint slot, jlong a)
-{
- LOG_API("nProgramBindSampler, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramFragment)vpf, slot, (RsSampler)a);
- rsProgramBindSampler((RsContext)con, (RsProgramFragment)vpf, slot, (RsSampler)a);
-}
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nProgramFragmentCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader,
- jobjectArray texNames, jintArray params)
-{
- AutoJavaStringToUTF8 shaderUTF(_env, shader);
- jint *paramPtr = _env->GetIntArrayElements(params, NULL);
- jint paramLen = _env->GetArrayLength(params);
-
- int texCount = _env->GetArrayLength(texNames);
- AutoJavaStringArrayToUTF8 names(_env, texNames, texCount);
- const char ** nameArray = names.c_str();
- size_t* sizeArray = names.c_str_len();
-
- LOG_API("nProgramFragmentCreate, con(%p), paramLen(%i)", con, paramLen);
-
- jlong ret = (jlong)rsProgramFragmentCreate((RsContext)con, shaderUTF.c_str(), shaderUTF.length(),
- nameArray, texCount, sizeArray,
- (uint32_t *)paramPtr, paramLen);
-
- _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT);
- return ret;
-}
-
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nProgramVertexCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader,
- jobjectArray texNames, jintArray params)
-{
- AutoJavaStringToUTF8 shaderUTF(_env, shader);
- jint *paramPtr = _env->GetIntArrayElements(params, NULL);
- jint paramLen = _env->GetArrayLength(params);
-
- LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", con, paramLen);
-
- int texCount = _env->GetArrayLength(texNames);
- AutoJavaStringArrayToUTF8 names(_env, texNames, texCount);
- const char ** nameArray = names.c_str();
- size_t* sizeArray = names.c_str_len();
-
- jlong ret = (jlong)rsProgramVertexCreate((RsContext)con, shaderUTF.c_str(), shaderUTF.length(),
- nameArray, texCount, sizeArray,
- (uint32_t *)paramPtr, paramLen);
-
- _env->ReleaseIntArrayElements(params, paramPtr, JNI_ABORT);
- return ret;
-}
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nProgramRasterCreate(JNIEnv *_env, jobject _this, jlong con, jboolean pointSprite, jint cull)
-{
- LOG_API("nProgramRasterCreate, con(%p), pointSprite(%i), cull(%i)", con, pointSprite, cull);
- return (jint)rsProgramRasterCreate((RsContext)con, pointSprite, (RsCullMode)cull);
-}
-
-
-// ---------------------------------------------------------------------------
-
-static void
-nContextBindRootScript(JNIEnv *_env, jobject _this, jlong con, jint script)
-{
- LOG_API("nContextBindRootScript, con(%p), script(%p)", con, (RsScript)script);
- rsContextBindRootScript((RsContext)con, (RsScript)script);
-}
-
-static void
-nContextBindProgramStore(JNIEnv *_env, jobject _this, jlong con, jint pfs)
-{
- LOG_API("nContextBindProgramStore, con(%p), pfs(%p)", con, (RsProgramStore)pfs);
- rsContextBindProgramStore((RsContext)con, (RsProgramStore)pfs);
-}
-
-static void
-nContextBindProgramFragment(JNIEnv *_env, jobject _this, jlong con, jint pf)
-{
- LOG_API("nContextBindProgramFragment, con(%p), pf(%p)", con, (RsProgramFragment)pf);
- rsContextBindProgramFragment((RsContext)con, (RsProgramFragment)pf);
-}
-
-static void
-nContextBindProgramVertex(JNIEnv *_env, jobject _this, jlong con, jint pf)
-{
- LOG_API("nContextBindProgramVertex, con(%p), pf(%p)", con, (RsProgramVertex)pf);
- rsContextBindProgramVertex((RsContext)con, (RsProgramVertex)pf);
-}
-
-static void
-nContextBindProgramRaster(JNIEnv *_env, jobject _this, jlong con, jint pf)
-{
- LOG_API("nContextBindProgramRaster, con(%p), pf(%p)", con, (RsProgramRaster)pf);
- rsContextBindProgramRaster((RsContext)con, (RsProgramRaster)pf);
-}
-
-
-// ---------------------------------------------------------------------------
-
-static jint
-nSamplerCreate(JNIEnv *_env, jobject _this, jlong con, jint magFilter, jint minFilter,
- jint wrapS, jint wrapT, jint wrapR, jfloat aniso)
-{
- LOG_API("nSamplerCreate, con(%p)", con);
- return (jint)rsSamplerCreate((RsContext)con,
- (RsSamplerValue)magFilter,
- (RsSamplerValue)minFilter,
- (RsSamplerValue)wrapS,
- (RsSamplerValue)wrapT,
- (RsSamplerValue)wrapR,
- aniso);
-}
-
-// ---------------------------------------------------------------------------
-
-static jlong
-nPathCreate(JNIEnv *_env, jobject _this, jlong con, jint prim, jboolean isStatic, jlong _vtx, jint _loop, jfloat q) {
- LOG_API("nPathCreate, con(%p)", con);
-
- jlong id = (jlong)rsPathCreate((RsContext)con, (RsPathPrimitive)prim, isStatic,
- (RsAllocation)_vtx,
- (RsAllocation)_loop, q);
- return id;
-}
-
-static jlong
-nMeshCreate(JNIEnv *_env, jobject _this, jlong con, jintArray _vtx, jintArray _idx, jintArray _prim)
-{
- LOG_API("nMeshCreate, con(%p)", con);
-
- jint vtxLen = _env->GetArrayLength(_vtx);
- jint *vtxPtr = _env->GetIntArrayElements(_vtx, NULL);
- jint idxLen = _env->GetArrayLength(_idx);
- jint *idxPtr = _env->GetIntArrayElements(_idx, NULL);
- jint primLen = _env->GetArrayLength(_prim);
- jint *primPtr = _env->GetIntArrayElements(_prim, NULL);
-
- int id = (int)rsMeshCreate((RsContext)con,
- (RsAllocation *)vtxPtr, vtxLen,
- (RsAllocation *)idxPtr, idxLen,
- (uint32_t *)primPtr, primLen);
-
- _env->ReleaseIntArrayElements(_vtx, vtxPtr, 0);
- _env->ReleaseIntArrayElements(_idx, idxPtr, 0);
- _env->ReleaseIntArrayElements(_prim, primPtr, 0);
- return id;
-}
-
-static jint
-nMeshGetVertexBufferCount(JNIEnv *_env, jobject _this, jlong con, jlong mesh)
-{
- LOG_API("nMeshGetVertexBufferCount, con(%p), Mesh(%p)", con, (RsMesh)mesh);
- jint vtxCount = 0;
- rsaMeshGetVertexBufferCount((RsContext)con, (RsMesh)mesh, &vtxCount);
- return vtxCount;
-}
-
-static jint
-nMeshGetIndexCount(JNIEnv *_env, jobject _this, jlong con, jlong mesh)
-{
- LOG_API("nMeshGetIndexCount, con(%p), Mesh(%p)", con, (RsMesh)mesh);
- jint idxCount = 0;
- rsaMeshGetIndexCount((RsContext)con, (RsMesh)mesh, &idxCount);
- return idxCount;
-}
-
-static void
-nMeshGetVertices(JNIEnv *_env, jobject _this, jlong con, jlong mesh, jintArray _ids, int numVtxIDs)
-{
- LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh);
-
- RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numVtxIDs * sizeof(RsAllocation));
- rsaMeshGetVertices((RsContext)con, (RsMesh)mesh, allocs, (uint32_t)numVtxIDs);
-
- for(jint i = 0; i < numVtxIDs; i ++) {
- _env->SetIntArrayRegion(_ids, i, 1, (const jint*)&allocs[i]);
- }
-
- free(allocs);
-}
-
-static void
-nMeshGetIndices(JNIEnv *_env, jobject _this, jlong con, jlong mesh, jintArray _idxIds, jintArray _primitives, int numIndices)
-{
- LOG_API("nMeshGetVertices, con(%p), Mesh(%p)", con, (RsMesh)mesh);
-
- RsAllocation *allocs = (RsAllocation*)malloc((uint32_t)numIndices * sizeof(RsAllocation));
- uint32_t *prims= (uint32_t*)malloc((uint32_t)numIndices * sizeof(uint32_t));
-
- rsaMeshGetIndices((RsContext)con, (RsMesh)mesh, allocs, prims, (uint32_t)numIndices);
-
- for(jint i = 0; i < numIndices; i ++) {
- _env->SetIntArrayRegion(_idxIds, i, 1, (const jint*)&allocs[i]);
- _env->SetIntArrayRegion(_primitives, i, 1, (const jint*)&prims[i]);
- }
-
- free(allocs);
- free(prims);
-}
-
-// ---------------------------------------------------------------------------
-
-
-static const char *classPathName = "android/renderscript/RenderScript";
-
-static JNINativeMethod methods[] = {
-{"_nInit", "()V", (void*)_nInit },
-
-{"nDeviceCreate", "()J", (void*)nDeviceCreate },
-{"nDeviceDestroy", "(J)V", (void*)nDeviceDestroy },
-{"nDeviceSetConfig", "(JII)V", (void*)nDeviceSetConfig },
-{"nContextGetUserMessage", "(J[I)I", (void*)nContextGetUserMessage },
-{"nContextGetErrorMessage", "(J)Ljava/lang/String;", (void*)nContextGetErrorMessage },
-{"nContextPeekMessage", "(J[I)I", (void*)nContextPeekMessage },
-
-{"nContextInitToClient", "(J)V", (void*)nContextInitToClient },
-{"nContextDeinitToClient", "(J)V", (void*)nContextDeinitToClient },
-
-
-// All methods below are thread protected in java.
-{"rsnContextCreate", "(JIII)J", (void*)nContextCreate },
-{"rsnContextCreateGL", "(JIIIIIIIIIIIIFI)J", (void*)nContextCreateGL },
-{"rsnContextFinish", "(J)V", (void*)nContextFinish },
-{"rsnContextSetPriority", "(JI)V", (void*)nContextSetPriority },
-{"rsnContextSetSurface", "(JIILandroid/view/Surface;)V", (void*)nContextSetSurface },
-{"rsnContextDestroy", "(J)V", (void*)nContextDestroy },
-{"rsnContextDump", "(JI)V", (void*)nContextDump },
-{"rsnContextPause", "(J)V", (void*)nContextPause },
-{"rsnContextResume", "(J)V", (void*)nContextResume },
-{"rsnContextSendMessage", "(JI[I)V", (void*)nContextSendMessage },
-{"rsnAssignName", "(JJ[B)V", (void*)nAssignName },
-{"rsnGetName", "(JJ)Ljava/lang/String;", (void*)nGetName },
-{"rsnObjDestroy", "(JJ)V", (void*)nObjDestroy },
-
-{"rsnFileA3DCreateFromFile", "(JLjava/lang/String;)J", (void*)nFileA3DCreateFromFile },
-{"rsnFileA3DCreateFromAssetStream", "(JI)J", (void*)nFileA3DCreateFromAssetStream },
-{"rsnFileA3DCreateFromAsset", "(JLandroid/content/res/AssetManager;Ljava/lang/String;)J", (void*)nFileA3DCreateFromAsset },
-{"rsnFileA3DGetNumIndexEntries", "(JJ)I", (void*)nFileA3DGetNumIndexEntries },
-{"rsnFileA3DGetIndexEntries", "(JJI[I[Ljava/lang/String;)V", (void*)nFileA3DGetIndexEntries },
-{"rsnFileA3DGetEntryByIndex", "(JJI)I", (void*)nFileA3DGetEntryByIndex },
-
-{"rsnFontCreateFromFile", "(JLjava/lang/String;FI)I", (void*)nFontCreateFromFile },
-{"rsnFontCreateFromAssetStream", "(JLjava/lang/String;FII)I", (void*)nFontCreateFromAssetStream },
-{"rsnFontCreateFromAsset", "(JLandroid/content/res/AssetManager;Ljava/lang/String;FI)I", (void*)nFontCreateFromAsset },
-
-{"rsnElementCreate", "(JJIZI)J", (void*)nElementCreate },
-{"rsnElementCreate2", "(J[I[Ljava/lang/String;[I)J", (void*)nElementCreate2 },
-{"rsnElementGetNativeData", "(JJ[I)V", (void*)nElementGetNativeData },
-{"rsnElementGetSubElements", "(JJ[I[Ljava/lang/String;[I)V", (void*)nElementGetSubElements },
-
-{"rsnTypeCreate", "(JJIIIZZI)J", (void*)nTypeCreate },
-{"rsnTypeGetNativeData", "(JJ[I)V", (void*)nTypeGetNativeData },
-
-{"rsnAllocationCreateTyped", "(JJIII)J", (void*)nAllocationCreateTyped },
-{"rsnAllocationCreateFromBitmap", "(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCreateFromBitmap },
-{"rsnAllocationCreateBitmapBackedAllocation", "(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCreateBitmapBackedAllocation },
-{"rsnAllocationCubeCreateFromBitmap","(JJILandroid/graphics/Bitmap;I)J", (void*)nAllocationCubeCreateFromBitmap },
-
-{"rsnAllocationCopyFromBitmap", "(JJLandroid/graphics/Bitmap;)V", (void*)nAllocationCopyFromBitmap },
-{"rsnAllocationCopyToBitmap", "(JJLandroid/graphics/Bitmap;)V", (void*)nAllocationCopyToBitmap },
-
-{"rsnAllocationSyncAll", "(JJI)V", (void*)nAllocationSyncAll },
-{"rsnAllocationGetSurface", "(JJ)Landroid/view/Surface;", (void*)nAllocationGetSurface },
-{"rsnAllocationSetSurface", "(JJLandroid/view/Surface;)V", (void*)nAllocationSetSurface },
-{"rsnAllocationIoSend", "(JJ)V", (void*)nAllocationIoSend },
-{"rsnAllocationIoReceive", "(JJ)V", (void*)nAllocationIoReceive },
-{"rsnAllocationData1D", "(JJIIILjava/lang/Object;II)V", (void*)nAllocationData1D },
-{"rsnAllocationElementData1D", "(JJIII[BI)V", (void*)nAllocationElementData1D },
-{"rsnAllocationData2D", "(JJIIIIIILjava/lang/Object;II)V", (void*)nAllocationData2D },
-{"rsnAllocationData2D", "(JJIIIIIIJIIII)V", (void*)nAllocationData2D_alloc },
-{"rsnAllocationData3D", "(JJIIIIIIILjava/lang/Object;II)V", (void*)nAllocationData3D },
-{"rsnAllocationData3D", "(JJIIIIIIIJIIII)V", (void*)nAllocationData3D_alloc },
-{"rsnAllocationRead", "(JJLjava/lang/Object;I)V", (void*)nAllocationRead },
-{"rsnAllocationRead1D", "(JJIIILjava/lang/Object;II)V", (void*)nAllocationRead1D },
-{"rsnAllocationRead2D", "(JJIIIIIILjava/lang/Object;II)V", (void*)nAllocationRead2D },
-{"rsnAllocationGetType", "(JJ)J", (void*)nAllocationGetType},
-{"rsnAllocationResize1D", "(JJI)V", (void*)nAllocationResize1D },
-{"rsnAllocationGenerateMipmaps", "(JJ)V", (void*)nAllocationGenerateMipmaps },
-
-{"rsnScriptBindAllocation", "(JJJI)V", (void*)nScriptBindAllocation },
-{"rsnScriptSetTimeZone", "(JJ[B)V", (void*)nScriptSetTimeZone },
-{"rsnScriptInvoke", "(JJI)V", (void*)nScriptInvoke },
-{"rsnScriptInvokeV", "(JJI[B)V", (void*)nScriptInvokeV },
-{"rsnScriptForEach", "(JJIJJ)V", (void*)nScriptForEach },
-{"rsnScriptForEach", "(JJIJJ[B)V", (void*)nScriptForEachV },
-{"rsnScriptForEachClipped", "(JJIJJIIIIII)V", (void*)nScriptForEachClipped },
-{"rsnScriptForEachClipped", "(JJIJJ[BIIIIII)V", (void*)nScriptForEachClippedV },
-{"rsnScriptSetVarI", "(JJII)V", (void*)nScriptSetVarI },
-{"rsnScriptGetVarI", "(JJI)I", (void*)nScriptGetVarI },
-{"rsnScriptSetVarJ", "(JJIJ)V", (void*)nScriptSetVarJ },
-{"rsnScriptGetVarJ", "(JJI)J", (void*)nScriptGetVarJ },
-{"rsnScriptSetVarF", "(JJIF)V", (void*)nScriptSetVarF },
-{"rsnScriptGetVarF", "(JJI)F", (void*)nScriptGetVarF },
-{"rsnScriptSetVarD", "(JJID)V", (void*)nScriptSetVarD },
-{"rsnScriptGetVarD", "(JJI)D", (void*)nScriptGetVarD },
-{"rsnScriptSetVarV", "(JJI[B)V", (void*)nScriptSetVarV },
-{"rsnScriptGetVarV", "(JJI[B)V", (void*)nScriptGetVarV },
-{"rsnScriptSetVarVE", "(JJI[BJ[I)V", (void*)nScriptSetVarVE },
-{"rsnScriptSetVarObj", "(JJIJ)V", (void*)nScriptSetVarObj },
-
-{"rsnScriptCCreate", "(JLjava/lang/String;Ljava/lang/String;[BI)I", (void*)nScriptCCreate },
-{"rsnScriptIntrinsicCreate", "(JIJ)J", (void*)nScriptIntrinsicCreate },
-{"rsnScriptKernelIDCreate", "(JJII)J", (void*)nScriptKernelIDCreate },
-{"rsnScriptFieldIDCreate", "(JJI)J", (void*)nScriptFieldIDCreate },
-{"rsnScriptGroupCreate", "(J[I[I[I[I[I)J", (void*)nScriptGroupCreate },
-{"rsnScriptGroupSetInput", "(JJJJ)V", (void*)nScriptGroupSetInput },
-{"rsnScriptGroupSetOutput", "(JJJJ)V", (void*)nScriptGroupSetOutput },
-{"rsnScriptGroupExecute", "(JJ)V", (void*)nScriptGroupExecute },
-
-{"rsnProgramStoreCreate", "(JZZZZZZIII)I", (void*)nProgramStoreCreate },
-
-{"rsnProgramBindConstants", "(JJIJ)V", (void*)nProgramBindConstants },
-{"rsnProgramBindTexture", "(JJIJ)V", (void*)nProgramBindTexture },
-{"rsnProgramBindSampler", "(JJIJ)V", (void*)nProgramBindSampler },
-
-{"rsnProgramFragmentCreate", "(JLjava/lang/String;[Ljava/lang/String;[I)J", (void*)nProgramFragmentCreate },
-{"rsnProgramRasterCreate", "(JZI)J", (void*)nProgramRasterCreate },
-{"rsnProgramVertexCreate", "(JLjava/lang/String;[Ljava/lang/String;[I)J", (void*)nProgramVertexCreate },
-
-{"rsnContextBindRootScript", "(JI)V", (void*)nContextBindRootScript },
-{"rsnContextBindProgramStore", "(JI)V", (void*)nContextBindProgramStore },
-{"rsnContextBindProgramFragment", "(JI)V", (void*)nContextBindProgramFragment },
-{"rsnContextBindProgramVertex", "(JI)V", (void*)nContextBindProgramVertex },
-{"rsnContextBindProgramRaster", "(JI)V", (void*)nContextBindProgramRaster },
-
-{"rsnSamplerCreate", "(JIIIIIF)I", (void*)nSamplerCreate },
-
-{"rsnPathCreate", "(JIZJIF)J", (void*)nPathCreate },
-{"rsnMeshCreate", "(J[I[I[I)J", (void*)nMeshCreate },
-
-{"rsnMeshGetVertexBufferCount", "(JJ)I", (void*)nMeshGetVertexBufferCount },
-{"rsnMeshGetIndexCount", "(JJ)I", (void*)nMeshGetIndexCount },
-{"rsnMeshGetVertices", "(JJ[II)V", (void*)nMeshGetVertices },
-{"rsnMeshGetIndices", "(JJ[I[II)V", (void*)nMeshGetIndices },
-
-};
-
-static int registerFuncs(JNIEnv *_env)
-{
- return android::AndroidRuntime::registerNativeMethods(
- _env, classPathName, methods, NELEM(methods));
-}
-
-// ---------------------------------------------------------------------------
-
-jint JNI_OnLoad(JavaVM* vm, void* reserved)
-{
- JNIEnv* env = NULL;
- jint result = -1;
-
- if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
- ALOGE("ERROR: GetEnv failed\n");
- goto bail;
- }
- assert(env != NULL);
-
- if (registerFuncs(env) < 0) {
- ALOGE("ERROR: MediaPlayer native registration failed\n");
- goto bail;
- }
-
- /* success -- return valid version number */
- result = JNI_VERSION_1_4;
-
-bail:
- return result;
-}