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 + -
显示快捷键?