1ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray/* 2ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Copyright (C) 2013 The Android Open Source Project 3ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 4ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Licensed under the Apache License, Version 2.0 (the "License"); 5ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * you may not use this file except in compliance with the License. 6ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * You may obtain a copy of the License at 7ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 8ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * http://www.apache.org/licenses/LICENSE-2.0 9ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * 10ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * Unless required by applicable law or agreed to in writing, software 11ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * distributed under the License is distributed on an "AS IS" BASIS, 12ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * See the License for the specific language governing permissions and 14ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray * limitations under the License. 15ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray */ 16ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 17ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murraypackage android.support.v8.renderscript; 18ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 19ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport java.lang.reflect.Field; 20ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 21ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayimport android.util.Log; 22ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 23ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murrayclass ElementThunker extends Element { 24ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Element mN; 25ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 26ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Element getNObj() { 27ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mN; 28ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 29ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 30ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getBytesSize() { 31d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 32d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getBytesSize(); 33d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 34d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 35d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 36ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 37ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 38ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getVectorSize() { 39d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 40d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getVectorSize(); 41d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 42d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 43d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 44ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static android.renderscript.Element.DataKind convertKind(DataKind cdk) { 47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray switch(cdk) { 48ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case USER: 49ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.USER; 50ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case PIXEL_L: 51ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.PIXEL_L; 52ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case PIXEL_A: 53ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.PIXEL_A; 54ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case PIXEL_LA: 55ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.PIXEL_LA; 56ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case PIXEL_RGB: 57ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.PIXEL_RGB; 58ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case PIXEL_RGBA: 59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataKind.PIXEL_RGBA; 60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return null; 62ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 63ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 64ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static android.renderscript.Element.DataType convertType(DataType cdt) { 65ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray switch(cdt) { 66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case NONE: 67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.NONE; 68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray //case DataType.FLOAT_16: 69ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case FLOAT_32: 70ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.FLOAT_32; 71ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case FLOAT_64: 72ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.FLOAT_64; 73ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case SIGNED_8: 74ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.SIGNED_8; 75ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case SIGNED_16: 76ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.SIGNED_16; 77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case SIGNED_32: 78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.SIGNED_32; 79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case SIGNED_64: 80ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.SIGNED_64; 81ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case UNSIGNED_8: 82ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.UNSIGNED_8; 83ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case UNSIGNED_16: 84ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.UNSIGNED_16; 85ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case UNSIGNED_32: 86ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.UNSIGNED_32; 87ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case UNSIGNED_64: 88ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.UNSIGNED_64; 89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case BOOLEAN: 91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.BOOLEAN; 92ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 93ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MATRIX_4X4: 94ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.MATRIX_4X4; 95ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MATRIX_3X3: 96ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.MATRIX_3X3; 97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case MATRIX_2X2: 98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.MATRIX_2X2; 99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 100ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case RS_ELEMENT: 101ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.RS_ELEMENT; 102ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case RS_TYPE: 103ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.RS_TYPE; 104ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case RS_ALLOCATION: 105ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.RS_ALLOCATION; 106ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case RS_SAMPLER: 107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.RS_SAMPLER; 108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray case RS_SCRIPT: 109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return android.renderscript.Element.DataType.RS_SCRIPT; 110ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 111ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return null; 112ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 113ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 114ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public boolean isComplex() { 115d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 116d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.isComplex(); 117d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 118d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 119d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 122ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getSubElementCount() { 123d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 124d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getSubElementCount(); 125d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 126d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 127d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 128ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 129ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 130ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Element getSubElement(int index) { 131d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 132d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return new ElementThunker(mRS, mN.getSubElement(index)); 133d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 134d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 135d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 137ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 138ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public String getSubElementName(int index) { 139d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 140d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getSubElementName(index); 141d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 142d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 143d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 144ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 145ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getSubElementArraySize(int index) { 147d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 148d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getSubElementArraySize(index); 149d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 150d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 151d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 152ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 153ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 154ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public int getSubElementOffsetBytes(int index) { 155d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 156d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return mN.getSubElementOffsetBytes(index); 157d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 158d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 159d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 162ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public DataType getDataType() { 163ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mType; 164ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 165ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 166ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public DataKind getDataKind() { 167ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return mKind; 168ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 169ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 170ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 171ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ElementThunker(RenderScript rs, android.renderscript.Element e) { 172ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray super(0, rs); 173ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray mN = e; 174ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 175ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static Element create(RenderScript rs, DataType dt) { 178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 179d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 180d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray android.renderscript.Element e = null; 181d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray switch(dt) { 182d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case FLOAT_32: 183d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.F32(rst.mN); 184d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 185d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case FLOAT_64: 186d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.F64(rst.mN); 187d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 188d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case SIGNED_8: 189d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.I8(rst.mN); 190d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 191d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case SIGNED_16: 192d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.I16(rst.mN); 193d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 194d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case SIGNED_32: 195d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.I32(rst.mN); 196d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 197d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case SIGNED_64: 198d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.I64(rst.mN); 199d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 200d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case UNSIGNED_8: 201d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.U8(rst.mN); 202d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 203d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case UNSIGNED_16: 204d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.U16(rst.mN); 205d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 206d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case UNSIGNED_32: 207d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.U32(rst.mN); 208d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 209d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case UNSIGNED_64: 210d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.U64(rst.mN); 211d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 212ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 213d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case BOOLEAN: 214d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.BOOLEAN(rst.mN); 215d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 216ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 217d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case MATRIX_4X4: 218d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.MATRIX_4X4(rst.mN); 219d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 220d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case MATRIX_3X3: 221d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.MATRIX_3X3(rst.mN); 222d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 223d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case MATRIX_2X2: 224d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.MATRIX_2X2(rst.mN); 225ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray break; 226ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 227d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case RS_ELEMENT: 228d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.ELEMENT(rst.mN); 229d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 230d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case RS_TYPE: 231d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.TYPE(rst.mN); 232d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 233d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case RS_ALLOCATION: 234d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.ALLOCATION(rst.mN); 235d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 236d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case RS_SAMPLER: 237d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.SAMPLER(rst.mN); 238d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 239d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray case RS_SCRIPT: 240d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.SCRIPT(rst.mN); 241d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray break; 242d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 243ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 244d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return new ElementThunker(rs, e); 245d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 246d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 247d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 248ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 249ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 250ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public static Element createVector(RenderScript rs, DataType dt, int size) { 251ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 252ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Element e; 253d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 254d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.createVector(rst.mN, convertType(dt), size); 255d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return new ElementThunker(rs, e); 256d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException exc) { 257d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(exc); 258d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 259ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 260ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 261ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public static Element createPixel(RenderScript rs, DataType dt, DataKind dk) { 262ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 263ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Element e; 264d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 265d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray e = android.renderscript.Element.createPixel(rst.mN, convertType(dt), convertKind(dk)); 266ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray return new ElementThunker(rs, e); 267d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException exc) { 268d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(exc); 269d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 270ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 271ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 272ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public boolean isCompatible(Element e) { 273ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ElementThunker et = (ElementThunker)e; 274d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 275d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return et.mN.isCompatible(mN); 276d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException exc) { 277d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(exc); 278d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 279ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 280ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 281ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray static class BuilderThunker { 282ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray android.renderscript.Element.Builder mN; 283ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 284ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public BuilderThunker(RenderScript rs) { 285ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray RenderScriptThunker rst = (RenderScriptThunker)rs; 286d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 287d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray mN = new android.renderscript.Element.Builder(rst.mN); 288d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException e) { 289d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(e); 290d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 291ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 292ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 293ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public void add(Element e, String name, int arraySize) { 294ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray ElementThunker et = (ElementThunker)e; 295d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 296d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray mN.add(et.mN, name, arraySize); 297d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException exc) { 298d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(exc); 299d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 300ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 301ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 302ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray public Element create(RenderScript rs) { 303d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray try { 304d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray android.renderscript.Element e = mN.create(); 305d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray return new ElementThunker(rs, e); 306d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } catch (android.renderscript.RSRuntimeException exc) { 307d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray throw ExceptionThunker.convertException(exc); 308d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray } 309ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 310ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray } 311ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray} 312ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray 313d1107f953974cf7a6c8bdf43e898d2f1f74427e6Tim Murray 314