198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/* 298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Copyright (C) 2012 The Android Open Source Project 398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * you may not use this file except in compliance with the License. 698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * You may obtain a copy of the License at 798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 1098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Unless required by applicable law or agreed to in writing, software 1198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * See the License for the specific language governing permissions and 1498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * limitations under the License. 1598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */ 1698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 1798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspackage android.support.v8.renderscript; 1898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 1998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 2098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/** 2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Utility class for packing arguments and structures from Android system objects to 2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Renderscript objects. 2398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * 2498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/ 2598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class FieldPacker { 2698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public FieldPacker(int len) { 2798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mPos = 0; 2898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mLen = len; 2998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData = new byte[len]; 3098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 3198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 3298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void align(int v) { 3398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((v <= 0) || ((v & (v - 1)) != 0)) { 3498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v); 3598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 3698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 3798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams while ((mPos & (v - 1)) != 0) { 3898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = 0; 3998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 4098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 4198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 4298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void reset() { 4398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mPos = 0; 4498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 4598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void reset(int i) { 4698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((i < 0) || (i >= mLen)) { 4798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("out of range argument: " + i); 4898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 4998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mPos = i; 5098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 5198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 5298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void skip(int i) { 5398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams int res = mPos + i; 5498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((res < 0) || (res > mLen)) { 5598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new RSIllegalArgumentException("out of range argument: " + i); 5698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 5798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mPos = res; 5898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 5998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 6098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI8(byte v) { 6198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = v; 6298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 6398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 6498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI16(short v) { 6598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(2); 6698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 6798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v >> 8); 6898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 6998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 7098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI32(int v) { 7198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(4); 7298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 7398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 7498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 7598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 7698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 7798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 7898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI64(long v) { 7998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(8); 8098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 8198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 8298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 8398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 8498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 32) & 0xff); 8598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 40) & 0xff); 8698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 48) & 0xff); 8798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 56) & 0xff); 8898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 8998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 9098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU8(short v) { 9198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((v < 0) || (v > 0xff)) { 9298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams android.util.Log.e("rs", "FieldPacker.addU8( " + v + " )"); 9398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new IllegalArgumentException("Saving value out of range for type"); 9498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 9598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)v; 9698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 9798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 9898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU16(int v) { 9998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((v < 0) || (v > 0xffff)) { 10098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )"); 10198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new IllegalArgumentException("Saving value out of range for type"); 10298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 10398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(2); 10498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 10598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v >> 8); 10698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 10798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 10898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU32(long v) { 10998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if ((v < 0) || (v > 0xffffffffL)) { 11098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )"); 11198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new IllegalArgumentException("Saving value out of range for type"); 11298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 11398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(4); 11498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 11598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 11698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 11798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 11898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 11998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 12098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU64(long v) { 12198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (v < 0) { 12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )"); 12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams throw new IllegalArgumentException("Saving value out of range for type"); 12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams align(8); 12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)(v & 0xff); 12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 32) & 0xff); 13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 40) & 0xff); 13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 48) & 0xff); 13398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams mData[mPos++] = (byte)((v >> 56) & 0xff); 13498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 13598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 13698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF32(float v) { 13798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(Float.floatToRawIntBits(v)); 13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF64(double v) { 14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(Double.doubleToRawLongBits(v)); 14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 14498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addObj(BaseObj obj) { 14598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams if (obj != null) { 14698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(obj.getID(null)); 14798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } else { 14898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(0); 14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF32(Float2 v) { 15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.x); 15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.y); 15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF32(Float3 v) { 15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.x); 15898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.y); 15998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.z); 16098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF32(Float4 v) { 16298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.x); 16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.y); 16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.z); 16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.w); 16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF64(Double2 v) { 16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.x); 17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.y); 17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF64(Double3 v) { 17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.x); 17498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.y); 17598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.z); 17698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 17798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addF64(Double4 v) { 17898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.x); 17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.y); 18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.z); 18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF64(v.w); 18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI8(Byte2 v) { 18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.x); 18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.y); 18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI8(Byte3 v) { 18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.x); 19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.y); 19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.z); 19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI8(Byte4 v) { 19498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.x); 19598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.y); 19698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.z); 19798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8(v.w); 19898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU8(Short2 v) { 20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.x); 20298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.y); 20398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 20498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU8(Short3 v) { 20598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.x); 20698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.y); 20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.z); 20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU8(Short4 v) { 21098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.x); 21198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.y); 21298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.z); 21398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU8(v.w); 21498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 21598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 21698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI16(Short2 v) { 21798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.x); 21898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.y); 21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI16(Short3 v) { 22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.x); 22298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.y); 22398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.z); 22498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 22598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI16(Short4 v) { 22698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.x); 22798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.y); 22898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.z); 22998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI16(v.w); 23098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 23198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 23298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU16(Int2 v) { 23398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.x); 23498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.y); 23598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 23698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU16(Int3 v) { 23798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.x); 23898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.y); 23998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.z); 24098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 24198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU16(Int4 v) { 24298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.x); 24398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.y); 24498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.z); 24598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU16(v.w); 24698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 24798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI32(Int2 v) { 24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.x); 25098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.y); 25198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 25298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI32(Int3 v) { 25398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.x); 25498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.y); 25598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.z); 25698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 25798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI32(Int4 v) { 25898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.x); 25998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.y); 26098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.z); 26198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI32(v.w); 26298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 26398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 26498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU32(Long2 v) { 26598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.x); 26698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.y); 26798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 26898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU32(Long3 v) { 26998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.x); 27098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.y); 27198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.z); 27298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 27398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU32(Long4 v) { 27498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.x); 27598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.y); 27698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.z); 27798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU32(v.w); 27898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 27998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 28098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI64(Long2 v) { 28198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.x); 28298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.y); 28398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 28498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI64(Long3 v) { 28598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.x); 28698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.y); 28798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.z); 28898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 28998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addI64(Long4 v) { 29098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.x); 29198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.y); 29298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.z); 29398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI64(v.w); 29498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 29598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 29698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU64(Long2 v) { 29798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.x); 29898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.y); 29998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 30098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU64(Long3 v) { 30198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.x); 30298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.y); 30398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.z); 30498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 30598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addU64(Long4 v) { 30698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.x); 30798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.y); 30898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.z); 30998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addU64(v.w); 31098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 31198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 31298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addMatrix(Matrix4f v) { 31398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams for (int i=0; i < v.mMat.length; i++) { 31498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.mMat[i]); 31598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 31698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 31798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 31898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addMatrix(Matrix3f v) { 31998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams for (int i=0; i < v.mMat.length; i++) { 32098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.mMat[i]); 32198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 32498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addMatrix(Matrix2f v) { 32598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams for (int i=0; i < v.mMat.length; i++) { 32698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addF32(v.mMat[i]); 32798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 32998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 33098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public void addBoolean(boolean v) { 33198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams addI8((byte)(v ? 1 : 0)); 33298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 33398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 33498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams public final byte[] getData() { 33598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams return mData; 33698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams } 33798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 33898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams private final byte mData[]; 33998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams private int mPos; 34098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams private int mLen; 34198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 34298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams} 34398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 34498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams 345