diff --git a/src/java/org/lwjgl/openal/BaseEAX.java b/src/java/org/lwjgl/openal/BaseEAX.java new file mode 100644 index 00000000..f6c9c970 --- /dev/null +++ b/src/java/org/lwjgl/openal/BaseEAX.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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.openal; + +/** + * $Id$ + * + * The base OpenAL EAX functionality. + * + * This has been provided as a base class that we can use for either the + * full EAX specification or as a cut-down OpenAL EAX embedded spec. (aka + * a mini-driver). + * + * @author Brian Matzon + * @version $Revision$ + */ +public abstract class BaseEAX { + + /** GUID for buffer */ + public static int BUFFER_GUID; + + /** GUID for listener */ + public static int LISTENER_GUID; + + /** Has the EAX object been created? */ + protected static boolean created; + + static { + initialize(); + } + + /** + * Override to provide any initialization code after creation. + */ + protected void init() { + } + + /** + * Static initialization + */ + private static void initialize() { + System.loadLibrary(org.lwjgl.Sys.getLibraryName()); + } + + /** + * Loads the EAX functions + * + * @throws Exception if the EAX extensions couldn't be loaded + */ + public void create() throws Exception { + if (created) { + return; + } + + if (!nCreate()) { + throw new Exception("EAX instance could not be created."); + } + created = true; + init(); + } + + /** + * Native method to create EAX instance + * + * @return true if the EAX extensions could be found + */ + protected native boolean nCreate(); + + /** + * "Destroy" the EAX object + */ + public void destroy() { + if (!created) { + return; + } + created = false; + nDestroy(); + } + + /** + * Native method the destroy the EAX + */ + protected native void nDestroy(); +} \ No newline at end of file diff --git a/src/java/org/lwjgl/openal/BaseEAXConstants.java b/src/java/org/lwjgl/openal/BaseEAXConstants.java new file mode 100644 index 00000000..02dae620 --- /dev/null +++ b/src/java/org/lwjgl/openal/BaseEAXConstants.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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.openal; + +/** + * $Id$ + * + * This class implements the basic EAX extension constants. + * + * @author Brian Matzon + * @version $Revision$ + */ +public interface BaseEAXConstants { + //add some... +} \ No newline at end of file diff --git a/src/java/org/lwjgl/openal/CoreEAX.java b/src/java/org/lwjgl/openal/CoreEAX.java new file mode 100644 index 00000000..600ff1f6 --- /dev/null +++ b/src/java/org/lwjgl/openal/CoreEAX.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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.openal; + +/** + * $Id$ + * + * This is the OpenAL EAX class. It extends the latest core. + * + * @author Brian Matzon + * @version $Revision$ + */ +public class CoreEAX extends BaseEAX implements BaseEAXConstants { + + /** Creates a new instance of CoreEAX */ + public CoreEAX() { + } + + /** + * Load extensions + */ + protected void init() { + determineAvailableExtensions(); + } + + /** + * Determines available EAX extensions + */ + protected native void determineAvailableExtensions(); + + /** + * Retrieves an EAX Value + * + * @param propertySetID adress to the property set GUID of the object being queried (a listener or a source) + * @param property property being queried + * @param source the source to be queried + * @param data address to write value to + * @param size size of area being written to + * @return OpenAL Error code + */ + public native int eaxGet(int propertySetID, int property, int source, int data, int size); + + /** + * Sets an EAX Value + * + * @param propertySetID adress to the property set GUID of the object being queried (a listener or a source) + * @param property property being queried + * @param source the source to be queried + * @param data address to write value to + * @param size size of area being written to + * @return OpenAL Error code + */ + public native int eaxSet(int propertySetID, int property, int source, int data, int size); +} \ No newline at end of file diff --git a/src/java/org/lwjgl/openal/EAX.java b/src/java/org/lwjgl/openal/EAX.java new file mode 100644 index 00000000..1b8d7add --- /dev/null +++ b/src/java/org/lwjgl/openal/EAX.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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.openal; + +/** + * $Id$ + * + * This is the OpenAL EAX class. It extends the latest core. + * + * @author Brian Matzon + * @version $Revision$ + */ +public class EAX extends CoreEAX { + + /** + * Nothing to se here - please move along + */ + public EAX() { + } +} \ No newline at end of file diff --git a/src/java/org/lwjgl/openal/test/EAXTest.java b/src/java/org/lwjgl/openal/test/EAXTest.java new file mode 100644 index 00000000..80d61c3b --- /dev/null +++ b/src/java/org/lwjgl/openal/test/EAXTest.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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.openal.test; + +import org.lwjgl.openal.EAX; + +/** + * $Id$ + * + * This test initializes EAX and tries to get and set some EAX values + * + * @author Brian Matzon + * @version $Revision$ + */ +public class EAXTest extends BasicTest { + + /** + * Creates an instance of EAXTest + */ + public EAXTest() { + super(); + } + + /** + * Runs the actual test, using supplied arguments + */ + protected void execute(String[] args) { + EAX eax = new EAX(); + try { + eax.create(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * main entry point + * + * @param args String array containing arguments + */ + public static void main(String[] args) { + EAXTest eaxTest = new EAXTest(); + eaxTest.execute(args); + } +} \ No newline at end of file diff --git a/src/native/common/extal.h b/src/native/common/extal.h new file mode 100644 index 00000000..2c043d13 --- /dev/null +++ b/src/native/common/extal.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ +#ifdef _WIN32 + +#ifndef _AL_TEST_H +#define _AL_TEST_H + +#define INITGUID +#define OPENAL + +#include +#include +#include +#include + +EAXSet eaxSet; // EAXSet function, retrieved if EAX Extension is supported +EAXGet eaxGet; // EAXGet function, retrieved if EAX Extension is supported + +#endif + +#endif \ No newline at end of file diff --git a/src/native/common/org_lwjgl_openal_BaseEAX.h b/src/native/common/org_lwjgl_openal_BaseEAX.h new file mode 100644 index 00000000..89003c1d --- /dev/null +++ b/src/native/common/org_lwjgl_openal_BaseEAX.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_lwjgl_openal_BaseEAX */ + +#ifndef _Included_org_lwjgl_openal_BaseEAX +#define _Included_org_lwjgl_openal_BaseEAX +#ifdef __cplusplus +extern "C" { +#endif +/* Inaccessible static: BUFFER_GUID */ +/* Inaccessible static: LISTENER_GUID */ +/* Inaccessible static: created */ +/* + * Class: org_lwjgl_openal_BaseEAX + * Method: nCreate + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_BaseEAX_nCreate + (JNIEnv *, jobject); + +/* + * Class: org_lwjgl_openal_BaseEAX + * Method: nDestroy + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_openal_BaseEAX_nDestroy + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/common/org_lwjgl_openal_CoreEAX.h b/src/native/common/org_lwjgl_openal_CoreEAX.h new file mode 100644 index 00000000..c96f9d06 --- /dev/null +++ b/src/native/common/org_lwjgl_openal_CoreEAX.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ + +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_lwjgl_openal_CoreEAX */ + +#ifndef _Included_org_lwjgl_openal_CoreEAX +#define _Included_org_lwjgl_openal_CoreEAX +#ifdef __cplusplus +extern "C" { +#endif +/* Inaccessible static: BUFFER_GUID */ +/* Inaccessible static: LISTENER_GUID */ +/* Inaccessible static: created */ +/* + * Class: org_lwjgl_openal_CoreEAX + * Method: determineAvailableExtensions + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_determineAvailableExtensions + (JNIEnv *, jobject); + +/* + * Class: org_lwjgl_openal_CoreEAX + * Method: eaxGet + * Signature: (IIIII)I + */ +JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreEAX_eaxGet + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +/* + * Class: org_lwjgl_openal_CoreEAX + * Method: eaxSet + * Signature: (IIIII)I + */ +JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreEAX_eaxSet + (JNIEnv *, jobject, jint, jint, jint, jint, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/native/win32/extal.c b/src/native/win32/extal.c new file mode 100644 index 00000000..461eae1e --- /dev/null +++ b/src/native/win32/extal.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ +#include "extal.h" + +/** + * $Id$ + * + * This file contains the AL extension assigning mechanism + * + * @author Brian Matzon + * @version $Revision$ + */ \ No newline at end of file diff --git a/src/native/win32/org_lwjgl_opengl_BaseEAX.cpp b/src/native/win32/org_lwjgl_opengl_BaseEAX.cpp new file mode 100644 index 00000000..2348b39a --- /dev/null +++ b/src/native/win32/org_lwjgl_opengl_BaseEAX.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ + +#include "org_lwjgl_openal_BaseEAX.h" + +/* + * Class: org_lwjgl_openal_BaseEAX + * Method: nCreate + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_BaseEAX_nCreate (JNIEnv *env, jobject obj) { + return true; +} + +/* + * Class: org_lwjgl_openal_BaseEAX + * Method: nDestroy + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_openal_BaseEAX_nDestroy (JNIEnv *env, jobject obj) { +} \ No newline at end of file diff --git a/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp b/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp new file mode 100644 index 00000000..05534cff --- /dev/null +++ b/src/native/win32/org_lwjgl_opengl_CoreEAX.cpp @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. + */ + +/** + * $Id$ + * + * This is the actual JNI implementation of the OpenAL EAX library. + * + * @author Brian Matzon + * @version $Revision$ + */ +#include "org_lwjgl_openal_CoreEAX.h" +#include "checkALerror.h" + +#include "extal.h" + +/** + * Throws an OAL exception with the specified message + */ +void ThrowException(JNIEnv *env, const char* message) { + jclass cls = env->FindClass("org/lwjgl/openal/OpenALException"); + env->ThrowNew(cls, message); +} + +/* + * Determines available EAX extensions + */ +JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreEAX_determineAvailableExtensions (JNIEnv *env, jobject obj) { +#ifdef _WIN32 + bool EAXSupported = false; + ALCcontext *Context; + ALCdevice *Device; + + //open device + Device = alcOpenDevice(NULL); + if(Device == NULL) { + ThrowException(env, "Unable to determine EAX Extensions"); + return; + } + + //create a context + Context = alcCreateContext(Device, NULL); + if(Context == NULL) { + alcCloseDevice(Device); + ThrowException(env, "Unable to determine EAX Extensions"); + return; + } + + //make current + alcMakeContextCurrent(Context); + if(alGetError() != AL_NO_ERROR) { + alcCloseDevice(Device); + ThrowException(env, "Unable to determine EAX Extensions"); + return; + } + + //check for extension, and assign if available + if(alIsExtensionPresent((ALubyte*) "EAX")) { + eaxSet = (EAXSet)alGetProcAddress((ALubyte*) "EAXSet"); + eaxGet = (EAXGet)alGetProcAddress((ALubyte*) "EAXGet"); + EAXSupported = (eaxSet != NULL && eaxGet != NULL); + } + + //clean up + alcMakeContextCurrent(NULL); + alcDestroyContext(Context); + alcCloseDevice(Device); + + //throw exception if no EAX support + if(EAXSupported != true) { + ThrowException(env, "Unable to determine EAX Extensions"); + } +#else + ThrowException(env, "EAX extensions not supported"); +#endif +} + +/* + * This function retrieves an EAX value. + * + * C Specification: + * ALenum EAXGet(const struct _GUID *propertySetID,ALuint property,ALuint source,ALvoid + * *value,ALuint size); + */ +JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreEAX_eaxGet (JNIEnv *env, jobject obj, jint propertySetID, jint property, jint source, jint value, jint size) { +#ifdef _WIN32 + jint result = (jint) eaxGet((const struct _GUID*)propertySetID, (ALuint) property, (ALuint) source, (ALvoid*) value, (ALuint) size); + CHECK_AL_ERROR + + return result; +#else + return AL_INVALID_OPERATION; +#endif +} + +/* + * This function sets an EAX value. + * + * C Specification: + * ALenum EAXGet(const struct _GUID *propertySetID,ALuint property,ALuint source,ALvoid + * *value,ALuint size); + */ +JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreEAX_eaxSet (JNIEnv *env, jobject obj, jint propertySetID, jint property, jint source, jint value, jint size) { +#ifndef _WIN32 + jint result = (jint) eaxSet((const struct _GUID*)propertySetID, (ALuint) property, (ALuint) source, (ALvoid*) value, (ALuint) size); + CHECK_AL_ERROR + + return result; +#else + return AL_INVALID_OPERATION; +#endif +} \ No newline at end of file