bufferwrapper.java
来自「world wind java sdk 源码」· Java 代码 · 共 676 行 · 第 1/2 页
JAVA
676 行
if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } short[] buffer = new short[length]; for (int i = 0; i < length; i++) buffer[i] = (short) src[i + srcPos]; this.shortBuffer.position(index); this.shortBuffer.put(buffer, 0, length); this.shortBuffer.rewind(); return this; } public BufferWrapper putDouble(int index, double[] src, int srcPos, int length) { if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } short[] buffer = new short[length]; for (int i = 0; i < length; i++) buffer[i] = (short) src[i + srcPos]; this.shortBuffer.position(index); this.shortBuffer.put(buffer, 0, length); this.shortBuffer.rewind(); return this; } public long getSizeInBytes() { return (Short.SIZE / 8) * this.shortBuffer.capacity(); } } public static class IntBufferWrapper extends NIOBufferWrapper { private IntBuffer intBuffer; public IntBufferWrapper(IntBuffer source) { super(source); this.intBuffer = source; } public int getInt(int index) { return this.intBuffer.get(index); } public double getDouble(int index) { return this.intBuffer.get(index); } public BufferWrapper getInt(int index, int[] dest, int destPos, int length) { if (dest == null) { String message = Logging.getMessage("nullValue.DestinationIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } this.intBuffer.position(index); this.intBuffer.get(dest, destPos, length); this.intBuffer.rewind(); return this; } public BufferWrapper getDouble(int index, double[] dest, int destPos, int length) { if (dest == null) { String message = Logging.getMessage("nullValue.DestinationIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } int[] buffer = new int[length]; this.intBuffer.position(index); this.intBuffer.get(buffer, 0, length); this.intBuffer.rewind(); for (int i = 0; i < length; i++) dest[i + destPos] = buffer[i]; return this; } public BufferWrapper putInt(int index, int value) { this.intBuffer.put(index, value); return this; } public BufferWrapper putDouble(int index, double value) { this.intBuffer.put(index, (int) value); return this; } public BufferWrapper putInt(int index, int[] src, int srcPos, int length) { if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } this.intBuffer.position(index); this.intBuffer.put(src, srcPos, length); this.intBuffer.rewind(); return this; } public BufferWrapper putDouble(int index, double[] src, int srcPos, int length) { if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } int[] buffer = new int[length]; for (int i = 0; i < length; i++) buffer[i] = (int) src[i + srcPos]; this.intBuffer.position(index); this.intBuffer.put(buffer, 0, length); this.intBuffer.rewind(); return this; } public long getSizeInBytes() { return (Integer.SIZE / 8) * this.intBuffer.capacity(); } } public static class FloatBufferWrapper extends NIOBufferWrapper { private FloatBuffer floatBuffer; public FloatBufferWrapper(FloatBuffer source) { super(source); this.floatBuffer = source; } public int getInt(int index) { return (int) this.floatBuffer.get(index); } public double getDouble(int index) { return this.floatBuffer.get(index); } public BufferWrapper getInt(int index, int[] dest, int destPos, int length) { if (dest == null) { String message = Logging.getMessage("nullValue.DestinationIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } float[] buffer = new float[length]; this.floatBuffer.position(index); this.floatBuffer.get(buffer, 0, length); this.floatBuffer.rewind(); for (int i = 0; i < length; i++) dest[i + destPos] = (int) buffer[i]; return this; } public BufferWrapper getDouble(int index, double[] dest, int destPos, int length) { if (dest == null) { String message = Logging.getMessage("nullValue.DestinationIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } float[] buffer = new float[length]; this.floatBuffer.position(index); this.floatBuffer.get(buffer, 0, length); this.floatBuffer.rewind(); for (int i = 0; i < length; i++) dest[i + destPos] = buffer[i]; return this; } public BufferWrapper putInt(int index, int value) { this.floatBuffer.put(index, (float) value); return this; } public BufferWrapper putDouble(int index, double value) { this.floatBuffer.put(index, (float) value); return this; } public BufferWrapper putInt(int index, int[] src, int srcPos, int length) { if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } float[] buffer = new float[length]; for (int i = 0; i < length; i++) buffer[i] = (float) src[i + srcPos]; this.floatBuffer.position(index); this.floatBuffer.put(buffer, 0, length); this.floatBuffer.rewind(); return this; } public BufferWrapper putDouble(int index, double[] src, int srcPos, int length) { if (src == null) { String message = Logging.getMessage("nullValue.SourceIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } float[] buffer = new float[length]; for (int i = 0; i < length; i++) buffer[i] = (float) src[i + srcPos]; this.floatBuffer.position(index); this.floatBuffer.put(buffer, 0, length); this.floatBuffer.rewind(); return this; } public long getSizeInBytes() { return (Float.SIZE / 8) * this.floatBuffer.capacity(); } } public static BufferWrapper wrap(ByteBuffer byteBuffer, AVList parameters) { if (byteBuffer == null) { String message = Logging.getMessage("nullValue.ByteBufferIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (parameters == null) { String message = Logging.getMessage("nullValue.ParametersIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } String message = validate(parameters); if (message != null) { Logging.logger().severe(message); throw new IllegalArgumentException(message); } Object o = parameters.getValue(AVKey.BYTE_ORDER); byteBuffer.order(AVKey.LITTLE_ENDIAN.equals(o) ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); o = parameters.getValue(AVKey.DATA_TYPE); BufferWrapper wrapper = null; if (AVKey.INT8.equals(o)) wrapper = new ByteBufferWrapper(byteBuffer); else if (AVKey.INT16.equals(o)) wrapper = new ShortBufferWrapper(byteBuffer.asShortBuffer()); else if (AVKey.INT32.equals(o)) wrapper = new IntBufferWrapper(byteBuffer.asIntBuffer()); else if (AVKey.FLOAT32.equals(o)) wrapper = new FloatBufferWrapper(byteBuffer.asFloatBuffer()); return wrapper; } private static String validate(AVList params) { StringBuilder sb = new StringBuilder(); Object o = params.getValue(AVKey.BYTE_ORDER); if (o == null || !validateByteOrder(o)) sb.append(sb.length() > 0 ? ", " : "").append(Logging.getMessage("term.byteOrder")); o = params.getValue(AVKey.DATA_TYPE); if (o == null || !validateDataType(o)) sb.append(sb.length() > 0 ? ", " : "").append(Logging.getMessage("term.dataType")); if (sb.length() == 0) return null; return Logging.getMessage("BufferWrapper.InvalidBufferParameters", sb.toString()); } private static boolean validateByteOrder(Object o) { return AVKey.BIG_ENDIAN.equals(o) || AVKey.LITTLE_ENDIAN.equals(o); } private static boolean validateDataType(Object o) { return AVKey.INT8.equals(o) || AVKey.INT16.equals(o) || AVKey.INT32.equals(o) || AVKey.FLOAT32.equals(o); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?