diff options
Diffstat (limited to 'src/java/com/jogamp/common/nio/Buffers.java')
-rw-r--r-- | src/java/com/jogamp/common/nio/Buffers.java | 156 |
1 files changed, 78 insertions, 78 deletions
diff --git a/src/java/com/jogamp/common/nio/Buffers.java b/src/java/com/jogamp/common/nio/Buffers.java index 851aa69..c63a094 100644 --- a/src/java/com/jogamp/common/nio/Buffers.java +++ b/src/java/com/jogamp/common/nio/Buffers.java @@ -1,22 +1,22 @@ /* * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. * Copyright (c) 2010 JogAmp Community. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: - * + * * - Redistribution of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * + * * - Redistribution in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. - * + * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A @@ -29,11 +29,11 @@ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * + * * You acknowledge that this software is not designed or intended for use * in the design, construction, operation or maintenance of any nuclear * facility. - * + * * Sun gratefully acknowledges that this software was originally authored * and developed by Kenneth Bradley Russell and Christopher John Kline. */ @@ -47,7 +47,7 @@ import com.jogamp.common.util.ValueConv; /** * Utility methods allowing easy {@link java.nio.Buffer} manipulations. - * + * * @author Kenneth Russel * @author Sven Gothel * @author Michael Bien @@ -213,7 +213,7 @@ public class Buffers { /** * Calls slice on the specified buffer while maintaining the byteorder. - * @see #slice(java.nio.Buffer, int, int) + * @see #slice(java.nio.Buffer, int, int) */ @SuppressWarnings("unchecked") public static <B extends Buffer> B slice(B buffer) { @@ -264,22 +264,22 @@ public class Buffers { * The returned sliced buffer's start position is not necessarily zero, * but the float position within the host ByteBuffer. * </p> - * <p> + * <p> * The returned sliced buffer is {@link FloatBuffer#mark() marked} at it's starting position. Hence - * {@link FloatBuffer#reset()} will rewind it to start after applying relative operations like {@link FloatBuffer#get()}. + * {@link FloatBuffer#reset()} will rewind it to start after applying relative operations like {@link FloatBuffer#get()}. * </p> - * <p> - * Using a ByteBuffer as the source guarantees - * keeping the source native order programmatically. - * This works around <a href="http://code.google.com/p/android/issues/detail?id=16434">Honeycomb / Android 3.0 Issue 16434</a>. + * <p> + * Using a ByteBuffer as the source guarantees + * keeping the source native order programmatically. + * This works around <a href="http://code.google.com/p/android/issues/detail?id=16434">Honeycomb / Android 3.0 Issue 16434</a>. * This bug is resolved at least in Android 3.2. * </p> - * - * @param buf source Buffer, maybe ByteBuffer (recommended) or FloatBuffer or <code>null</code>. + * + * @param buf source Buffer, maybe ByteBuffer (recommended) or FloatBuffer or <code>null</code>. * Buffer's position is ignored and floatPos is being used. * @param backing source float array or <code>null</code> * @param floatPos {@link Buffers#SIZEOF_FLOAT} position - * @param floatSize {@link Buffers#SIZEOF_FLOAT} size + * @param floatSize {@link Buffers#SIZEOF_FLOAT} size * @return FloatBuffer w/ native byte order as given ByteBuffer */ public static final FloatBuffer slice2Float(Buffer buf, float[] backing, int floatPos, int floatSize) { @@ -318,7 +318,7 @@ public class Buffers { return res; } - + /** * Helper routine to set a ByteBuffer to the native byte order, if * that operation is supported by the underlying NIO @@ -329,7 +329,7 @@ public class Buffers { } /** - * Returns the size of a single element of the given buffer in bytes + * Returns the size of a single element of the given buffer in bytes * or <code>0</code> if the given buffer is <code>null</code>. */ public static int sizeOfBufferElem(Object buffer) { @@ -358,7 +358,7 @@ public class Buffers { /** * Returns the number of remaining elements of the given anonymous <code>buffer</code>. - * + * * @param buffer Anonymous <i>Buffer</i> of type {@link NativeBuffer} or a derivation of {@link Buffer}. * @return If <code>buffer</code> is null, returns <code>0<code>, otherwise the remaining size in elements. * @throws IllegalArgumentException if <code>buffer</code> is of invalid type. @@ -375,10 +375,10 @@ public class Buffers { throw new IllegalArgumentException("Unsupported anonymous buffer type: "+buffer.getClass().getCanonicalName()); } } - + /** * Returns the number of remaining bytes of the given anonymous <code>buffer</code>. - * + * * @param buffer Anonymous <i>Buffer</i> of type {@link NativeBuffer} or a derivation of {@link Buffer}. * @return If <code>buffer</code> is null, returns <code>0<code>, otherwise the remaining size in bytes. * @throws IllegalArgumentException if <code>buffer</code> is of invalid type. @@ -434,11 +434,11 @@ public class Buffers { if (buf instanceof ByteBuffer) { return ((ByteBuffer) buf).isDirect(); } else if (buf instanceof IntBuffer) { - return ((IntBuffer) buf).isDirect(); + return ((IntBuffer) buf).isDirect(); } else if (buf instanceof ShortBuffer) { - return ((ShortBuffer) buf).isDirect(); + return ((ShortBuffer) buf).isDirect(); } else if (buf instanceof FloatBuffer) { - return ((FloatBuffer) buf).isDirect(); + return ((FloatBuffer) buf).isDirect(); } else if (buf instanceof DoubleBuffer) { return ((DoubleBuffer) buf).isDirect(); } else if (buf instanceof LongBuffer) { @@ -490,7 +490,7 @@ public class Buffers { * Helper routine to return the array backing store reference from * a Buffer object. * @throws UnsupportedOperationException if the passed Object does not have an array backing store - * @throws IllegalArgumentException if the passed Object is neither of type {@link java.nio.Buffer} or {@link NativeBuffer}. + * @throws IllegalArgumentException if the passed Object is neither of type {@link java.nio.Buffer} or {@link NativeBuffer}. */ public static Object getArray(Object buf) throws UnsupportedOperationException, IllegalArgumentException { if (buf == null) { @@ -557,7 +557,7 @@ public class Buffers { ByteBuffer dest = newDirectByteBuffer(orig.remaining()); dest.put(orig); dest.rewind(); - orig.position(op0); + orig.position(op0); return dest; } @@ -752,8 +752,8 @@ public class Buffers { //---------------------------------------------------------------------- // Convenient put methods with generic target Buffer w/o value range conversion, i.e. normalization - // - + // + @SuppressWarnings("unchecked") public static <B extends Buffer> B put(B dest, Buffer src) { if ((dest instanceof ByteBuffer) && (src instanceof ByteBuffer)) { @@ -841,7 +841,7 @@ public class Buffers { throw new IllegalArgumentException("Float doesn't match Buffer Class: " + dest); } } - + @SuppressWarnings("unchecked") public static <B extends Buffer> B putd(B dest, double v) { if (dest instanceof FloatBuffer) { @@ -855,15 +855,15 @@ public class Buffers { // Convenient put methods with generic target Buffer and value range conversion, i.e. normalization // - /** + /** * Store byte source value in given buffer after normalizing it to the destination value range * considering signed and unsigned source and destination representation. - * + * * @param dest One of {@link ByteBuffer}, {@link ShortBuffer}, {@link IntBuffer}, {@link FloatBuffer} * @param dSigned true if destination buffer holds signed values, false if destination buffer holds unsigned values * @param v source byte value to be put in dest buffer * @param sSigned true if source represents a signed value, false if source represents an unsigned value - */ + */ @SuppressWarnings("unchecked") public static <B extends Buffer> B putNb(B dest, boolean dSigned, byte v, boolean sSigned) { if (dest instanceof ByteBuffer) { @@ -872,22 +872,22 @@ public class Buffers { return (B) ((ShortBuffer) dest).put( ValueConv.byte_to_short(v, sSigned, dSigned) ); } else if (dest instanceof IntBuffer) { return (B) ((IntBuffer) dest).put( ValueConv.byte_to_int(v, sSigned, dSigned) ); - } else if (dest instanceof FloatBuffer) { + } else if (dest instanceof FloatBuffer) { return (B) ((FloatBuffer) dest).put( ValueConv.byte_to_float(v, sSigned) ); } else { throw new IllegalArgumentException("Byte doesn't match Buffer Class: " + dest); } } - /** + /** * Store short source value in given buffer after normalizing it to the destination value range * considering signed and unsigned source and destination representation. - * + * * @param dest One of {@link ByteBuffer}, {@link ShortBuffer}, {@link IntBuffer}, {@link FloatBuffer} * @param dSigned true if destination buffer holds signed values, false if destination buffer holds unsigned values * @param v source short value to be put in dest buffer * @param sSigned true if source represents a signed value, false if source represents an unsigned value - */ + */ @SuppressWarnings("unchecked") public static <B extends Buffer> B putNs(B dest, boolean dSigned, short v, boolean sSigned) { if (dest instanceof ByteBuffer) { @@ -896,22 +896,22 @@ public class Buffers { return (B) ((ShortBuffer) dest).put( v ); } else if (dest instanceof IntBuffer) { return (B) ((IntBuffer) dest).put( ValueConv.short_to_int(v, sSigned, dSigned) ); - } else if (dest instanceof FloatBuffer) { + } else if (dest instanceof FloatBuffer) { return (B) ((FloatBuffer) dest).put( ValueConv.short_to_float(v, sSigned) ); } else { throw new IllegalArgumentException("Byte doesn't match Buffer Class: " + dest); } } - - /** + + /** * Store short source value in given buffer after normalizing it to the destination value range * considering signed and unsigned source and destination representation. - * + * * @param dest One of {@link ByteBuffer}, {@link ShortBuffer}, {@link IntBuffer}, {@link FloatBuffer} * @param dSigned true if destination buffer holds signed values, false if destination buffer holds unsigned values * @param v source short value to be put in dest buffer * @param sSigned true if source represents a signed value, false if source represents an unsigned value - */ + */ @SuppressWarnings("unchecked") public static <B extends Buffer> B putNi(B dest, boolean dSigned, int v, boolean sSigned) { if (dest instanceof ByteBuffer) { @@ -920,21 +920,21 @@ public class Buffers { return (B) ((ShortBuffer) dest).put( ValueConv.int_to_short(v, sSigned, dSigned) ); } else if (dest instanceof IntBuffer) { return (B) ((IntBuffer) dest).put( v ); - } else if (dest instanceof FloatBuffer) { + } else if (dest instanceof FloatBuffer) { return (B) ((FloatBuffer) dest).put( ValueConv.int_to_float(v, sSigned) ); } else { throw new IllegalArgumentException("Byte doesn't match Buffer Class: " + dest); } } - - /** + + /** * Store float source value in given buffer after normalizing it to the destination value range * considering signed and unsigned destination representation. - * + * * @param dest One of {@link ByteBuffer}, {@link ShortBuffer}, {@link IntBuffer}, {@link FloatBuffer} * @param dSigned true if destination buffer holds signed values, false if destination buffer holds unsigned values * @param v source float value to be put in dest buffer - */ + */ @SuppressWarnings("unchecked") public static <B extends Buffer> B putNf(B dest, boolean dSigned, float v) { if (dest instanceof ByteBuffer) { @@ -943,17 +943,17 @@ public class Buffers { return (B) ((ShortBuffer) dest).put( ValueConv.float_to_short(v, dSigned) ); } else if (dest instanceof IntBuffer) { return (B) ((IntBuffer) dest).put( ValueConv.float_to_int(v, dSigned) ); - } else if (dest instanceof FloatBuffer) { + } else if (dest instanceof FloatBuffer) { return (B) ((FloatBuffer) dest).put( v ); } else { throw new IllegalArgumentException("Byte doesn't match Buffer Class: " + dest); } } - + //---------------------------------------------------------------------- - // Range check methods + // Range check methods // - + public static void rangeCheck(byte[] array, int offset, int minElementsRemaining) { if (array == null) { return; @@ -1049,13 +1049,13 @@ public class Buffers { throw new IndexOutOfBoundsException("Required " + minBytesRemaining + " remaining bytes in buffer, only had " + bytesRemaining); } } - + /** * Appends Buffer details inclusive data to a StringBuilder instance. * @param sb optional pass through StringBuilder - * @param f optional format string of one element, i.e. "%10.5f" for {@link FloatBuffer}, see {@link java.util.Formatter}, - * or <code>null</code> for unformatted output. - * <b>Note:</b> Caller is responsible to match the format string w/ the data type as expected in the given buffer. + * @param f optional format string of one element, i.e. "%10.5f" for {@link FloatBuffer}, see {@link java.util.Formatter}, + * or <code>null</code> for unformatted output. + * <b>Note:</b> Caller is responsible to match the format string w/ the data type as expected in the given buffer. * @param buffer Any valid Buffer instance * @return the modified StringBuilder containing the Buffer details */ @@ -1073,74 +1073,74 @@ public class Buffers { for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof FloatBuffer) { final FloatBuffer b = (FloatBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof IntBuffer) { final IntBuffer b = (IntBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof ShortBuffer) { final ShortBuffer b = (ShortBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof DoubleBuffer) { final DoubleBuffer b = (DoubleBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof LongBuffer) { final LongBuffer b = (LongBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } else if (buffer instanceof CharBuffer) { final CharBuffer b = (CharBuffer)buffer; for(int i=0; i<b.limit(); i++) { if(0<i) { sb.append(", "); } if(null == f) { - sb.append(b.get(i)); + sb.append(b.get(i)); } else { - sb.append(String.format(f, b.get(i))); - } + sb.append(String.format(f, b.get(i))); + } } } sb.append("]"); return sb; } - + } |