Element.java revision 771bebb94054d06f97284379c93a2620613513c3
136e612a488511940b61f09803b270aa1c61b68e0Jason Sams/* 236e612a488511940b61f09803b270aa1c61b68e0Jason Sams * Copyright (C) 2008 The Android Open Source Project 336e612a488511940b61f09803b270aa1c61b68e0Jason Sams * 436e612a488511940b61f09803b270aa1c61b68e0Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 536e612a488511940b61f09803b270aa1c61b68e0Jason Sams * you may not use this file except in compliance with the License. 636e612a488511940b61f09803b270aa1c61b68e0Jason Sams * You may obtain a copy of the License at 736e612a488511940b61f09803b270aa1c61b68e0Jason Sams * 836e612a488511940b61f09803b270aa1c61b68e0Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 936e612a488511940b61f09803b270aa1c61b68e0Jason Sams * 1036e612a488511940b61f09803b270aa1c61b68e0Jason Sams * Unless required by applicable law or agreed to in writing, software 1136e612a488511940b61f09803b270aa1c61b68e0Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1236e612a488511940b61f09803b270aa1c61b68e0Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336e612a488511940b61f09803b270aa1c61b68e0Jason Sams * See the License for the specific language governing permissions and 1436e612a488511940b61f09803b270aa1c61b68e0Jason Sams * limitations under the License. 1536e612a488511940b61f09803b270aa1c61b68e0Jason Sams */ 1636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 1736e612a488511940b61f09803b270aa1c61b68e0Jason Samspackage android.renderscript; 1836e612a488511940b61f09803b270aa1c61b68e0Jason Sams 1943ee06857bb7f99446d1d84f8789016c5d105558Jason Samsimport java.lang.reflect.Field; 2036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 2136e612a488511940b61f09803b270aa1c61b68e0Jason Sams/** 2236e612a488511940b61f09803b270aa1c61b68e0Jason Sams * @hide 2336e612a488511940b61f09803b270aa1c61b68e0Jason Sams * 2436e612a488511940b61f09803b270aa1c61b68e0Jason Sams **/ 2536e612a488511940b61f09803b270aa1c61b68e0Jason Samspublic class Element extends BaseObj { 26ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int mSize; 27ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Entry[] mEntries; 28ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 29768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int getSizeBytes() { 30768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mSize; 31768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 32768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int getComponentCount() { 33768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries.length; 34768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 35768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams Element.DataType getComponentDataType(int num) { 36768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries[num].mType; 37768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 38768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams Element.DataKind getComponentDataKind(int num) { 39768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries[num].mKind; 40768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 41768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams boolean getComponentIsNormalized(int num) { 42768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries[num].mIsNormalized; 43768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 44768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams int getComponentBits(int num) { 45768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries[num].mBits; 46768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 47768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams String getComponentName(int num) { 48768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams return mEntries[num].mName; 49768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams } 50768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams 51ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams static class Entry { 52768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //Element mElement; 53ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Element.DataType mType; 54ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Element.DataKind mKind; 55ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams boolean mIsNormalized; 56ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int mBits; 57ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams String mName; 58ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 59768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //Entry(Element e, int bits) { 60768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //mElement = e; 61768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //int mBits = bits; 62768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //} 63ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 64ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Entry(DataType dt, DataKind dk, boolean isNorm, int bits, String name) { 65ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mType = dt; 66ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mKind = dk; 67ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mIsNormalized = isNorm; 68ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mBits = bits; 69ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mName = name; 70ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams } 7136e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 7236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 733c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_U8(RenderScript rs) { 743c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_U8 == null) { 753c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U8 = new Element(rs, 1); 763c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U8.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.USER, false, 8, null); 773c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U8.init(); 783c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 793c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_U8; 803c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 81ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 823c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_I8(RenderScript rs) { 833c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_I8 == null) { 843c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I8 = new Element(rs, 1); 853c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I8.mEntries[0] = new Entry(DataType.SIGNED, DataKind.USER, false, 8, null); 863c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I8.init(); 873c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 883c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_I8; 893c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 903c0dfbab807a459622aeade4940daddf482dec66Jason Sams 913c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_U16(RenderScript rs) { 923c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_U16 == null) { 933c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U16 = new Element(rs, 1); 943c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U16.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.USER, false, 16, null); 953c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U16.init(); 963c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 973c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_U16; 983c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 993c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1003c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_I16(RenderScript rs) { 1013c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_I16 == null) { 1023c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I16 = new Element(rs, 1); 1033c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I16.mEntries[0] = new Entry(DataType.SIGNED, DataKind.USER, false, 16, null); 1043c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I16.init(); 1053c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1063c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_I16; 1073c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1083c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1093c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_U32(RenderScript rs) { 1103c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_U32 == null) { 1113c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U32 = new Element(rs, 1); 1123c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U32.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.USER, false, 32, null); 1133c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_U32.init(); 1143c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1153c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_U32; 1163c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1173c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1183c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_I32(RenderScript rs) { 1193c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_I32 == null) { 1203c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I32 = new Element(rs, 1); 1213c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I32.mEntries[0] = new Entry(DataType.SIGNED, DataKind.USER, false, 32, null); 1223c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_I32.init(); 1233c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1243c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_I32; 1253c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1263c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1273c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element USER_F32(RenderScript rs) { 1283c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_USER_FLOAT == null) { 1293c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_FLOAT = new Element(rs, 1); 1303c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_FLOAT.mEntries[0] = new Entry(DataType.FLOAT, DataKind.USER, false, 32, null); 1313c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_USER_FLOAT.init(); 1323c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1333c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_USER_FLOAT; 1343c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1353c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1363c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element A_8(RenderScript rs) { 1373c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_A_8 == null) { 1383c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_A_8 = new Element(rs, 1); 1393c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_A_8.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.ALPHA, true, 8, "a"); 1403c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_A_8.init(); 1413c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1423c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_A_8; 1433c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1443c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1453c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element RGB_565(RenderScript rs) { 1463c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_RGB_565 == null) { 1473c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_565 = new Element(rs, 3); 1483c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_565.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.RED, true, 5, "r"); 1493c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_565.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.GREEN, true, 6, "g"); 1503c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_565.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.BLUE, true, 5, "b"); 1513c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_565.init(); 1523c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1533c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_RGB_565; 1543c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1553c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1563c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element RGB_888(RenderScript rs) { 1573c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_RGB_888 == null) { 1583c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_888 = new Element(rs, 3); 1593c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_888.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.RED, true, 8, "r"); 1603c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_888.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.GREEN, true, 8, "g"); 1613c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_888.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.BLUE, true, 8, "b"); 1623c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGB_888.init(); 1633c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1643c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_RGB_888; 1653c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1663c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1673c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element RGBA_5551(RenderScript rs) { 1683c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_RGBA_5551 == null) { 1693c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551 = new Element(rs, 4); 1703c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.RED, true, 5, "r"); 1713c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.GREEN, true, 5, "g"); 1723c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.BLUE, true, 5, "b"); 1733c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551.mEntries[3] = new Entry(DataType.UNSIGNED, DataKind.ALPHA, true, 1, "a"); 1743c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_5551.init(); 1753c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1763c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_RGBA_5551; 1773c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1783c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1793c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element RGBA_4444(RenderScript rs) { 1803c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_RGBA_4444 == null) { 1813c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444 = new Element(rs, 4); 1823c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.RED, true, 4, "r"); 1833c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.GREEN, true, 4, "g"); 1843c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.BLUE, true, 4, "b"); 1853c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444.mEntries[3] = new Entry(DataType.UNSIGNED, DataKind.ALPHA, true, 4, "a"); 1863c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_4444.init(); 1873c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1883c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_RGBA_4444; 1893c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 1903c0dfbab807a459622aeade4940daddf482dec66Jason Sams 1913c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element RGBA_8888(RenderScript rs) { 1923c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_RGBA_8888 == null) { 1933c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888 = new Element(rs, 4); 1943c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.RED, true, 8, "r"); 1953c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.GREEN, true, 8, "g"); 1963c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.BLUE, true, 8, "b"); 1973c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888.mEntries[3] = new Entry(DataType.UNSIGNED, DataKind.ALPHA, true, 8, "a"); 1983c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_RGBA_8888.init(); 1993c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2003c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_RGBA_8888; 2013c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2023c0dfbab807a459622aeade4940daddf482dec66Jason Sams 2033c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element INDEX_16(RenderScript rs) { 2043c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_INDEX_16 == null) { 2053c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_INDEX_16 = new Element(rs, 1); 2063c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_INDEX_16.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.INDEX, false, 16, "index"); 2073c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_INDEX_16.init(); 2083c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2093c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_INDEX_16; 2103c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2113c0dfbab807a459622aeade4940daddf482dec66Jason Sams 2123c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element XY_F32(RenderScript rs) { 2133c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_XY_F32 == null) { 2143c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XY_F32 = new Element(rs, 2); 2153c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XY_F32.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.X, false, 32, "x"); 2163c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XY_F32.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.Y, false, 32, "y"); 2173c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XY_F32.init(); 2183c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2193c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_XY_F32; 2203c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2213c0dfbab807a459622aeade4940daddf482dec66Jason Sams 2223c0dfbab807a459622aeade4940daddf482dec66Jason Sams public static Element XYZ_F32(RenderScript rs) { 2233c0dfbab807a459622aeade4940daddf482dec66Jason Sams if(rs.mElement_XYZ_F32 == null) { 2243c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XYZ_F32 = new Element(rs, 3); 2253c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XYZ_F32.mEntries[0] = new Entry(DataType.UNSIGNED, DataKind.X, false, 32, "x"); 2263c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XYZ_F32.mEntries[1] = new Entry(DataType.UNSIGNED, DataKind.Y, false, 32, "y"); 2273c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XYZ_F32.mEntries[2] = new Entry(DataType.UNSIGNED, DataKind.Z, false, 32, "z"); 2283c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.mElement_XYZ_F32.init(); 2293c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 2303c0dfbab807a459622aeade4940daddf482dec66Jason Sams return rs.mElement_XYZ_F32; 23136e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 23236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 2333c0dfbab807a459622aeade4940daddf482dec66Jason Sams static void initPredefined(RenderScript rs) { 2343c0dfbab807a459622aeade4940daddf482dec66Jason Sams rs.nInitElements(A_8(rs).mID, RGBA_4444(rs).mID, RGBA_8888(rs).mID, RGB_565(rs).mID); 2353c0dfbab807a459622aeade4940daddf482dec66Jason Sams } 23636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 23736e612a488511940b61f09803b270aa1c61b68e0Jason Sams public enum DataType { 23836e612a488511940b61f09803b270aa1c61b68e0Jason Sams FLOAT (0), 23936e612a488511940b61f09803b270aa1c61b68e0Jason Sams UNSIGNED (1), 24036e612a488511940b61f09803b270aa1c61b68e0Jason Sams SIGNED (2); 24136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 24236e612a488511940b61f09803b270aa1c61b68e0Jason Sams int mID; 24336e612a488511940b61f09803b270aa1c61b68e0Jason Sams DataType(int id) { 24436e612a488511940b61f09803b270aa1c61b68e0Jason Sams mID = id; 24536e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 24636e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 24736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 24836e612a488511940b61f09803b270aa1c61b68e0Jason Sams public enum DataKind { 24936e612a488511940b61f09803b270aa1c61b68e0Jason Sams USER (0), 25036e612a488511940b61f09803b270aa1c61b68e0Jason Sams RED (1), 25136e612a488511940b61f09803b270aa1c61b68e0Jason Sams GREEN (2), 25236e612a488511940b61f09803b270aa1c61b68e0Jason Sams BLUE (3), 25336e612a488511940b61f09803b270aa1c61b68e0Jason Sams ALPHA (4), 25436e612a488511940b61f09803b270aa1c61b68e0Jason Sams LUMINANCE (5), 25536e612a488511940b61f09803b270aa1c61b68e0Jason Sams INTENSITY (6), 25636e612a488511940b61f09803b270aa1c61b68e0Jason Sams X (7), 25736e612a488511940b61f09803b270aa1c61b68e0Jason Sams Y (8), 25836e612a488511940b61f09803b270aa1c61b68e0Jason Sams Z (9), 25936e612a488511940b61f09803b270aa1c61b68e0Jason Sams W (10), 26036e612a488511940b61f09803b270aa1c61b68e0Jason Sams S (11), 26136e612a488511940b61f09803b270aa1c61b68e0Jason Sams T (12), 26236e612a488511940b61f09803b270aa1c61b68e0Jason Sams Q (13), 26336e612a488511940b61f09803b270aa1c61b68e0Jason Sams R (14), 26436e612a488511940b61f09803b270aa1c61b68e0Jason Sams NX (15), 26536e612a488511940b61f09803b270aa1c61b68e0Jason Sams NY (16), 26636e612a488511940b61f09803b270aa1c61b68e0Jason Sams NZ (17), 26725ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams INDEX (18), 26825ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams POINT_SIZE(19); 26936e612a488511940b61f09803b270aa1c61b68e0Jason Sams 27036e612a488511940b61f09803b270aa1c61b68e0Jason Sams int mID; 27136e612a488511940b61f09803b270aa1c61b68e0Jason Sams DataKind(int id) { 27236e612a488511940b61f09803b270aa1c61b68e0Jason Sams mID = id; 27336e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 27436e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 27536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 2763c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element(RenderScript rs, int count) { 2773c0dfbab807a459622aeade4940daddf482dec66Jason Sams super(rs); 278ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams mSize = 0; 2793c0dfbab807a459622aeade4940daddf482dec66Jason Sams mEntries = new Entry[count]; 28036e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 28136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 28236e612a488511940b61f09803b270aa1c61b68e0Jason Sams public void destroy() throws IllegalStateException { 2837ce033d797e5df5e2131e2ed459fba181eaf4658Jason Sams super.destroy(); 28436e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 28536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 28643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams public static Element createFromClass(RenderScript rs, Class c) { 287771bebb94054d06f97284379c93a2620613513c3Jason Sams rs.validate(); 28843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams Field[] fields = c.getFields(); 28943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams Builder b = new Builder(rs); 29043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 29143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams for(Field f: fields) { 29243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams Class fc = f.getType(); 29343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams if(fc == int.class) { 29443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams b.add(Element.DataType.SIGNED, Element.DataKind.USER, false, 32, f.getName()); 29543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } else if(fc == short.class) { 29643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams b.add(Element.DataType.SIGNED, Element.DataKind.USER, false, 16, f.getName()); 29743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } else if(fc == byte.class) { 29843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams b.add(Element.DataType.SIGNED, Element.DataKind.USER, false, 8, f.getName()); 29943ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } else if(fc == float.class) { 30043ee06857bb7f99446d1d84f8789016c5d105558Jason Sams b.add(Element.DataType.FLOAT, Element.DataKind.USER, false, 32, f.getName()); 30143ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } else { 30243ee06857bb7f99446d1d84f8789016c5d105558Jason Sams throw new IllegalArgumentException("Unkown field type"); 30343ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 30443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 30543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return b.create(); 30643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 30736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 308ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams static synchronized void internalCreate(RenderScript rs, Element e) { 309ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams rs.nElementBegin(); 310ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams int bits = 0; 311ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams for (int ct=0; ct < e.mEntries.length; ct++) { 312ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Entry en = e.mEntries[ct]; 313768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //if(en.mElement != null) { 314ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams //rs.nElementAdd(en.mElement.mID); 315768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //} else 316768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams { 317768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams rs.nElementAdd(en.mKind.mID, en.mType.mID, en.mIsNormalized, en.mBits, en.mName); 318ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams bits += en.mBits; 319ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams } 320ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams } 321ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams e.mID = rs.nElementCreate(); 322ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams e.mSize = (bits + 7) >> 3; 323ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams } 324ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 3253c0dfbab807a459622aeade4940daddf482dec66Jason Sams void init() { 326771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 327ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams internalCreate(mRS, this); 328ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams } 329ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams 33036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 33136e612a488511940b61f09803b270aa1c61b68e0Jason Sams public static class Builder { 33236e612a488511940b61f09803b270aa1c61b68e0Jason Sams RenderScript mRS; 33322534176fb5c1257130ef4ee589739ca42766a32Jason Sams Entry[] mEntries; 33422534176fb5c1257130ef4ee589739ca42766a32Jason Sams int mEntryCount; 33536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 33622534176fb5c1257130ef4ee589739ca42766a32Jason Sams public Builder(RenderScript rs) { 33736e612a488511940b61f09803b270aa1c61b68e0Jason Sams mRS = rs; 33822534176fb5c1257130ef4ee589739ca42766a32Jason Sams mEntryCount = 0; 33922534176fb5c1257130ef4ee589739ca42766a32Jason Sams mEntries = new Entry[8]; 34036e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 34136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 34222534176fb5c1257130ef4ee589739ca42766a32Jason Sams void addEntry(Entry e) { 34322534176fb5c1257130ef4ee589739ca42766a32Jason Sams if(mEntries.length >= mEntryCount) { 34422534176fb5c1257130ef4ee589739ca42766a32Jason Sams Entry[] en = new Entry[mEntryCount + 8]; 34581e4640d18d451992cb504b356ff4d2dc1b7f297Romain Guy System.arraycopy(mEntries, 0, en, 0, mEntries.length); 34622534176fb5c1257130ef4ee589739ca42766a32Jason Sams mEntries = en; 34736e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 34822534176fb5c1257130ef4ee589739ca42766a32Jason Sams mEntries[mEntryCount] = e; 34922534176fb5c1257130ef4ee589739ca42766a32Jason Sams mEntryCount++; 35036e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 35136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 352768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //public Builder add(Element e) throws IllegalArgumentException { 353768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //Entry en = new Entry(e, e.mSize * 8); 354768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //addEntry(en); 355768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //return this; 356768bc02d815a94ad29146f1ed60c847d1af118ccJason Sams //} 35736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 35843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams public Builder add(Element.DataType dt, Element.DataKind dk, boolean isNormalized, int bits, String name) { 359ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams Entry en = new Entry(dt, dk, isNormalized, bits, name); 36022534176fb5c1257130ef4ee589739ca42766a32Jason Sams addEntry(en); 36136e612a488511940b61f09803b270aa1c61b68e0Jason Sams return this; 36236e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 36336e612a488511940b61f09803b270aa1c61b68e0Jason Sams 36443ee06857bb7f99446d1d84f8789016c5d105558Jason Sams public Builder add(Element.DataType dt, Element.DataKind dk, boolean isNormalized, int bits) { 36543ee06857bb7f99446d1d84f8789016c5d105558Jason Sams add(dt, dk, isNormalized, bits, null); 36643ee06857bb7f99446d1d84f8789016c5d105558Jason Sams return this; 36743ee06857bb7f99446d1d84f8789016c5d105558Jason Sams } 36843ee06857bb7f99446d1d84f8789016c5d105558Jason Sams 369334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloat(Element.DataKind dk) { 370334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, dk, false, 32, null); 371334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 372334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 373334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 374334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloat(Element.DataKind dk, String name) { 375334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, dk, false, 32, name); 376334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 377334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 378334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 379334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloatXY() { 380334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.X, false, 32, null); 381334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.Y, false, 32, null); 382334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 383334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 384334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 38507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatXY(String prefix) { 3862525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.X, false, 32, prefix + "x"); 3872525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.Y, false, 32, prefix + "y"); 38807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 38907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 39007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 391334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloatXYZ() { 392334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.X, false, 32, null); 393334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.Y, false, 32, null); 394334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.Z, false, 32, null); 395334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 396334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 39725ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams 39807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatXYZ(String prefix) { 3992525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.X, false, 32, prefix + "x"); 4002525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.Y, false, 32, prefix + "y"); 4012525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.Z, false, 32, prefix + "z"); 40207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 40307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 40407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 4054f7136c6595ba862be49a660180f084dad17325bRomain Guy public Builder addFloatST() { 4064f7136c6595ba862be49a660180f084dad17325bRomain Guy add(DataType.FLOAT, DataKind.S, false, 32, null); 4074f7136c6595ba862be49a660180f084dad17325bRomain Guy add(DataType.FLOAT, DataKind.T, false, 32, null); 4084f7136c6595ba862be49a660180f084dad17325bRomain Guy return this; 4094f7136c6595ba862be49a660180f084dad17325bRomain Guy } 410334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 41107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatST(String prefix) { 4122525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.S, false, 32, prefix + "s"); 4132525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.T, false, 32, prefix + "t"); 41407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 41507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 41607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 41707ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatNorm() { 41807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams add(DataType.FLOAT, DataKind.NX, false, 32, null); 41907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams add(DataType.FLOAT, DataKind.NY, false, 32, null); 42007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams add(DataType.FLOAT, DataKind.NZ, false, 32, null); 42107ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 42207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 42307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 42407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatNorm(String prefix) { 4252525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.NX, false, 32, prefix + "nx"); 4262525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.NY, false, 32, prefix + "ny"); 4272525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.NZ, false, 32, prefix + "nz"); 42807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 42907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 43007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 43125ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams public Builder addFloatPointSize() { 43225ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, null); 43325ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams return this; 43425ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams } 43525ffcdc9d7e32c9c1eeb2b48cc2f17d1353e9faeJason Sams 4362525a815220652b37e2e390fe8c62394a6d0e574Jason Sams public Builder addFloatPointSize(String prefix) { 4372525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, prefix + "pointSize"); 43807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 43907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 44007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 441334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloatRGB() { 442334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.RED, false, 32, null); 443334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.GREEN, false, 32, null); 444334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.BLUE, false, 32, null); 445334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 446334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 447334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 44807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatRGB(String prefix) { 4492525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.RED, false, 32, prefix + "r"); 4502525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.GREEN, false, 32, prefix + "g"); 4512525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.BLUE, false, 32, prefix + "b"); 45207ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 45307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 45407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 455334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addFloatRGBA() { 456334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.RED, false, 32, null); 457334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.GREEN, false, 32, null); 458334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.BLUE, false, 32, null); 459334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.FLOAT, DataKind.ALPHA, false, 32, null); 460334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 461334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 462334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 46307ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addFloatRGBA(String prefix) { 4642525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.RED, false, 32, prefix + "r"); 4652525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.GREEN, false, 32, prefix + "g"); 4662525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.BLUE, false, 32, prefix + "b"); 4672525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.FLOAT, DataKind.ALPHA, false, 32, prefix + "a"); 46807ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 46907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 47007ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 471334ea0c98f051b5a6b85bc616c93304651854298Jason Sams public Builder addUNorm8RGBA() { 472334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.UNSIGNED, DataKind.RED, true, 8, null); 473334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.UNSIGNED, DataKind.GREEN, true, 8, null); 474334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.UNSIGNED, DataKind.BLUE, true, 8, null); 475334ea0c98f051b5a6b85bc616c93304651854298Jason Sams add(DataType.UNSIGNED, DataKind.ALPHA, true, 8, null); 476334ea0c98f051b5a6b85bc616c93304651854298Jason Sams return this; 477334ea0c98f051b5a6b85bc616c93304651854298Jason Sams } 478334ea0c98f051b5a6b85bc616c93304651854298Jason Sams 47907ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams public Builder addUNorm8RGBA(String prefix) { 4802525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.UNSIGNED, DataKind.RED, true, 8, prefix + "r"); 4812525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.UNSIGNED, DataKind.GREEN, true, 8, prefix + "g"); 4822525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.UNSIGNED, DataKind.BLUE, true, 8, prefix + "b"); 4832525a815220652b37e2e390fe8c62394a6d0e574Jason Sams add(DataType.UNSIGNED, DataKind.ALPHA, true, 8, prefix + "a"); 48407ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams return this; 48507ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams } 48607ae40623737a6060b8a925fd2e6bba76780dcd4Jason Sams 48722534176fb5c1257130ef4ee589739ca42766a32Jason Sams public Element create() { 488771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 4893c0dfbab807a459622aeade4940daddf482dec66Jason Sams Element e = new Element(mRS, mEntryCount); 490ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams java.lang.System.arraycopy(mEntries, 0, e.mEntries, 0, mEntryCount); 4913c0dfbab807a459622aeade4940daddf482dec66Jason Sams e.init(); 492ea84a7c51790f9ba5f2194a66d6cf4ea8d879776Jason Sams return e; 49336e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 49436e612a488511940b61f09803b270aa1c61b68e0Jason Sams } 49536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 49636e612a488511940b61f09803b270aa1c61b68e0Jason Sams} 49736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 498