/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.badlogic.gdx.backends.jglfw;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
class JglfwUtil {
static private ByteBuffer buffer = ByteBuffer.allocateDirect(8 * 4).order(ByteOrder.nativeOrder());
static private IntBuffer bufferInt = buffer.asIntBuffer();
static private FloatBuffer bufferFloat = buffer.asFloatBuffer();
static private void ensureSize (int n) {
if (buffer.capacity() < n) {
buffer = ByteBuffer.allocateDirect(n).order(ByteOrder.nativeOrder());
bufferInt = buffer.asIntBuffer();
bufferFloat = buffer.asFloatBuffer();
}
}
static ByteBuffer toBuffer (boolean[] src, int offset) {
int n = src.length - offset;
ensureSize(n);
buffer.position(0);
for (boolean value : src)
buffer.put(value ? (byte)1 : 0);
return buffer;
}
static IntBuffer toBuffer (int[] src, int offset) {
int n = src.length - offset;
ensureSize(n * 4);
bufferInt.position(0);
bufferInt.put(src, offset, n);
return bufferInt;
}
static FloatBuffer toBuffer (float[] src, int offset) {
int n = src.length - offset;
ensureSize(n * 4);
bufferFloat.position(0);
bufferFloat.put(src, offset, n);
return bufferFloat;
}
static void toArray (ByteBuffer src, boolean[] dst, int offset) {
for (int i = 0; i < dst.length - offset; i++) {
dst[i + offset] = src.get(i) != 0;
}
}
static void toArray (IntBuffer src, int[] dst, int offset) {
src.position(0);
src.get(dst, offset, dst.length - offset);
}
static void toArray (FloatBuffer src, float[] dst, int offset) {
src.position(0);
src.get(dst, offset, dst.length - offset);
}
}