mirror of
https://github.com/shadowfacts/lwjgl2-arm64.git
synced 2026-04-06 06:53:59 +00:00
Windows: Removed directinput files, since they are now unused. Fixed headers build.xml target
This commit is contained in:
parent
e50dc04191
commit
657bd156e2
15 changed files with 4 additions and 1405 deletions
|
|
@ -1,78 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInput base class
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import org.lwjgl.LWJGLException;
|
||||
|
||||
abstract class WindowsDirectInput {
|
||||
public final static int KEYBOARD_TYPE = 1;
|
||||
public final static int MOUSE_TYPE = 2;
|
||||
|
||||
/* DirectInput constants */
|
||||
public final static int DI_OK = 0x00000000;
|
||||
public final static int DI_NOEFFECT = 0x00000001;
|
||||
public final static int DI_PROPNOEFFECT = 0x00000001;
|
||||
public final static int DI_POLLEDDEVICE = 0x00000002;
|
||||
|
||||
public final static int DI_DOWNLOADSKIPPED = 0x00000003;
|
||||
public final static int DI_EFFECTRESTARTED = 0x00000004;
|
||||
public final static int DI_TRUNCATED = 0x00000008;
|
||||
public final static int DI_SETTINGSNOTSAVED = 0x0000000B;
|
||||
public final static int DI_TRUNCATEDANDRESTARTED = 0x0000000C;
|
||||
|
||||
public final static int DI_BUFFEROVERFLOW = 0x00000001;
|
||||
public final static int DIERR_INPUTLOST = 0x8007001E;
|
||||
public final static int DIERR_NOTACQUIRED = 0x8007001C;
|
||||
public final static int DIERR_OTHERAPPHASPRIO = 0x80070005;
|
||||
|
||||
private final long di_interface;
|
||||
|
||||
public WindowsDirectInput(long hinst) throws LWJGLException {
|
||||
di_interface = createDirectInput(hinst);
|
||||
}
|
||||
protected abstract long createDirectInput(long hinst) throws LWJGLException;
|
||||
|
||||
public WindowsDirectInputDevice createDevice(int type) throws LWJGLException {
|
||||
return createDevice(di_interface, type);
|
||||
}
|
||||
protected abstract WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException;
|
||||
|
||||
public void release() {
|
||||
release(di_interface);
|
||||
}
|
||||
protected abstract void release(long di_interface);
|
||||
}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInput3 interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import org.lwjgl.LWJGLException;
|
||||
|
||||
final class WindowsDirectInput3 extends WindowsDirectInput {
|
||||
/* Re-define device types to get them included in the native headers */
|
||||
public final static int KEYBOARD_TYPE = WindowsDirectInput.KEYBOARD_TYPE;
|
||||
public final static int MOUSE_TYPE = WindowsDirectInput.MOUSE_TYPE;
|
||||
|
||||
public WindowsDirectInput3(long hinst) throws LWJGLException {
|
||||
super(hinst);
|
||||
}
|
||||
|
||||
protected native long createDirectInput(long hinst) throws LWJGLException;
|
||||
|
||||
protected WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException {
|
||||
long device = nCreateDevice(di_interface, type);
|
||||
return new WindowsDirectInputDevice3(device);
|
||||
}
|
||||
private static native long nCreateDevice(long di_interface, int type) throws LWJGLException;
|
||||
|
||||
protected native void release(long di_interface);
|
||||
}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInput8 interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import org.lwjgl.LWJGLException;
|
||||
|
||||
final class WindowsDirectInput8 extends WindowsDirectInput {
|
||||
/* Re-define device types to get them included in the native headers */
|
||||
public final static int KEYBOARD_TYPE = WindowsDirectInput.KEYBOARD_TYPE;
|
||||
public final static int MOUSE_TYPE = WindowsDirectInput.MOUSE_TYPE;
|
||||
|
||||
public WindowsDirectInput8(long hinst) throws LWJGLException {
|
||||
super(hinst);
|
||||
}
|
||||
|
||||
protected native long createDirectInput(long hinst) throws LWJGLException;
|
||||
|
||||
protected WindowsDirectInputDevice createDevice(long di_interface, int type) throws LWJGLException {
|
||||
long device = nCreateDevice(di_interface, type);
|
||||
return new WindowsDirectInputDevice8(device);
|
||||
}
|
||||
private static native long nCreateDevice(long di_interface, int type) throws LWJGLException;
|
||||
|
||||
protected native void release(long di_interface);
|
||||
}
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInputDevice interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import org.lwjgl.LWJGLException;
|
||||
import org.lwjgl.BufferUtils;
|
||||
|
||||
abstract class WindowsDirectInputDevice {
|
||||
public final static int DISCL_EXCLUSIVE = 0x00000001;
|
||||
public final static int DISCL_NONEXCLUSIVE = 0x00000002;
|
||||
public final static int DISCL_FOREGROUND = 0x00000004;
|
||||
public final static int DISCL_BACKGROUND = 0x00000008;
|
||||
public final static int DISCL_NOWINKEY = 0x00000010;
|
||||
|
||||
public final static int GUID_XAxis = 1;
|
||||
public final static int GUID_YAxis = 2;
|
||||
public final static int GUID_ZAxis = 3;
|
||||
public final static int GUID_Button = 4;
|
||||
public final static int GUID_Unknown = 5;
|
||||
|
||||
public final static int DATA_SIZE = 3;
|
||||
|
||||
private final long di_device;
|
||||
private ByteBuffer event_buffer;
|
||||
|
||||
public WindowsDirectInputDevice(long di_device) {
|
||||
this.di_device = di_device;
|
||||
}
|
||||
|
||||
public void release() {
|
||||
release(di_device);
|
||||
}
|
||||
protected abstract void release(long di_device);
|
||||
|
||||
public int poll() {
|
||||
return poll(di_device);
|
||||
}
|
||||
protected abstract int poll(long di_device);
|
||||
|
||||
public void setDataFormat(int type) throws LWJGLException {
|
||||
int ret = setDataFormat(di_device, type);
|
||||
if (ret != WindowsDirectInput.DI_OK)
|
||||
throw new LWJGLException("Failed to set data format (" + Integer.toHexString(ret) + ")");
|
||||
}
|
||||
protected abstract int setDataFormat(long di_device, int type);
|
||||
|
||||
public void setCooperateLevel(long hwnd, int flags) throws LWJGLException {
|
||||
int ret = setCooperativeLevel(di_device, hwnd, flags);
|
||||
if (ret != WindowsDirectInput.DI_OK)
|
||||
throw new LWJGLException("Failed to set cooperative level (" + Integer.toHexString(ret) + ")");
|
||||
}
|
||||
protected abstract int setCooperativeLevel(long di_device, long hwnd, int flags);
|
||||
|
||||
public int acquire() {
|
||||
return acquire(di_device);
|
||||
}
|
||||
protected abstract int acquire(long di_device);
|
||||
|
||||
public void setBufferSize(int buffer_size) throws LWJGLException {
|
||||
int ret = setBufferSize(di_device, buffer_size);
|
||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_PROPNOEFFECT && ret != WindowsDirectInput.DI_POLLEDDEVICE)
|
||||
throw new LWJGLException("Failed to set buffer size (" + Integer.toHexString(ret) + ")");
|
||||
int event_buffer_size = getEventSize()*buffer_size;
|
||||
event_buffer = BufferUtils.createByteBuffer(event_buffer_size);
|
||||
}
|
||||
protected abstract int setBufferSize(long di_device, int buffer_size);
|
||||
|
||||
public int getDeviceData(IntBuffer buffer) {
|
||||
int events_remaining = buffer.remaining()/DATA_SIZE;
|
||||
if (event_buffer == null || events_remaining > event_buffer.remaining()/getEventSize())
|
||||
event_buffer = BufferUtils.createByteBuffer(events_remaining*getEventSize());
|
||||
return getDeviceData(di_device, event_buffer, event_buffer.capacity(), buffer, buffer.position(), buffer.remaining());
|
||||
}
|
||||
protected abstract int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
||||
|
||||
/**
|
||||
* Device data is returned in tuples of the form <dwOfs, dwData>.
|
||||
* buffer position() is moved accordingly to number of events.
|
||||
*/
|
||||
public int getDeviceState(ByteBuffer buffer) {
|
||||
return getDeviceState(di_device, buffer, buffer.position(), buffer.remaining());
|
||||
}
|
||||
protected abstract int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
||||
|
||||
public void unacquire() {
|
||||
unacquire(di_device);
|
||||
}
|
||||
protected abstract int unacquire(long di_device);
|
||||
|
||||
public int enumObjects(WindowsDirectInputDeviceObjectCallback enumerator) {
|
||||
return enumObjects(di_device, enumerator);
|
||||
}
|
||||
protected abstract int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
||||
|
||||
protected abstract int getEventSize();
|
||||
}
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInputDevice3 interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
final class WindowsDirectInputDevice3 extends WindowsDirectInputDevice {
|
||||
/** Re-declare to get the constants into the native headers */
|
||||
public final static int GUID_XAxis = WindowsDirectInputDevice.GUID_XAxis;
|
||||
public final static int GUID_YAxis = WindowsDirectInputDevice.GUID_YAxis;
|
||||
public final static int GUID_ZAxis = WindowsDirectInputDevice.GUID_ZAxis;
|
||||
public final static int GUID_Button = WindowsDirectInputDevice.GUID_Button;
|
||||
public final static int GUID_Unknown = WindowsDirectInputDevice.GUID_Unknown;
|
||||
|
||||
public final static int DATA_SIZE = WindowsDirectInputDevice.DATA_SIZE;
|
||||
|
||||
public WindowsDirectInputDevice3(long di_device) {
|
||||
super(di_device);
|
||||
}
|
||||
|
||||
protected native int setDataFormat(long di_device, int type);
|
||||
|
||||
protected native int setCooperativeLevel(long di_device, long hwnd, int flags);
|
||||
|
||||
protected native int acquire(long di_device);
|
||||
|
||||
protected native int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
||||
|
||||
protected native int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
||||
|
||||
protected native int unacquire(long di_device);
|
||||
|
||||
protected int poll(long di_device) {
|
||||
return WindowsDirectInput.DI_OK;
|
||||
}
|
||||
|
||||
protected native int setBufferSize(long di_device, int buffer_size);
|
||||
protected native int getEventSize();
|
||||
|
||||
protected native void release(long di_device);
|
||||
|
||||
protected native int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInputDevice3 interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
final class WindowsDirectInputDevice8 extends WindowsDirectInputDevice {
|
||||
/** Re-declare to get the constants into the native headers */
|
||||
public final static int GUID_XAxis = WindowsDirectInputDevice.GUID_XAxis;
|
||||
public final static int GUID_YAxis = WindowsDirectInputDevice.GUID_YAxis;
|
||||
public final static int GUID_ZAxis = WindowsDirectInputDevice.GUID_ZAxis;
|
||||
public final static int GUID_Button = WindowsDirectInputDevice.GUID_Button;
|
||||
public final static int GUID_Unknown = WindowsDirectInputDevice.GUID_Unknown;
|
||||
|
||||
public final static int DATA_SIZE = WindowsDirectInputDevice.DATA_SIZE;
|
||||
|
||||
public WindowsDirectInputDevice8(long di_device) {
|
||||
super(di_device);
|
||||
}
|
||||
|
||||
protected native int setDataFormat(long di_device, int type);
|
||||
|
||||
protected native int setCooperativeLevel(long di_device, long hwnd, int flags);
|
||||
|
||||
protected native int acquire(long di_device);
|
||||
|
||||
protected native int getDeviceState(long di_device, ByteBuffer buffer, int position, int size);
|
||||
|
||||
protected native int getDeviceData(long di_device, ByteBuffer event_buffer, int event_buffer_size, IntBuffer buffer, int position, int size);
|
||||
|
||||
protected native int unacquire(long di_device);
|
||||
|
||||
protected native int poll(long di_device);
|
||||
|
||||
protected native int setBufferSize(long di_device, int buffer_size);
|
||||
protected native int getEventSize();
|
||||
|
||||
protected native void release(long di_device);
|
||||
|
||||
protected native int enumObjects(long di_device, WindowsDirectInputDeviceObjectCallback enumerator);
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the DirectInputDevice callback interface
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
interface WindowsDirectInputDeviceObjectCallback {
|
||||
public boolean nextObject(int type, String name);
|
||||
}
|
||||
|
|
@ -1,352 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2002-2008 LWJGL Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions 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 'LWJGL' nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package org.lwjgl.opengl;
|
||||
|
||||
/**
|
||||
* This is the Windows implementation of the Mouse.
|
||||
* @author elias_naur
|
||||
*/
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.LWJGLException;
|
||||
import org.lwjgl.LWJGLUtil;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
final class WindowsDirectInputMouse {
|
||||
private final static int BUFFER_SIZE = 50;
|
||||
private final static int BUTTON_STATES_SIZE = 7;
|
||||
|
||||
private final static int DIMOFS_X = 0;
|
||||
private final static int DIMOFS_Y = 4;
|
||||
private final static int DIMOFS_Z = 8;
|
||||
private final static int DIMOFS_BUTTON0 = 12;
|
||||
private final static int DIMOFS_BUTTON1 = 13;
|
||||
private final static int DIMOFS_BUTTON2 = 14;
|
||||
private final static int DIMOFS_BUTTON3 = 15;
|
||||
|
||||
private final long hwnd;
|
||||
private final WindowsDirectInput dinput;
|
||||
private final WindowsDirectInputDevice mouse;
|
||||
|
||||
private final int mouse_button_count;
|
||||
private final boolean has_wheel;
|
||||
|
||||
private final EventQueue event_queue = new EventQueue(Mouse.EVENT_SIZE);
|
||||
/* Buffer to hold a DIMOUSESTATE */
|
||||
private final ByteBuffer mouse_state;
|
||||
private final IntBuffer temp_data_buffer;
|
||||
|
||||
private final ByteBuffer mouse_event = ByteBuffer.allocate(Mouse.EVENT_SIZE);
|
||||
|
||||
private boolean mouse_grabbed;
|
||||
private byte[] win32_message_button_states = new byte[BUTTON_STATES_SIZE];
|
||||
private int accum_dwheel;
|
||||
private int last_x;
|
||||
private int last_y;
|
||||
|
||||
public WindowsDirectInputMouse(WindowsDirectInput dinput, long hwnd) throws LWJGLException {
|
||||
this.hwnd = hwnd;
|
||||
this.dinput = dinput;
|
||||
try {
|
||||
mouse = dinput.createDevice(WindowsDirectInput.MOUSE_TYPE);
|
||||
try {
|
||||
mouse.setDataFormat(WindowsDirectInput.MOUSE_TYPE);
|
||||
mouse.setBufferSize(BUFFER_SIZE);
|
||||
if (!acquireNonExclusive())
|
||||
throw new LWJGLException("Failed to acquire mouse non-exclusive");
|
||||
} catch (LWJGLException e) {
|
||||
mouse.release();
|
||||
throw e;
|
||||
}
|
||||
} catch (LWJGLException e) {
|
||||
dinput.release();
|
||||
throw e;
|
||||
}
|
||||
MouseEnumerator enumerator = new MouseEnumerator();
|
||||
mouse.enumObjects(enumerator);
|
||||
this.mouse_button_count = Math.min(enumerator.getButtonCount(), 4);
|
||||
this.has_wheel = enumerator.hasWheel();
|
||||
mouse_state = BufferUtils.createByteBuffer(3*4 + 4);
|
||||
temp_data_buffer = BufferUtils.createIntBuffer(BUFFER_SIZE*WindowsDirectInputDevice.DATA_SIZE);
|
||||
}
|
||||
|
||||
public boolean hasWheel() {
|
||||
return has_wheel;
|
||||
}
|
||||
|
||||
public int getButtonCount() {
|
||||
return mouse_button_count;
|
||||
}
|
||||
|
||||
private boolean acquire(int flags) {
|
||||
try {
|
||||
mouse.setCooperateLevel(hwnd, flags);
|
||||
mouse.acquire();
|
||||
return true;
|
||||
} catch (LWJGLException e) {
|
||||
LWJGLUtil.log("Failed to acquire mouse: " + e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean acquireNonExclusive() {
|
||||
return acquire(WindowsDirectInputDevice.DISCL_NONEXCLUSIVE | WindowsDirectInputDevice.DISCL_FOREGROUND) ||
|
||||
acquire(WindowsDirectInputDevice.DISCL_NONEXCLUSIVE | WindowsDirectInputDevice.DISCL_BACKGROUND);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
mouse.unacquire();
|
||||
mouse.release();
|
||||
dinput.release();
|
||||
}
|
||||
|
||||
public void poll(IntBuffer coord_buffer, ByteBuffer buttons) {
|
||||
int ret = mouse.acquire();
|
||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_NOEFFECT)
|
||||
return;
|
||||
mouse.poll();
|
||||
for (int i = 0; i < coord_buffer.remaining(); i++)
|
||||
coord_buffer.put(coord_buffer.position() + i, 0);
|
||||
mouse_state.clear();
|
||||
ret = mouse.getDeviceState(mouse_state);
|
||||
int mouse_state_lx = mouse_state.getInt();
|
||||
int mouse_state_ly = mouse_state.getInt();
|
||||
int mouse_state_lz = mouse_state.getInt();
|
||||
int num_buttons = mouse_button_count;
|
||||
if (mouse_grabbed || ret == WindowsDirectInput.DI_OK) {
|
||||
if (ret != WindowsDirectInput.DI_OK) {
|
||||
LWJGLUtil.log("Error getting mouse state: (0x" + Integer.toHexString(ret) + ")");
|
||||
return;
|
||||
}
|
||||
|
||||
coord_buffer.put(coord_buffer.position() + 2, mouse_state_lz);
|
||||
if (num_buttons > buttons.remaining())
|
||||
num_buttons = buttons.remaining();
|
||||
for (int j = 0; j < num_buttons; j++) {
|
||||
byte button_state = (mouse_state.get() & 0x80) != 0 ? (byte)1 : (byte)0;
|
||||
buttons.put(buttons.position() + j, button_state);
|
||||
// track the button state in the windows message buffer state array
|
||||
// to get accurate button information when releasing a grab
|
||||
win32_message_button_states[j] = button_state;
|
||||
}
|
||||
} else {
|
||||
coord_buffer.put(coord_buffer.position() + 2, accum_dwheel);
|
||||
if (num_buttons > win32_message_button_states.length)
|
||||
num_buttons = win32_message_button_states.length;
|
||||
for (int j = 0; j < num_buttons; j++) {
|
||||
buttons.put(buttons.position() + j, win32_message_button_states[j]);
|
||||
}
|
||||
}
|
||||
accum_dwheel = 0;
|
||||
if (mouse_grabbed) {
|
||||
coord_buffer.put(coord_buffer.position() + 0, mouse_state_lx);
|
||||
coord_buffer.put(coord_buffer.position() + 1, -mouse_state_ly);
|
||||
} else {
|
||||
coord_buffer.put(coord_buffer.position() + 0, last_x);
|
||||
coord_buffer.put(coord_buffer.position() + 1, last_y);
|
||||
}
|
||||
}
|
||||
|
||||
private void putMouseEventWithCoords(byte button, byte state, int coord1, int coord2, int dz, long nanos) {
|
||||
mouse_event.clear();
|
||||
mouse_event.put(button).put(state).putInt(coord1).putInt(coord2).putInt(dz).putLong(nanos);
|
||||
mouse_event.flip();
|
||||
event_queue.putEvent(mouse_event);
|
||||
}
|
||||
|
||||
private void putMouseEvent(byte button, byte state, int dz, long nanos) {
|
||||
if (mouse_grabbed)
|
||||
putMouseEventWithCoords(button, state, 0, 0, dz, nanos);
|
||||
else
|
||||
putMouseEventWithCoords(button, state, last_x, last_y, dz, nanos);
|
||||
}
|
||||
|
||||
private void copyDXEvents(IntBuffer buffer) {
|
||||
int buffer_index = 0;
|
||||
int dx = 0, dy = 0, dwheel = 0;
|
||||
byte button_state;
|
||||
int i;
|
||||
long nanos = 0;
|
||||
while (buffer.hasRemaining()) {
|
||||
int dwOfs = buffer.get();
|
||||
int dwData = buffer.get();
|
||||
long dwTimeStamp = ((long)buffer.get()) & 0xFFFFFFFF;
|
||||
nanos = dwTimeStamp*1000000;
|
||||
button_state = (dwData & 0x80) != 0 ? (byte)1 : (byte)0;
|
||||
switch (dwOfs) {
|
||||
case DIMOFS_BUTTON0:
|
||||
putMouseEventWithCoords((byte)0, button_state, dx, -dy, dwheel, nanos);
|
||||
dx = dy = dwheel = 0;
|
||||
break;
|
||||
case DIMOFS_BUTTON1:
|
||||
putMouseEventWithCoords((byte)1, button_state, dx, -dy, dwheel, nanos);
|
||||
dx = dy = dwheel = 0;
|
||||
break;
|
||||
case DIMOFS_BUTTON2:
|
||||
putMouseEventWithCoords((byte)2, button_state, dx, -dy, dwheel, nanos);
|
||||
dx = dy = dwheel = 0;
|
||||
break;
|
||||
case DIMOFS_BUTTON3:
|
||||
putMouseEventWithCoords((byte)3, button_state, dx, -dy, dwheel, nanos);
|
||||
dx = dy = dwheel = 0;
|
||||
break;
|
||||
case DIMOFS_X:
|
||||
dx += dwData;
|
||||
break;
|
||||
case DIMOFS_Y:
|
||||
dy += dwData;
|
||||
break;
|
||||
case DIMOFS_Z:
|
||||
dwheel += dwData;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (dx != 0 || dy != 0 || dwheel != 0)
|
||||
putMouseEventWithCoords((byte)-1, (byte)0, dx, -dy, dwheel, nanos);
|
||||
}
|
||||
|
||||
private void readDXBuffer() {
|
||||
int ret = mouse.acquire();
|
||||
if (ret != WindowsDirectInput.DI_OK && ret != WindowsDirectInput.DI_NOEFFECT)
|
||||
return;
|
||||
mouse.poll();
|
||||
temp_data_buffer.clear();
|
||||
ret = mouse.getDeviceData(temp_data_buffer);
|
||||
|
||||
switch (ret) {
|
||||
case WindowsDirectInput.DI_OK:
|
||||
break;
|
||||
case WindowsDirectInput.DI_BUFFEROVERFLOW:
|
||||
LWJGLUtil.log("Mouse buffer overflowed");
|
||||
break;
|
||||
case WindowsDirectInput.DIERR_INPUTLOST:
|
||||
LWJGLUtil.log("Mouse input lost");
|
||||
break;
|
||||
case WindowsDirectInput.DIERR_NOTACQUIRED:
|
||||
LWJGLUtil.log("Mouse not acquired");
|
||||
break;
|
||||
default:
|
||||
LWJGLUtil.log("unknown mouse error (" + Integer.toHexString(ret) + ")");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public final void flush() {
|
||||
readDXBuffer();
|
||||
temp_data_buffer.clear();
|
||||
}
|
||||
|
||||
public void read(ByteBuffer buffer) {
|
||||
readDXBuffer();
|
||||
if (mouse_grabbed) {
|
||||
temp_data_buffer.flip();
|
||||
copyDXEvents(temp_data_buffer);
|
||||
}
|
||||
event_queue.copyEvents(buffer);
|
||||
}
|
||||
|
||||
public void grab(boolean grab) {
|
||||
if(grab) {
|
||||
if (!mouse_grabbed) {
|
||||
flush();
|
||||
mouse_grabbed = true;
|
||||
mouse.unacquire();
|
||||
if (!acquire(WindowsDirectInputDevice.DISCL_EXCLUSIVE | WindowsDirectInputDevice.DISCL_FOREGROUND))
|
||||
LWJGLUtil.log("Failed to reset cooperative mode");
|
||||
}
|
||||
} else {
|
||||
if (mouse_grabbed) {
|
||||
mouse_grabbed = false;
|
||||
mouse.unacquire();
|
||||
acquireNonExclusive();
|
||||
}
|
||||
}
|
||||
event_queue.clearEvents();
|
||||
}
|
||||
|
||||
public void handleMouseScrolled(int event_dwheel, long millis) {
|
||||
accum_dwheel += event_dwheel;
|
||||
putMouseEvent((byte)-1, (byte)0, event_dwheel, millis*1000000);
|
||||
}
|
||||
|
||||
public void handleMouseMoved(int x, int y, long millis) {
|
||||
int dx;
|
||||
int dy;
|
||||
dx = x - last_x;
|
||||
dy = y - last_y;
|
||||
last_x = x;
|
||||
last_y = y;
|
||||
long nanos = millis*1000000;
|
||||
if (mouse_grabbed) {
|
||||
putMouseEventWithCoords((byte)-1, (byte)0, dx, dy, 0, nanos);
|
||||
} else {
|
||||
putMouseEventWithCoords((byte)-1, (byte)0, x, y, 0, nanos);
|
||||
}
|
||||
}
|
||||
|
||||
public void handleMouseButton(byte button, byte state, long millis) {
|
||||
putMouseEvent(button, state, 0, millis*1000000);
|
||||
if (button < BUTTON_STATES_SIZE)
|
||||
win32_message_button_states[button] = state != 0 ? (byte)1 : (byte)0;
|
||||
}
|
||||
|
||||
private static class MouseEnumerator implements WindowsDirectInputDeviceObjectCallback {
|
||||
private int button_count;
|
||||
private boolean has_wheel;
|
||||
|
||||
public int getButtonCount() {
|
||||
return button_count;
|
||||
}
|
||||
|
||||
public boolean hasWheel() {
|
||||
return has_wheel;
|
||||
}
|
||||
|
||||
public boolean nextObject(int type, String name) {
|
||||
LWJGLUtil.log("Found mouse object: " + name);
|
||||
switch (type) {
|
||||
case WindowsDirectInputDevice.GUID_ZAxis:
|
||||
has_wheel = true;
|
||||
break;
|
||||
case WindowsDirectInputDevice.GUID_Button:
|
||||
button_count++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -205,15 +205,6 @@ final class WindowsDisplay implements DisplayImplementation {
|
|||
rect.offset(offset_x, offset_y);
|
||||
}
|
||||
|
||||
static WindowsDirectInput createDirectInput() throws LWJGLException {
|
||||
try {
|
||||
return new WindowsDirectInput8(getDllInstance());
|
||||
} catch (LWJGLException e) {
|
||||
LWJGLUtil.log("Failed to create DirectInput 8 interface, falling back to DirectInput 3");
|
||||
return new WindowsDirectInput3(getDllInstance());
|
||||
}
|
||||
}
|
||||
|
||||
static void setupCursorClipping(long hwnd) throws LWJGLException {
|
||||
cursor_clipped = true;
|
||||
getGlobalClientRect(hwnd, rect);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue