blob: fc986b30685cfe995a03b1bc084cdbd2e366e915 [file] [log] [blame]
/*
* 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.support.v8.renderscript;
import java.lang.reflect.Field;
import android.util.Log;
class ElementThunker extends Element {
android.renderscript.Element mN;
android.renderscript.Element getNObj() {
return mN;
}
public int getBytesSize() {
try {
return mN.getBytesSize();
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public int getVectorSize() {
try {
return mN.getVectorSize();
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
static android.renderscript.Element.DataKind convertKind(DataKind cdk) {
switch(cdk) {
case USER:
return android.renderscript.Element.DataKind.USER;
case PIXEL_L:
return android.renderscript.Element.DataKind.PIXEL_L;
case PIXEL_A:
return android.renderscript.Element.DataKind.PIXEL_A;
case PIXEL_LA:
return android.renderscript.Element.DataKind.PIXEL_LA;
case PIXEL_RGB:
return android.renderscript.Element.DataKind.PIXEL_RGB;
case PIXEL_RGBA:
return android.renderscript.Element.DataKind.PIXEL_RGBA;
case PIXEL_DEPTH:
return android.renderscript.Element.DataKind.PIXEL_DEPTH;
case PIXEL_YUV:
return android.renderscript.Element.DataKind.PIXEL_YUV;
}
return null;
}
static android.renderscript.Element.DataType convertType(DataType cdt) {
switch(cdt) {
case NONE:
return android.renderscript.Element.DataType.NONE;
//case DataType.FLOAT_16:
case FLOAT_32:
return android.renderscript.Element.DataType.FLOAT_32;
case FLOAT_64:
return android.renderscript.Element.DataType.FLOAT_64;
case SIGNED_8:
return android.renderscript.Element.DataType.SIGNED_8;
case SIGNED_16:
return android.renderscript.Element.DataType.SIGNED_16;
case SIGNED_32:
return android.renderscript.Element.DataType.SIGNED_32;
case SIGNED_64:
return android.renderscript.Element.DataType.SIGNED_64;
case UNSIGNED_8:
return android.renderscript.Element.DataType.UNSIGNED_8;
case UNSIGNED_16:
return android.renderscript.Element.DataType.UNSIGNED_16;
case UNSIGNED_32:
return android.renderscript.Element.DataType.UNSIGNED_32;
case UNSIGNED_64:
return android.renderscript.Element.DataType.UNSIGNED_64;
case BOOLEAN:
return android.renderscript.Element.DataType.BOOLEAN;
case MATRIX_4X4:
return android.renderscript.Element.DataType.MATRIX_4X4;
case MATRIX_3X3:
return android.renderscript.Element.DataType.MATRIX_3X3;
case MATRIX_2X2:
return android.renderscript.Element.DataType.MATRIX_2X2;
case RS_ELEMENT:
return android.renderscript.Element.DataType.RS_ELEMENT;
case RS_TYPE:
return android.renderscript.Element.DataType.RS_TYPE;
case RS_ALLOCATION:
return android.renderscript.Element.DataType.RS_ALLOCATION;
case RS_SAMPLER:
return android.renderscript.Element.DataType.RS_SAMPLER;
case RS_SCRIPT:
return android.renderscript.Element.DataType.RS_SCRIPT;
}
return null;
}
public boolean isComplex() {
try {
return mN.isComplex();
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public int getSubElementCount() {
try {
return mN.getSubElementCount();
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public Element getSubElement(int index) {
try {
return new ElementThunker(mRS, mN.getSubElement(index));
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public String getSubElementName(int index) {
try {
return mN.getSubElementName(index);
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public int getSubElementArraySize(int index) {
try {
return mN.getSubElementArraySize(index);
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public int getSubElementOffsetBytes(int index) {
try {
return mN.getSubElementOffsetBytes(index);
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public DataType getDataType() {
return mType;
}
public DataKind getDataKind() {
return mKind;
}
ElementThunker(RenderScript rs, android.renderscript.Element e) {
super(0, rs);
mN = e;
}
static Element create(RenderScript rs, DataType dt) {
RenderScriptThunker rst = (RenderScriptThunker)rs;
try {
android.renderscript.Element e = null;
switch(dt) {
case FLOAT_32:
e = android.renderscript.Element.F32(rst.mN);
break;
case FLOAT_64:
e = android.renderscript.Element.F64(rst.mN);
break;
case SIGNED_8:
e = android.renderscript.Element.I8(rst.mN);
break;
case SIGNED_16:
e = android.renderscript.Element.I16(rst.mN);
break;
case SIGNED_32:
e = android.renderscript.Element.I32(rst.mN);
break;
case SIGNED_64:
e = android.renderscript.Element.I64(rst.mN);
break;
case UNSIGNED_8:
e = android.renderscript.Element.U8(rst.mN);
break;
case UNSIGNED_16:
e = android.renderscript.Element.U16(rst.mN);
break;
case UNSIGNED_32:
e = android.renderscript.Element.U32(rst.mN);
break;
case UNSIGNED_64:
e = android.renderscript.Element.U64(rst.mN);
break;
case BOOLEAN:
e = android.renderscript.Element.BOOLEAN(rst.mN);
break;
case MATRIX_4X4:
e = android.renderscript.Element.MATRIX_4X4(rst.mN);
break;
case MATRIX_3X3:
e = android.renderscript.Element.MATRIX_3X3(rst.mN);
break;
case MATRIX_2X2:
e = android.renderscript.Element.MATRIX_2X2(rst.mN);
break;
case RS_ELEMENT:
e = android.renderscript.Element.ELEMENT(rst.mN);
break;
case RS_TYPE:
e = android.renderscript.Element.TYPE(rst.mN);
break;
case RS_ALLOCATION:
e = android.renderscript.Element.ALLOCATION(rst.mN);
break;
case RS_SAMPLER:
e = android.renderscript.Element.SAMPLER(rst.mN);
break;
case RS_SCRIPT:
e = android.renderscript.Element.SCRIPT(rst.mN);
break;
}
return new ElementThunker(rs, e);
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public static Element createVector(RenderScript rs, DataType dt, int size) {
RenderScriptThunker rst = (RenderScriptThunker)rs;
android.renderscript.Element e;
try {
e = android.renderscript.Element.createVector(rst.mN, convertType(dt), size);
return new ElementThunker(rs, e);
} catch (android.renderscript.RSRuntimeException exc) {
throw ExceptionThunker.convertException(exc);
}
}
public static Element createPixel(RenderScript rs, DataType dt, DataKind dk) {
RenderScriptThunker rst = (RenderScriptThunker)rs;
android.renderscript.Element e;
try {
e = android.renderscript.Element.createPixel(rst.mN, convertType(dt), convertKind(dk));
return new ElementThunker(rs, e);
} catch (android.renderscript.RSRuntimeException exc) {
throw ExceptionThunker.convertException(exc);
}
}
public boolean isCompatible(Element e) {
ElementThunker et = (ElementThunker)e;
try {
return et.mN.isCompatible(mN);
} catch (android.renderscript.RSRuntimeException exc) {
throw ExceptionThunker.convertException(exc);
}
}
static class BuilderThunker {
android.renderscript.Element.Builder mN;
public BuilderThunker(RenderScript rs) {
RenderScriptThunker rst = (RenderScriptThunker)rs;
try {
mN = new android.renderscript.Element.Builder(rst.mN);
} catch (android.renderscript.RSRuntimeException e) {
throw ExceptionThunker.convertException(e);
}
}
public void add(Element e, String name, int arraySize) {
ElementThunker et = (ElementThunker)e;
try {
mN.add(et.mN, name, arraySize);
} catch (android.renderscript.RSRuntimeException exc) {
throw ExceptionThunker.convertException(exc);
}
}
public Element create(RenderScript rs) {
try {
android.renderscript.Element e = mN.create();
return new ElementThunker(rs, e);
} catch (android.renderscript.RSRuntimeException exc) {
throw ExceptionThunker.convertException(exc);
}
}
}
}