You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(134) |
Sep
(52) |
Oct
(13) |
Nov
(342) |
Dec
(163) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(44) |
Feb
(62) |
Mar
(158) |
Apr
(38) |
May
(70) |
Jun
(58) |
Jul
(104) |
Aug
(207) |
Sep
(83) |
Oct
(122) |
Nov
(23) |
Dec
(49) |
| 2004 |
Jan
(119) |
Feb
(132) |
Mar
(192) |
Apr
(140) |
May
(77) |
Jun
(74) |
Jul
(201) |
Aug
(63) |
Sep
(102) |
Oct
(70) |
Nov
(173) |
Dec
(78) |
| 2005 |
Jan
(174) |
Feb
(197) |
Mar
(105) |
Apr
(59) |
May
(77) |
Jun
(43) |
Jul
(21) |
Aug
(18) |
Sep
(47) |
Oct
(37) |
Nov
(74) |
Dec
(50) |
| 2006 |
Jan
(44) |
Feb
(19) |
Mar
(32) |
Apr
(24) |
May
(31) |
Jun
(55) |
Jul
(138) |
Aug
(28) |
Sep
(12) |
Oct
(41) |
Nov
(58) |
Dec
(24) |
| 2007 |
Jan
(28) |
Feb
(14) |
Mar
(10) |
Apr
(68) |
May
(30) |
Jun
(26) |
Jul
(18) |
Aug
(63) |
Sep
(19) |
Oct
(29) |
Nov
(20) |
Dec
(10) |
| 2008 |
Jan
(38) |
Feb
(7) |
Mar
(37) |
Apr
(120) |
May
(41) |
Jun
(36) |
Jul
(39) |
Aug
(24) |
Sep
(28) |
Oct
(30) |
Nov
(36) |
Dec
(75) |
| 2009 |
Jan
(46) |
Feb
(22) |
Mar
(50) |
Apr
(70) |
May
(134) |
Jun
(105) |
Jul
(75) |
Aug
(34) |
Sep
(38) |
Oct
(34) |
Nov
(19) |
Dec
(20) |
| 2010 |
Jan
(11) |
Feb
(20) |
Mar
(65) |
Apr
(83) |
May
(104) |
Jun
(73) |
Jul
(78) |
Aug
(57) |
Sep
(43) |
Oct
(35) |
Nov
(9) |
Dec
(4) |
| 2011 |
Jan
(21) |
Feb
(11) |
Mar
(18) |
Apr
(10) |
May
(18) |
Jun
(15) |
Jul
(48) |
Aug
(25) |
Sep
(17) |
Oct
(45) |
Nov
(15) |
Dec
(12) |
| 2012 |
Jan
(21) |
Feb
(9) |
Mar
(12) |
Apr
(9) |
May
(9) |
Jun
(5) |
Jul
(1) |
Aug
(10) |
Sep
(12) |
Oct
(1) |
Nov
(28) |
Dec
(5) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
|
2
|
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
|
10
|
11
|
12
|
13
|
14
|
15
(4) |
16
(2) |
|
17
(8) |
18
(10) |
19
(32) |
20
(3) |
21
(10) |
22
(5) |
23
|
|
24
(76) |
25
(77) |
26
(33) |
27
(36) |
28
(15) |
29
(14) |
30
(17) |
|
From: Elias N. <eli...@us...> - 2002-11-25 22:10:14
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv2021 Modified Files: org_lwjgl_input_Keyboard.cpp Log Message: Made Keyboard.poll behave like win32 version Index: org_lwjgl_input_Keyboard.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_input_Keyboard.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/org_lwjgl_input_Keyboard.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- org_lwjgl_input_Keyboard.cpp 25 Nov 2002 14:57:13 -0000 1.5 +++ org_lwjgl_input_Keyboard.cpp 25 Nov 2002 22:10:07 -0000 1.6 @@ -194,7 +194,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll (JNIEnv * env, jclass clazz, jint buf) { - checkKeyEvents(NULL); + //checkKeyEvents(NULL); memcpy((unsigned char*)buf, key_buf, KEYBOARD_SIZE*sizeof(unsigned char)); } |
|
From: Brian M. <ma...@us...> - 2002-11-25 21:50:47
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv24596 Modified Files: extal.h Log Message: fix: <al.h> -> <AL/al.h> Index: extal.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/extal.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/extal.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- extal.h 30 Aug 2002 21:26:30 -0000 1.1 +++ extal.h 25 Nov 2002 21:50:41 -0000 1.2 @@ -38,8 +38,8 @@ #define OPENAL #include <windows.h> -#include <al.h> -#include <alc.h> +#include <AL/al.h> +#include <AL/alc.h> #include <eax.h> EAXSet eaxSet; // EAXSet function, retrieved if EAX Extension is supported |
|
From: Elias N. <eli...@us...> - 2002-11-25 20:35:06
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv18085/native/linux Modified Files: org_lwjgl_opengl_BaseGL.cpp Log Message: Dump extension info with debug library Index: org_lwjgl_opengl_BaseGL.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_BaseGL.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_BaseGL.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- org_lwjgl_opengl_BaseGL.cpp 25 Nov 2002 17:04:56 -0000 1.3 +++ org_lwjgl_opengl_BaseGL.cpp 25 Nov 2002 20:35:01 -0000 1.4 @@ -85,6 +85,10 @@ #endif return JNI_FALSE; } +#ifdef _DEBUG + const GLubyte * extensions = glGetString(GL_EXTENSIONS); + printf("Supported extensions: %s\n", extensions); +#endif return JNI_TRUE; } |
|
From: Elias N. <eli...@us...> - 2002-11-25 17:04:59
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv21735/native/linux Modified Files: org_lwjgl_opengl_BaseGL.cpp Log Message: Added releaseContext to BaseGL.java (and native for linux) Index: org_lwjgl_opengl_BaseGL.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_BaseGL.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_BaseGL.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- org_lwjgl_opengl_BaseGL.cpp 21 Nov 2002 11:00:40 -0000 1.2 +++ org_lwjgl_opengl_BaseGL.cpp 25 Nov 2002 17:04:56 -0000 1.3 @@ -51,6 +51,10 @@ glXMakeCurrent(disp, win, context); } +void releaseContext(void) { + glXMakeCurrent(disp, None, NULL); +} + /* * Class: org_lwjgl_opengl_BaseGL * Method: nCreate @@ -92,8 +96,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nDestroy (JNIEnv * env, jobject obj) { - glXMakeCurrent(disp, None, NULL); - + releaseContext(); // Delete the rendering context if (context != NULL) glXDestroyContext(disp, context); @@ -120,3 +123,13 @@ makeCurrent(); } +/* + * * Class: org_lwjgl_opengl_BaseGL + * * Method: nFreeContext + * * Signature: ()V + * */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nReleaseContext + (JNIEnv *, jobject) +{ + releaseContext(); +} |
|
From: Elias N. <eli...@us...> - 2002-11-25 17:04:59
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv21735/native/common Modified Files: org_lwjgl_opengl_BaseGL.h Log Message: Added releaseContext to BaseGL.java (and native for linux) Index: org_lwjgl_opengl_BaseGL.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_opengl_BaseGL.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/org_lwjgl_opengl_BaseGL.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- org_lwjgl_opengl_BaseGL.h 11 Aug 2002 11:49:35 -0000 1.1.1.1 +++ org_lwjgl_opengl_BaseGL.h 25 Nov 2002 17:04:56 -0000 1.2 @@ -9,7 +9,7 @@ #endif /* Inaccessible static: _00024assertionsDisabled */ /* Inaccessible static: currentContext */ -/* Inaccessible static: class_000240 */ +/* Inaccessible static: class_00024org_00024lwjgl_00024opengl_00024BaseGL */ /* * Class: org_lwjgl_opengl_BaseGL * Method: nCreate @@ -32,6 +32,14 @@ * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_swapBuffers + (JNIEnv *, jobject); + +/* + * Class: org_lwjgl_opengl_BaseGL + * Method: nReleaseContext + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nReleaseContext (JNIEnv *, jobject); /* |
|
From: Elias N. <eli...@us...> - 2002-11-25 17:04:59
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/opengl In directory sc8-pr-cvs1:/tmp/cvs-serv21735/java/org/lwjgl/opengl Modified Files: BaseGL.java Log Message: Added releaseContext to BaseGL.java (and native for linux) Index: BaseGL.java CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/java/org/lwjgl/opengl/BaseGL.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/opengl/BaseGL.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- BaseGL.java 23 Aug 2002 16:14:10 -0000 1.5 +++ BaseGL.java 25 Nov 2002 17:04:56 -0000 1.6 @@ -166,6 +166,16 @@ } /** + * Free the context from the current thread. + */ + public final void releaseContext() { + assert created : "GL has not been created yet."; + renderThread = null; + currentContext = null; + nReleaseContext(); + } + + /** * Make this the current context for the current thread. */ public final void makeCurrent() { @@ -180,6 +190,11 @@ */ public native void swapBuffers(); + /** + * Native method to free the context + */ + private native void nReleaseContext(); + /** * Native method to make this the current thread */ |
|
From: Elias N. <eli...@us...> - 2002-11-25 15:32:16
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/input In directory sc8-pr-cvs1:/tmp/cvs-serv305/org/lwjgl/input Modified Files: Keyboard.java Log Message: Added keycode mapping for enter and tab in Keyboard.java Index: Keyboard.java CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/java/org/lwjgl/input/Keyboard.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/input/Keyboard.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Keyboard.java 24 Nov 2002 19:35:00 -0000 1.13 +++ Keyboard.java 25 Nov 2002 15:32:13 -0000 1.14 @@ -191,7 +191,7 @@ '-', '=', 0, - 0, + '\t', 'q', 'w', 'e', @@ -204,7 +204,7 @@ 'p', '[', ']', - 0, + '\n', 0, 'a', 's', @@ -251,7 +251,7 @@ '_', '+', 0, - 0, + '\t', 'Q', 'W', 'E', @@ -264,7 +264,7 @@ 'P', '{', '}', - 0, + '\n', 0, 'A', 'S', |
|
From: Elias N. <eli...@us...> - 2002-11-25 14:57:17
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv12574 Modified Files: Makefile org_lwjgl_input_Keyboard.cpp Log Message: Remapped some keys Index: Makefile CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/Makefile =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/Makefile,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- Makefile 25 Nov 2002 13:18:24 -0000 1.12 +++ Makefile 25 Nov 2002 14:57:13 -0000 1.13 @@ -48,7 +48,7 @@ LIBCPPOBJS=$(LIBCPPSRC:.cpp=.o) LIBCOBJS=$(LIBCSRC:.c=.o) LIBOBJS=$(LIBCOBJS) $(LIBCPPOBJS) -#DEBUG_FLAGS=-D_DEBUG +DEBUG_FLAGS=-D_DEBUG LINKOPTS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86vm -lGL -lGLU -lopenal BUILDOPTS=-O3 -Wall Index: org_lwjgl_input_Keyboard.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_input_Keyboard.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/org_lwjgl_input_Keyboard.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- org_lwjgl_input_Keyboard.cpp 21 Nov 2002 15:05:50 -0000 1.4 +++ org_lwjgl_input_Keyboard.cpp 25 Nov 2002 14:57:13 -0000 1.5 @@ -51,6 +51,7 @@ jfieldID fid_readBuffer; jfieldID fid_readBufferAddress; unsigned char key_buf[KEYBOARD_SIZE]; +unsigned char key_map[KEYBOARD_SIZE]; bool keyboard_grabbed; @@ -122,6 +123,26 @@ #endif return JNI_FALSE; } + for (int i = 0; i < KEYBOARD_SIZE; i++) + key_map[i] = i; + key_map[0x6b] = 0xdb; // Left doze key + key_map[0x6c] = 0xdc; // Right doze key + key_map[0x6d] = 0xdd; // Apps key + key_map[0x5a] = 0xc8; // Up arrow + key_map[0x5c] = 0xcb; // Left arrow + key_map[0x5e] = 0xcd; // Right arrow + key_map[0x60] = 0xd0; // Down arrow + key_map[0x59] = 0xc7; // Home + key_map[0x62] = 0xd2; // Insert + key_map[0x63] = 0xd3; // Delete + key_map[0x5f] = 0xcf; // End + key_map[0x5b] = 0xc9; // Page up + key_map[0x61] = 0xd1; // Page down + key_map[0x67] = 0xb7; // SysRQ + key_map[0x66] = 0xc5; // Pause + key_map[0x64] = 0x9c; // Numpad enter + key_map[0x68] = 0xb5; // Numpad divide + memset(key_buf, 0, KEYBOARD_SIZE*sizeof(unsigned char)); return JNI_TRUE; } @@ -147,6 +168,7 @@ while (XCheckMaskEvent(disp, KeyPressMask | KeyReleaseMask, &event)) { count++; unsigned char keycode = (unsigned char)((event.xkey.keycode - 8) & 0xff); + keycode = key_map[keycode]; if (event.type == KeyPress) { state = 1; } else if (event.type == KeyRelease) { |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:52:26
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv29923/common Added Files: org_lwjgl_openal_ALC.cpp org_lwjgl_openal_ALUT.cpp org_lwjgl_openal_BaseAL.cpp org_lwjgl_openal_CoreAL.cpp org_lwjgl_openal_eax_BaseEAX.cpp org_lwjgl_openal_eax_CoreEAX.cpp org_lwjgl_openal_eax_EAXBufferProperties.cpp org_lwjgl_openal_eax_EAXListenerProperties.cpp Log Message: Moved OpenAL to common --- NEW FILE: org_lwjgl_openal_ALC.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_ALC.cpp /* * 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: org_lwjgl_openal_ALC.cpp,v 1.1 2002/11/25 13:52:23 elias_naur Exp $ * * This is the actual JNI implementation of the OpenAL context/device library. * * @author Brian Matzon <br...@ma...> * @version $Revision: 1.1 $ */ #include "org_lwjgl_openal_ALC.h" #include "checkALerror.h" /* OpenAL includes */ #include <AL/alc.h> /* * Class: org_lwjgl_openal_ALC * Method: nCreate * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_ALC_nCreate (JNIEnv *env, jobject obj) { return true; } /* * Class: org_lwjgl_openal_ALC * Method: nDestroy * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_nDestroy (JNIEnv *env, jobject obj) { } /** * This function returns strings related to the context. * * C Specification: * ALubyte * alcGetString(ALCdevice *device, ALenum token); */ JNIEXPORT jstring JNICALL Java_org_lwjgl_openal_ALC_getString (JNIEnv *env, jobject obj, jobject device, jint token) { jclass class_device = env->GetObjectClass(device); jfieldID field_device = env->GetFieldID(class_device, "device", "I"); jint deviceaddress = env->GetIntField(device, field_device); const char* alcString = (const char*) alcGetString((ALCdevice*) deviceaddress, (ALenum) token); if(alcString == NULL) { return NULL; } jstring string = env->NewStringUTF(alcString); CHECK_ALC_ERROR return string; } /** * This function returns integers related to the context. * * C Specification: * ALvoid alcGetIntegerv(ALCdevice *device, ALenum token, ALsizei size, ALint *dest); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_getIntegerv (JNIEnv *env, jobject obj, jobject device, jint token, jint size, jint dest) { jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); alcGetIntegerv((ALCdevice*) deviceaddress, (ALenum) token, (ALsizei) size, (ALint*) dest); CHECK_ALC_ERROR } /** * This function opens a device by name. * * C Specification: * ALCdevice *alcOpenDevice( const ALubyte *tokstr ); */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALC_openDevice (JNIEnv *env, jobject obj, jstring tokstr) { ALubyte* tokenstring; if(tokstr != NULL) { tokenstring = (ALubyte*) (env->GetStringUTFChars(tokstr, 0)); } else { tokenstring = NULL; } /* get device */ ALCdevice* device = alcOpenDevice(tokenstring); /* if error - cleanup and get out */ if(device == NULL) { if(tokenstring != NULL) { env->ReleaseStringUTFChars((jstring)tokenstring, 0); } return NULL; } /* get ready to create ALCdevice instance */ jobject alcDevice_object = NULL; jclass alcDevice_class = NULL; jmethodID alcDevice_method = NULL; /* find class and constructor */ alcDevice_class = env->FindClass("org/lwjgl/openal/ALCdevice"); alcDevice_method = env->GetMethodID(alcDevice_class, "<init>", "(I)V"); /* create instance */ alcDevice_object = env->NewObject(alcDevice_class, alcDevice_method, (int) device); /* clean up */ env->ReleaseStringUTFChars((jstring)tokenstring, 0); return alcDevice_object; } /** * This function closes a device by name. * * C Specification: * void alcCloseDevice( ALCdevice *dev ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_closeDevice (JNIEnv *env, jobject obj, jobject device) { jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); alcCloseDevice((ALCdevice*) deviceaddress); CHECK_ALC_ERROR } /** * This function creates a context using a specified device. * * C Specification: * ALCcontext* alcCreateContext( ALCdevice *dev, ALint* attrlist ); */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALC_createContext (JNIEnv *env, jobject obj, jobject device, jint attrlist) { /* get device address */ jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); ALCcontext* context = alcCreateContext((ALCdevice*) deviceaddress, (ALint*) attrlist); /* if error - get out */ if(context == NULL) { return NULL; } /* get ready to create ALCcontext instance */ jobject alcContext_object = NULL; jclass alcContext_class = NULL; jmethodID alcContext_method = NULL; /* find class and constructor */ alcContext_class = env->FindClass("org/lwjgl/openal/ALCcontext"); alcContext_method = env->GetMethodID(alcContext_class, "<init>", "(I)V"); /* create instance */ alcContext_object = env->NewObject(alcContext_class, alcContext_method, (int) context); CHECK_ALC_ERROR return alcContext_object; } /** * This function makes a specified context the current context. * * C Specification: * ALCboolean alcMakeContextCurrent(ALCcontext *context); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_ALC_makeContextCurrent (JNIEnv *env, jobject obj, jobject context) { if(context == NULL) { return alcMakeContextCurrent(NULL); } /* get context address */ jclass context_class = env->GetObjectClass(context); jfieldID context_field = env->GetFieldID(context_class, "context", "I"); jint contextaddress = env->GetIntField(context, context_field); return alcMakeContextCurrent((ALCcontext*) contextaddress); } /** * This function tells a context to begin processing. * * C Specification: * void alcProcessContext(ALCcontext *context); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_processContext (JNIEnv *env, jobject obj, jobject context) { /* get context address */ jclass context_class = env->GetObjectClass(context); jfieldID context_field = env->GetFieldID(context_class, "context", "I"); jint contextaddress = env->GetIntField(context, context_field); alcProcessContext((ALCcontext*) contextaddress); } /** * This function retrieves the current context. * * C Specification: * ALCcontext* alcGetCurrentContext( ALvoid ); */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALC_getCurrentContext (JNIEnv *env, jobject obj) { ALCcontext* context = alcGetCurrentContext(); if(context == NULL) { return NULL; } /* get ready to create ALCcontext instance */ jobject alcContext_object = NULL; jclass alcContext_class = NULL; jmethodID alcContext_method = NULL; /* find class and constructor */ alcContext_class = env->FindClass("org/lwjgl/openal/ALCcontext"); alcContext_method = env->GetMethodID(alcContext_class, "<init>", "(I)V"); /* create instance */ alcContext_object = env->NewObject(alcContext_class, alcContext_method, (int) context); return alcContext_object; } /** * This function retrieves the specified contexts device * * C Specification: * ALCdevice* alcGetContextsDevice(ALCcontext *context); */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALC_getContextsDevice (JNIEnv *env, jobject obj, jobject context) { /* get context address */ jclass context_class = env->GetObjectClass(context); jfieldID context_field = env->GetFieldID(context_class, "context", "I"); jint contextaddress = env->GetIntField(context, context_field); ALCdevice* device = alcGetContextsDevice((ALCcontext*) contextaddress); if(device == NULL) { return NULL; } /* get ready to create ALCdevice instance */ jobject alcDevice_object = NULL; jclass alcDevice_class = NULL; jmethodID alcDevice_method = NULL; /* find class and constructor */ alcDevice_class = env->FindClass("org/lwjgl/openal/ALCdevice"); alcDevice_method = env->GetMethodID(alcDevice_class, "<init>", "(I)V"); /* create instance */ alcDevice_object = env->NewObject(alcDevice_class, alcDevice_method, (int) device); return alcDevice_object; } /** * This function suspends processing on a specified context. * * C Specification: * void alcSuspendContext(ALCcontext *context); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_suspendContext (JNIEnv *env, jobject obj, jobject context) { /* get context address */ jclass context_class = env->GetObjectClass(context); jfieldID context_field = env->GetFieldID(context_class, "context", "I"); jint contextaddress = env->GetIntField(context, context_field); alcSuspendContext((ALCcontext*) contextaddress); } /** * This function destroys a context. * * C Specification: * void alcDestroyContext(ALCcontext *context); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALC_destroyContext (JNIEnv *env, jobject obj, jobject context) { /* get context address */ jclass context_class = env->GetObjectClass(context); jfieldID context_field = env->GetFieldID(context_class, "context", "I"); jint contextaddress = env->GetIntField(context, context_field); alcDestroyContext((ALCcontext*) contextaddress); } /** * This function retrieves the specified devices context error state. * * C Specification: * ALCenum alcGetError(ALCdevice *device); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_ALC_getError (JNIEnv *env, jobject obj, jobject device) { /* get device address */ jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); jint result = alcGetError((ALCdevice*) deviceaddress); CHECK_ALC_ERROR return result; } /** * This function queries if a specified context extension is available. * * C Specification: * ALboolean alcIsExtensionPresent(ALCdevice *device, ALubyte *extName); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_ALC_isExtensionPresent (JNIEnv *env, jobject obj, jobject device, jstring extName) { /* get device address */ jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); /* get extension */ ALubyte* functionname = (ALubyte*) (env->GetStringUTFChars(extName, 0)); jboolean result = (jboolean) alcIsExtensionPresent((ALCdevice*) deviceaddress, functionname); env->ReleaseStringUTFChars((jstring)functionname, 0); CHECK_ALC_ERROR return result; } /** * This function retrieves the enum value for a specified enumeration name. * * C Specification: * ALenum alcGetEnumValue(ALCdevice *device, ALubyte *enumName); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_ALC_getEnumValue (JNIEnv *env, jobject obj, jobject device, jstring enumName) { /* get device address */ jclass device_class = env->GetObjectClass(device); jfieldID device_field = env->GetFieldID(device_class, "device", "I"); jint deviceaddress = env->GetIntField(device, device_field); /* get extension */ ALubyte* enumerationname = (ALubyte*) (env->GetStringUTFChars(enumName, 0)); jint result = (jint) alcGetEnumValue((ALCdevice*) deviceaddress, enumerationname); env->ReleaseStringUTFChars((jstring)enumerationname, 0); CHECK_ALC_ERROR return result; } --- NEW FILE: org_lwjgl_openal_ALUT.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_ALUT.cpp /* * 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: org_lwjgl_openal_ALUT.cpp,v 1.1 2002/11/25 13:52:23 elias_naur Exp $ * * This is the actual JNI implementation of the OpenAL utility library. * It handles whatever is needed for proper OpenAL support via using Java. * * @author Brian Matzon <br...@ma...> * @version $Revision: 1.1 $ */ #include "org_lwjgl_openal_ALUT.h" #include "checkALerror.h" /* OpenAL includes */ #include <AL/alut.h> #include <stdlib.h> /* * Class: org_lwjgl_openal_ALUT * Method: nCreate * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_ALUT_nCreate (JNIEnv *env, jobject obj) { return true; } /* * Class: org_lwjgl_openal_ALUT * Method: nDestroy * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALUT_nDestroy (JNIEnv *env, jobject obj) { } /** * This function initializes OpenAL. * * C Specification: * void alutInit(int *argc, char *argv[]); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALUT_init (JNIEnv *env, jobject obj, jobjectArray jargv) { /* obtain the size the array */ jsize argc = env->GetArrayLength(jargv); /* Declare a char array for argv */ const char* argv[128]; int i; for (i=0;i<argc;i++) { /* obtain the current object from the object array */ jstring string = (jstring) env->GetObjectArrayElement(jargv, i); /* Convert the object just obtained into a String */ const char *str = env->GetStringUTFChars(string, 0); /* Build the argv array */ argv[i] = str; /* Free up memory to prevent memory leaks */ env->ReleaseStringUTFChars(string, str); } /* Increment argc to adjust the difference between Java and C arguments */ argc++; /* call the actual implementation */ alutInit((ALint*) &argc,(char**) argv); CHECK_AL_ERROR } /* * This function loads a WAV file into memory from a file. * * C Specification: * ALboolean alutLoadWAVFile(const char *fname, ALsizei *format, ALsizei *size, ALsizei *bits, * ALsizei *freq, ALboolean *loop ); */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALUT_loadWAVFile (JNIEnv *env, jobject obj, jstring file) { /* * NOTE: Since Java doesn't support modification of supplied * variables (pass by value). We will return a class that * holds what is needed to unload the file again. * The data field contains the offset at whcih the data * segment begins (ie. a pointer). This will *not* work * on 64 bit platforms, since we use an jint for this. */ /* actual file info object */ jobject alutLoadWAVFile_object = NULL; /* class type to find */ jclass alutLoadWAVFile_class = NULL; /* method id - will be set to constructor of alutLoadWAVData */ jmethodID methodID = NULL; /* sound data vars */ jint format, size, freq; jboolean loop; void* data; ALbyte* filename = (ALbyte*) (env->GetStringUTFChars(file, 0)); /* load wave file */ alutLoadWAVFile(filename, (ALenum*) &format, (void**) &data, (ALsizei*) &size, (ALsizei*) &freq, (ALboolean*) &loop); /* get class */ alutLoadWAVFile_class = env->FindClass("org/lwjgl/openal/ALUTLoadWAVData"); /* get constructor */ methodID = env->GetMethodID(alutLoadWAVFile_class, "<init>", "(IIIIZ)V"); /* create object */ alutLoadWAVFile_object = env->NewObject(alutLoadWAVFile_class, methodID, format, (int) data, size, freq, loop); /* release chars */ env->ReleaseStringUTFChars((jstring)filename, 0); CHECK_AL_ERROR return alutLoadWAVFile_object; } /** * This function loads a WAV file into memory from another memory location. * * C Specification: * ALvoid alutLoadWAVMemory(ALbyte *memory,ALenum *format,ALvoid **data,ALsizei * *size,ALsizei *freq,ALboolean *loop) */ JNIEXPORT jobject JNICALL Java_org_lwjgl_openal_ALUT_loadWAVMemory (JNIEnv *env, jobject obj, jint buffer) { /* * NOTE: Since Java doesn't support modification of supplied * variables (pass by value). We will return a class that * holds what is needed to unload the file again. * The data field contains the offset at whcih the data * segment begins (ie. a pointer). This will *not* work * on 64 bit platforms, since we use an jint for this. */ /* actual file info object */ jobject alutLoadWAVFile_object = NULL; /* class type to find */ jclass alutLoadWAVFile_class = NULL; /* method id - will be set to constructor of alutLoadWAVData */ jmethodID methodID = NULL; /* sound data vars */ jint format, size, freq; jboolean loop; void* data; /* load wave from mem */ alutLoadWAVMemory((ALbyte*) buffer, (ALenum*) &format, (void**) &data, (ALsizei*) &size, (ALsizei*) &freq, (ALboolean*) &loop); /* get class */ alutLoadWAVFile_class = env->FindClass("org/lwjgl/openal/ALUTLoadWAVData"); /* get constructor */ methodID = env->GetMethodID(alutLoadWAVFile_class, "<init>", "(IIIIZ)V"); /* create object */ alutLoadWAVFile_object = env->NewObject(alutLoadWAVFile_class, methodID, format, (int) data, size, freq, loop); CHECK_AL_ERROR return alutLoadWAVFile_object; } /** * This function unloads a WAV file from memory and is normally used after copying the data into a buffer * after an alutLoad* function. * * C Specification: * ALvoid alutUnloadWAV(ALenum format, ALvoid *data, ALsizei size, ALsizei freq) */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALUT_unloadWAV (JNIEnv *env, jobject obj, jint format, jint data, jint size, jint freq) { alutUnloadWAV(format, (void**) data, size, freq); CHECK_AL_ERROR } /** * This function exits OpenAL. * * C Specification: * void alutExit(ALvoid); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_ALUT_exit (JNIEnv *env, jobject obj) { alutExit(); } --- NEW FILE: org_lwjgl_openal_BaseAL.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_BaseAL.cpp /* * 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_BaseAL.h" /* * Class: org_lwjgl_openal_BaseAL * Method: nCreate * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_BaseAL_nCreate (JNIEnv *env, jobject obj) { return true; } /* * Class: org_lwjgl_openal_BaseAL * Method: nDestroy * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_BaseAL_nDestroy(JNIEnv *env, jobject obj) { } --- NEW FILE: org_lwjgl_openal_CoreAL.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_CoreAL.cpp /* * 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: org_lwjgl_openal_CoreAL.cpp,v 1.1 2002/11/25 13:52:23 elias_naur Exp $ * * This is the actual JNI implementation of the OpenAL core. It handles * whatever is needed for proper OpenAL support via using Java. * * @author Brian Matzon <br...@ma...> * @version $Revision: 1.1 $ */ #include "org_lwjgl_openal_CoreAL.h" #include "checkALerror.h" /* OpenAL includes */ #include <AL/al.h> /** * This function enables a feature of the OpenAL driver. * * C Specification: * ALvoid alEnable(ALenum capability); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_enable (JNIEnv *env, jobject obj, jint capability) { alEnable((ALenum) capability); CHECK_AL_ERROR } /** * This function disables a feature of the OpenAL driver. * * C Specification: * ALvoid alDisable(ALenum capability); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_disable (JNIEnv *env, jobject obj, jint capability) { alDisable((ALenum) capability); CHECK_AL_ERROR } /** * This function returns a boolean indicating if a specific feature is enabled in the OpenAL driver. * * C Specification: * Alboolean alIsEnabled(ALenum capability); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_CoreAL_isEnabled (JNIEnv *env, jobject obj, jint capability) { jboolean result = (jboolean) alIsEnabled((ALenum) capability); CHECK_AL_ERROR return result; } /** * This function Enables a feature of the OpenAL driver. * * C Specification * ALvoid alHint(ALenum target, ALenum mode); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_hint (JNIEnv *env, jobject obj, jint target, jint mode) { //alHint((ALint)target, (ALint)mode); //cannot link with above statement return; } /** * This function returns a boolean OpenAL state. * * C Specification: * Alboolean alGetBoolean(ALenum pname); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_CoreAL_getBoolean (JNIEnv *env, jobject obj, jint pname) { jboolean result = (jboolean) alGetBoolean((ALenum) pname); CHECK_AL_ERROR return result; } /** * This function returns an integer OpenAL state. * * C Specification: * Alint alGetInteger(ALenum pname); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreAL_getInteger (JNIEnv *env, jobject obj, jint pname) { jint result = (jint) alGetInteger((ALenum) pname); CHECK_AL_ERROR return result; } /** * This function returns a floating point OpenAL state. * * C Specification: * ALfloat alGetFloat(ALenum pname); */ JNIEXPORT jfloat JNICALL Java_org_lwjgl_openal_CoreAL_getFloat (JNIEnv *env, jobject obj, jint pname) { jfloat result = (jfloat) alGetFloat((ALenum) pname); CHECK_AL_ERROR return result; } /** * This function returns a double precision floating point OpenAL state. * * C Specification: * Aldouble alGetDouble(ALenum pname); */ JNIEXPORT jdouble JNICALL Java_org_lwjgl_openal_CoreAL_getDouble (JNIEnv *env, jobject obj, jint pname) { jdouble result = (jdouble) alGetDouble((ALenum) pname); CHECK_AL_ERROR return result; } /** * This function retrieves a boolean OpenAL state. * * C Specification: * ALvoid alGetBooleanv(ALenum pname,ALboolean *data); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getBooleanv (JNIEnv *env, jobject obj, jint pname, jint data) { alGetBooleanv((ALenum) pname, (ALboolean*) data); CHECK_AL_ERROR } /** * This function retrieves an integer OpenAL state. * * C Specification: * ALvoid alGetIntegerv(ALenum pname,ALint *data); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getIntegerv (JNIEnv *env, jobject obj, jint pname, jint data) { alGetIntegerv((ALenum) pname, (ALint*) data); CHECK_AL_ERROR } /** * This function retrieves a floating point OpenAL state. * * C Specification: * ALvoid alGetFloatv(ALenum pname,ALfloat *data); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getFloatv (JNIEnv *env, jobject obj, jint pname, jint data) { alGetFloatv((ALenum) pname, (ALfloat*) data); CHECK_AL_ERROR } /** * This function retrieves a double precision floating point OpenAL state. * * C Specification: * ALvoid alGetDoublev(ALenum pname,ALdouble *data); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getDoublev (JNIEnv *env, jobject obj, jint pname, jint data) { alGetDoublev((ALenum) pname, (ALdouble*) data); CHECK_AL_ERROR } /** * This function retrieves an OpenAL string property. * * C Specification: * ALubyte * alGetString(ALenum pname); */ JNIEXPORT jstring JNICALL Java_org_lwjgl_openal_CoreAL_getString (JNIEnv *env, jobject obj, jint param) { jstring string = (jstring) env->NewStringUTF((const char*) alGetString((ALenum)param)); CHECK_AL_ERROR return string; } /** * This function returns the current error state and then clears the error state. * * C Specification: * ALenum alGetError(ALvoid); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreAL_getError (JNIEnv *env, jobject obj) { jint result = (jint) alGetError(); CHECK_AL_ERROR return result; } /** * This function tests if a specific extension is available for the OpenAL driver. * * C Specification: * ALboolean alIsExtensionPresent(ALubyte *extName); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_CoreAL_isExtensionPresent (JNIEnv *env, jobject obj, jstring fname) { ALubyte* functionname = (ALubyte*) (env->GetStringUTFChars(fname, 0)); jboolean result = (jboolean) alIsExtensionPresent(functionname); env->ReleaseStringUTFChars((jstring)functionname, 0); CHECK_AL_ERROR return result; } /** * This function returns the enumeration value of an OpenAL enum described by a string. * * C Specification: * ALenum alGetEnumValue(ALubyte *enumName); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_CoreAL_getEnumValue (JNIEnv *env, jobject obj, jstring ename) { ALubyte* functionname = (ALubyte*) (env->GetStringUTFChars(ename, 0)); jint result = (jint) alGetEnumValue(functionname); env->ReleaseStringUTFChars((jstring)functionname, 0); CHECK_AL_ERROR return result; } /** * This function sets an integer property of the listener. * * C Specification: * ALvoid alListeneri(ALenum pname,ALint value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_listeneri (JNIEnv *env, jobject obj, jint pname, jint value) { alListeneri((ALenum) pname, (ALint) value); CHECK_AL_ERROR } /** * This function sets a floating point property for the listener. * * C Specification: * ALvoid alListenerf(ALenum pname,ALfloat value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_listenerf (JNIEnv *env, jobject obj, jint pname, jfloat value) { alListenerf((ALenum) pname, (ALfloat) value); CHECK_AL_ERROR } /** * This function sets a floating point property for the listener. * * C Specification: * ALvoid alListener3f(ALenum pname,ALfloat v1,ALfloat v2,ALfloat v3); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_listener3f (JNIEnv *env, jobject obj, jint pname, jfloat v1, jfloat v2, jfloat v3) { alListener3f((ALenum) pname, (ALfloat) v1, (ALfloat) v2, (ALfloat) v3); CHECK_AL_ERROR } /** * This function sets a floating point-vector property of the listener. * * C Specification: * ALvoid alListenerfv(ALenum pname,ALfloat *values); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_listenerfv (JNIEnv *env, jobject obj, jint pname, jint values) { alListenerfv((ALenum) pname, (ALfloat*) values); CHECK_AL_ERROR } /** * This function retrieves an integer property of the listener. * * C Specification: * ALvoid alGetListeneri(ALenum pname,ALint *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getListeneri (JNIEnv *env, jobject obj, jint pname, jint value) { alGetListeneri((ALenum) pname, (ALint*) value); CHECK_AL_ERROR } /** * This function retrieves a floating point property of the listener. * * C Specification: * ALvoid alGetListenerf(ALenum pname,ALfloat *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getListenerf (JNIEnv *env, jobject obj, jint pname, jint value) { alGetListenerf((ALenum) pname, (ALfloat*) value); CHECK_AL_ERROR } /** * This function retrieves a set of three floating point values from a property of the listener. * * C Specification: * ALvoid alGetListener3f(ALenum pname,ALfloat *v1,ALfloat *v2,ALfloat *v3); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getListener3f (JNIEnv *env, jobject obj, jint pname, jint v1, jint v2, jint v3) { alGetListener3f((ALenum) pname, (ALfloat*) v1, (ALfloat*) v2, (ALfloat*) v3); CHECK_AL_ERROR } /** * This function retrieves a floating point-vector property of the listener. * * C Specification: * ALvoid alGetListenerfv(ALenum pname,ALfloat *values); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getListenerfv (JNIEnv *env, jobject obj, jint pname, jint values) { alGetListenerfv((ALenum) pname, (ALfloat*) values); CHECK_AL_ERROR } /** * This function generates one or more sources. * * C Specification: * ALvoid alGenSources(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_genSources (JNIEnv *env, jobject obj, jint n, jint sources) { alGenSources(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function deletes one or more sources. * * C Specification: * ALvoid alDeleteSources(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_deleteSources (JNIEnv *env, jobject obj, jint n, jint sources) { alDeleteSources(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function tests if a source name is valid. * * C Specification: * Alboolean alIsSource(ALuint source); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_CoreAL_isSource (JNIEnv *env, jobject obj, jint source) { jboolean result = (jboolean) alIsSource((ALuint) source); CHECK_AL_ERROR return result; } /** * This function sets an integer property of a source. * * C Specification: * ALvoid alSourcei(ALuint source,ALenum pname,ALint value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcei (JNIEnv *env, jobject obj, jint source, jint pname, jint value) { alSourcei((ALuint) source, (ALenum) pname, (ALint) value); CHECK_AL_ERROR } /** * This function sets a floating point property of a source. * * C Specification: * ALvoid alSourcef(ALuint source,ALenum pname,ALfloat value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcef (JNIEnv *env, jobject obj, jint source, jint pname, jfloat value) { alSourcef((ALuint) source, (ALenum) pname, (ALfloat) value); CHECK_AL_ERROR } /** * This function sets a source property requiring three floating point values. * C Specification: * ALvoid alSource3f(ALuint source,ALenum pname,ALfloat v1,ALfloat v2,ALfloat v3); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_source3f (JNIEnv *env, jobject obj, jint source, jint pname, jfloat v1, jfloat v2, jfloat v3) { alSource3f((ALuint) source, (ALenum) pname, (ALfloat) v1, (ALfloat) v2, (ALfloat) v3); CHECK_AL_ERROR } /** * This function sets a floating point-vector property of a source. * * C Specification: * ALvoid alSourcefv(ALuint source,ALenum pname,ALfloat *values); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcefv (JNIEnv *env, jobject obj, jint source, jint pname, jint values) { alSourcefv((ALuint) source, (ALenum) pname, (ALfloat*) values); CHECK_AL_ERROR } /** * This function retrieves an integer property of a source. * C Specification: * ALvoid alGetSourcei(ALuint source,ALenum pname,ALint *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getSourcei (JNIEnv *env, jobject obj, jint source, jint pname, jint value) { alGetSourcei((ALuint) source, (ALenum) pname, (ALint*) value); CHECK_AL_ERROR } /** * This function retrieves a floating point property of a source. * * C Specification: * ALvoid alGetSourcef(ALuint source,ALenum pname,ALfloat *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getSourcef (JNIEnv *env, jobject obj, jint source, jint pname, jint value) { alGetSourcef((ALuint) source, (ALenum) pname, (ALfloat*) value); CHECK_AL_ERROR } /** * This function retrieves a floating point-vector property of a source. * * C Specification: * ALvoid alGetSourcefv(ALuint source,ALenum pname,ALfloat *values); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getSourcefv (JNIEnv *env, jobject obj, jint source, jint pname, jint values) { alGetSourcefv((ALuint) source, (ALenum) pname, (ALfloat*) values); CHECK_AL_ERROR } /** * This function plays a set of sources. * * C Specification: * ALvoid alSourcePlayv(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcePlayv (JNIEnv *env, jobject obj, jint n, jint sources) { alSourcePlayv(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function pauses a set of sources. * * C Specification: * ALvoid alSourcePausev(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcePausev (JNIEnv *env, jobject obj, jint n, jint sources) { alSourcePausev(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function stops a set of sources. * * C Specification: * ALvoid alSourceStopv(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceStopv (JNIEnv *env, jobject obj, jint n, jint sources) { alSourceStopv(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function stops a set of sources and sets all their states to AL_INITIAL. * * C Specification: * ALvoid alSourceRewindv(ALsizei n,ALuint *sources); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceRewindv (JNIEnv *env, jobject obj, jint n, jint sources) { alSourceRewindv(n, (ALuint*) sources); CHECK_AL_ERROR } /** * This function plays a source. * * C Specification: * ALvoid alSourcePlay(ALuint source); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcePlay (JNIEnv *env, jobject obj, jint source) { alSourcePlay((ALuint) source); CHECK_AL_ERROR } /* * This function pauses a source. * * C Specification: * ALvoid alSourcePause(ALuint source); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourcePause (JNIEnv *env, jobject obj, jint source) { alSourcePause((ALuint) source); CHECK_AL_ERROR } /** * This function stops a source. * * C Specification: * ALvoid alSourceStop(ALuint source); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceStop (JNIEnv *env, jobject obj, jint source) { alSourceStop((ALuint) source); CHECK_AL_ERROR } /** * This function stops the source and sets its state to AL_INITIAL. * * C Specification: * ALvoid alSourceRewind(ALuint source); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceRewind (JNIEnv *env, jobject obj, jint source) { alSourceRewind((ALuint) source); CHECK_AL_ERROR } /** * This function generates one or more buffers. * * C Specification: * ALvoid alGenBuffers(ALsizei n,ALuint *buffers); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_genBuffers (JNIEnv *env, jobject obj, jint n, jint buffers) { alGenBuffers(n, (ALuint*) buffers); CHECK_AL_ERROR } /** * This function deletes one or more buffers. * * C Specification: * ALvoid alDeleteBuffers(ALsizei n,ALuint *buffers); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_deleteBuffers (JNIEnv *env, jobject obj, jint n, jint buffers) { alDeleteBuffers(n, (ALuint*) buffers); CHECK_AL_ERROR } /** * This function tests if a buffer name is valid. * * C Specification: * Alboolean alIsBuffer(ALuint buffer); */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_CoreAL_isBuffer (JNIEnv *env, jobject obj, jint buffer) { jboolean result = (jboolean) alIsBuffer((ALuint) buffer); CHECK_AL_ERROR return result; } /** * This function fills a buffer with audio data. * * C Specification: * ALvoid alBufferData(ALuint buffer,ALenum format,ALvoid *data,ALsizei size,ALsizei freq); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_bufferData (JNIEnv *env, jobject obj, jint buffer, jint format, jint data, jint size, jint freq) { alBufferData(buffer, format, (void**) data, size, freq); CHECK_AL_ERROR } /** * This function retrieves an integer property of a buffer. * * C Specification: * ALvoid alGetBufferi(ALuint buffer,ALenum pname,ALint *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getBufferi (JNIEnv *env, jobject obj, jint buffer, jint pname, jint value) { alGetBufferi((ALuint) buffer, (ALenum) pname, (ALint*) value); CHECK_AL_ERROR } /** * This function retrieves a floating point property of a buffer. * * C Specification: * ALvoid alGetBufferf(ALuint buffer,ALenum pname,ALfloat *value); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_getBufferf (JNIEnv *env, jobject obj, jint buffer, jint pname, jint value) { alGetBufferf((ALuint) buffer, (ALenum) pname, (ALfloat*) value); CHECK_AL_ERROR } /** * This function queues a set of buffers on a source. * * C Specification: * ALvoid alSourceQueueBuffers( ALuint source, ALsizei n, ALuint* buffers ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceQueueBuffers (JNIEnv *env, jobject obj, jint source, jint n, jint buffers) { alSourceQueueBuffers((ALuint) source, (ALsizei) n, (ALuint*) buffers); CHECK_AL_ERROR } /** * This function unqueues a set of buffers attached to a source. * * C Specification: * ALvoid alSourceUnqueueBuffers( ALuint source, ALsizei n, ALuint* buffers ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_sourceUnqueueBuffers (JNIEnv *env, jobject obj, jint source, jint n, jint buffers) { alSourceUnqueueBuffers((ALuint) source, (ALsizei) n, (ALuint*) buffers); CHECK_AL_ERROR } /** * This function selects the OpenAL distance model. * * C Specification: * ALvoid alDistanceModel( ALenum value ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_distanceModel (JNIEnv *env, jobject obj, jint value) { alDistanceModel((ALenum) value); CHECK_AL_ERROR } /** * This function selects the OpenAL Doppler factor value. * * C Specification: * ALvoid alDopplerFactor( ALfloat value ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_dopplerFactor (JNIEnv *env, jobject obj, jfloat value) { alDopplerFactor((ALfloat) value); CHECK_AL_ERROR } /** * This function selects the OpenAL Doppler velocity value. * * C Specification: * ALvoid alDopplerVelocity( ALfloat value ); */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_dopplerVelocity (JNIEnv *env, jobject obj, jfloat value) { alDopplerVelocity((ALfloat) value); CHECK_AL_ERROR } --- NEW FILE: org_lwjgl_openal_eax_BaseEAX.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_eax_BaseEAX.cpp /* * 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_eax_BaseEAX.h" /* * Class: org_lwjgl_openal_eax_BaseEAX * Method: nCreate * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_eax_BaseEAX_nCreate (JNIEnv *env, jobject obj) { #ifdef _WIN32 return true; #else return false; #endif } /* * Class: org_lwjgl_openal_eax_BaseEAX * Method: nDestroy * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_BaseEAX_nDestroy (JNIEnv *env, jobject obj) { } --- NEW FILE: org_lwjgl_openal_eax_CoreEAX.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_eax_CoreEAX.cpp /* * 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: org_lwjgl_openal_eax_CoreEAX.cpp,v 1.1 2002/11/25 13:52:23 elias_naur Exp $ * * This is the actual JNI implementation of the OpenAL EAX library. * * @author Brian Matzon <br...@ma...> * @version $Revision: 1.1 $ */ #include "org_lwjgl_openal_eax_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_eax_CoreEAX_determineAvailableExtensions (JNIEnv *env, jobject obj) { #ifdef _WIN32 bool EAXSupported = false; //check that we have a current context if(alcGetCurrentContext() == NULL) { ThrowException(env, "Unable to determine EAX Extensions: No current context"); } //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); } //throw exception if no EAX support if(EAXSupported != true) { ThrowException(env, "Unable to determine EAX Extensions"); } #else ThrowException(env, "EAX extensions not supported"); #endif } JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_CoreEAX_setGUID (JNIEnv *env, jobject obj) { #ifdef _WIN32 //get class/fields jclass eax_class = env->FindClass("org/lwjgl/openal/eax/CoreEAX"); jfieldID eaxBuffer_field = env->GetStaticFieldID(eax_class, "BUFFER_GUID", "I"); jfieldID eaxListener_field = env->GetStaticFieldID(eax_class, "LISTENER_GUID", "I"); //set fields env->SetStaticIntField(eax_class, eaxBuffer_field, (jint) &DSPROPSETID_EAX20_BufferProperties); env->SetStaticIntField(eax_class, eaxListener_field, (jint) &DSPROPSETID_EAX20_ListenerProperties); #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_eax_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 ThrowException(env, "EAX extensions not supported"); #endif } /* * This function sets an EAX value. * * C Specification: * ALenum EAXSet(const struct _GUID *propertySetID,ALuint property,ALuint source,ALvoid * *value,ALuint size); */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_CoreEAX_eaxSet (JNIEnv *env, jobject obj, jint propertySetID, jint property, jint source, jint value, jint size) { #ifdef _WIN32 jint result = (jint) eaxSet((const struct _GUID*)propertySetID, (ALuint) property, (ALuint) source, (ALvoid*) value, (ALuint) size); CHECK_AL_ERROR return result; #else ThrowException(env, "EAX extensions not supported"); #endif } --- NEW FILE: org_lwjgl_openal_eax_EAXBufferProperties.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_eax_EAXBufferProperties.cpp /* * 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_eax_EAXBufferProperties.h" #include <stddef.h> #ifdef _WIN32 #include <eax.h> #endif /* * Class: org_lwjgl_openal_eax_EAXBufferProperties * Method: sizeOfEaxBufferProperties * Signature: ()I */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAXBufferProperties_sizeOfEaxBufferProperties(JNIEnv *env, jobject obj) { #ifdef _WIN32 return sizeof(EAXBUFFERPROPERTIES); #endif } /* * Class: org_lwjgl_openal_eax_EAXBufferProperties * Method: assignOffsets * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAXBufferProperties_assignOffsets(JNIEnv *env, jobject obj) { #ifdef _WIN32 jclass listener_class; jfieldID field; //get class/fields listener_class = env->FindClass("org/lwjgl/openal/eax/EAXBufferProperties"); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "direct_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lDirect)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "directHF_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lDirectHF)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "room_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lRoom)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "roomHF_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lRoomHF)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "roomRolloffFactor_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, flRoomRolloffFactor)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "obstruction_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lObstruction)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "obstructionLFRatio_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, flObstructionLFRatio)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "occlusion_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lOcclusion)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "occlusionLFRatio_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, flOcclusionLFRatio)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "occlusionRoomRatio_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, flOcclusionRoomRatio)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "outsideVolumeHF_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, lOutsideVolumeHF)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "airAbsorptionFactor_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, flAirAbsorptionFactor)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "flags_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXBUFFERPROPERTIES, dwFlags)); #endif } --- NEW FILE: org_lwjgl_openal_eax_EAXListenerProperties.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_openal_eax_EAXListenerProperties.cpp /* * 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_eax_EAXListenerProperties.h" #include <stddef.h> #ifdef _WIN32 #include <eax.h> #endif /* * Class: org_lwjgl_openal_eax_EAXListenerProperties * Method: sizeOfEaxListenerProperties * Signature: ()I */ JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAXListenerProperties_sizeOfEaxListenerProperties(JNIEnv *env, jobject obj) { #ifdef _WIN32 return sizeof(EAXLISTENERPROPERTIES); #endif } /* * Class: org_lwjgl_openal_eax_EAXListenerProperties * Method: assignOffsets * Signature: ()V */ JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAXListenerProperties_assignOffsets (JNIEnv *env, jobject obj) { #ifdef _WIN32 jclass listener_class; jfieldID field; //get class/fields listener_class = env->FindClass("org/lwjgl/openal/eax/EAXListenerProperties"); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "room_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, lRoom)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "roomHF_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, lRoomHF)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "roomRolloffFactor_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flRoomRolloffFactor)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "decayTime_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flDecayTime)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "decayHFRatio_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flDecayHFRatio)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "reflections_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, lReflections)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "reflectionsDelay_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flReflectionsDelay)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "reverb_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, lReverb)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "reverbDelay_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flReverbDelay)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "environment_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, dwEnvironment)); //set environmentDiffusion_offset field = env->GetStaticFieldID(listener_class, "environmentSize_offset", "I"); env->SetStaticIntField(listener_class, field, offsetof(EAXLISTENERPROPERTIES, flEnvironmentSize)); //set environm... [truncated message content] |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:39:48
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/win32 In directory sc8-pr-cvs1:/tmp/cvs-serv22124/win32 Removed Files: extal.c Log Message: Moved AL utility files to common --- extal.c DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/win32/extal.c |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:39:48
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv22124/linux Removed Files: checkALerror.h extal.c Log Message: Moved AL utility files to common --- checkALerror.h DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/checkALerror.h --- extal.c DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/extal.c |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:39:48
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv22124/common Modified Files: checkALerror.h Added Files: extal.c Log Message: Moved AL utility files to common --- NEW FILE: extal.c --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/extal.c /* * 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: extal.c,v 1.1 2002/11/25 13:39:45 elias_naur Exp $ * * This file contains the AL extension assigning mechanism * * @author Brian Matzon <br...@ma...> * @version $Revision: 1.1 $ */ Index: checkALerror.h CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/checkALerror.h =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/common/checkALerror.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- checkALerror.h 27 Aug 2002 20:44:19 -0000 1.2 +++ checkALerror.h 25 Nov 2002 13:39:44 -0000 1.3 @@ -13,7 +13,7 @@ #ifdef _DEBUG #include <jni.h> -#include <al.h> +#include <AL/al.h> #define CHECK_AL_ERROR \ { \ @@ -42,4 +42,4 @@ #endif /* _DEBUG */ -#endif /* _CHECKGLERROR_H_INCLUDED_ */ \ No newline at end of file +#endif /* _CHECKGLERROR_H_INCLUDED_ */ |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:36:39
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/win32 In directory sc8-pr-cvs1:/tmp/cvs-serv19966/win32 Removed Files: org_lwjgl_opengl_GLU.cpp Log Message: Moved GLU.cpp to common --- org_lwjgl_opengl_GLU.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/win32/org_lwjgl_opengl_GLU.cpp |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:36:39
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv19966/linux Removed Files: org_lwjgl_opengl_GLU.cpp Log Message: Moved GLU.cpp to common --- org_lwjgl_opengl_GLU.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_GLU.cpp |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:36:38
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv19966/common Added Files: org_lwjgl_opengl_GLU.cpp Log Message: Moved GLU.cpp to common --- NEW FILE: org_lwjgl_opengl_GLU.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_opengl_GLU.cpp /* * 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: org_lwjgl_opengl_GLU.cpp,v 1.1 2002/11/25 13:36:35 elias_naur Exp $ * * GLU library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_opengl_GLU.h" #include "extgl.h" #include "checkGLerror.h" #include "GL/glu.h" /* * Class: org_lwjgl_opengl_GLU * Method: getString */ JNIEXPORT jstring JNICALL Java_org_lwjgl_opengl_GLU_getString(JNIEnv * env, jobject obj, jint p0) { const char * msg = (const char *) gluGetString((GLint) p0); jstring ret = env->NewStringUTF(msg); return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: errorString */ JNIEXPORT jstring JNICALL Java_org_lwjgl_opengl_GLU_errorString(JNIEnv * env, jobject obj, jint p0) { const GLubyte * msg = gluErrorString((GLint) p0); jstring ret = env->NewStringUTF((const char *) msg); return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: ortho2D */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLU_ortho2D(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jdouble p3) { gluOrtho2D((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (GLdouble) p3); CHECK_GL_ERROR } /* * Class: org_lwjgl_opengl_GLU * Method: perspective */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLU_perspective(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jdouble p3) { gluPerspective((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (GLdouble) p3); CHECK_GL_ERROR } /* * Class: org_lwjgl_opengl_GLU * Method: pickMatrix */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLU_pickMatrix(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jdouble p3, jint p4) { gluPickMatrix((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (GLdouble) p3, (GLint *) p4); CHECK_GL_ERROR } /* * Class: org_lwjgl_opengl_GLU * Method: lookAt */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLU_lookAt(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jdouble p3, jdouble p4, jdouble p5, jdouble p6, jdouble p7, jdouble p8) { gluLookAt((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (GLdouble) p3, (GLdouble) p4, (GLdouble) p5, (GLdouble) p6, (GLdouble) p7, (GLdouble) p8); CHECK_GL_ERROR } /* * Class: org_lwjgl_opengl_GLU * Method: project */ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_GLU_project(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jint p3, jint p4, jint p5, jint p6, jint p7, jint p8) { jint ret = (jint) gluProject((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (const GLdouble *) p3, (const GLdouble *) p4, (const GLint *) p5, (GLdouble *) p6, (GLdouble *) p7, (GLdouble *) p8); CHECK_GL_ERROR return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: unProject */ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_GLU_unProject(JNIEnv * env, jobject obj, jdouble p0, jdouble p1, jdouble p2, jint p3, jint p4, jint p5, jint p6, jint p7, jint p8) { jint ret = (jint) gluUnProject((GLdouble) p0, (GLdouble) p1, (GLdouble) p2, (const GLdouble *) p3, (const GLdouble *) p4, (const GLint *) p5, (GLdouble *) p6, (GLdouble *) p7, (GLdouble *) p8); CHECK_GL_ERROR return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: scaleImage */ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_GLU_scaleImage(JNIEnv * env, jobject obj, jint p0, jint p1, jint p2, jint p3, jint p4, jint p5, jint p6, jint p7, jint p8) { jint ret = (jint) gluScaleImage((GLint) p0, (GLint) p1, (GLint) p2, (GLint) p3, (const void *) p4, (GLint) p5, (GLint) p6, (GLint) p7, (void *) p8); CHECK_GL_ERROR return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: build1DMipmaps */ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_GLU_build1DMipmaps(JNIEnv * env, jobject obj, jint p0, jint p1, jint p2, jint p3, jint p4, jint p5) { jint ret = (jint) gluBuild1DMipmaps((GLint) p0, (GLint) p1, (GLint) p2, (GLint) p3, (GLint) p4, (const void *) p5); CHECK_GL_ERROR return ret; } /* * Class: org_lwjgl_opengl_GLU * Method: build2DMipmaps */ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_GLU_build2DMipmaps(JNIEnv * env, jobject obj, jint p0, jint p1, jint p2, jint p3, jint p4, jint p5, jint p6) { jint ret = (jint) gluBuild2DMipmaps((GLint) p0, (GLint) p1, (GLint) p2, (GLint) p3, (GLint) p4, (GLint) p5, (const void *) p6); CHECK_GL_ERROR return ret; } |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:33:15
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv18214/common Added Files: org_lwjgl_opengl_CoreGL.cpp org_lwjgl_opengl_GL.cpp Log Message: Moved org_lwjgl_opengl_GL.cpp to common (again) --- NEW FILE: org_lwjgl_opengl_CoreGL.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_opengl_CoreGL.cpp /* * 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. * [...4309 lines suppressed...] */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_CoreGL_multTransposeMatrixf (JNIEnv *env, jobject obj, jint m) { glMultTransposeMatrixf((float *)m); CHECK_GL_ERROR } /* * Class: org_lwjgl_opengl_CoreGL * Method: sampleCoverage * Signature: (FZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_CoreGL_sampleCoverage (JNIEnv *env, jobject obj, jfloat value, jboolean invert) { glSampleCoverage(value, invert); CHECK_GL_ERROR } --- NEW FILE: org_lwjgl_opengl_GL.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_opengl_GL.cpp /* * 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. * [...4123 lines suppressed...] } /* * Class: org_lwjgl_opengl_GL * Method: checkWGLExtensionsString */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL_checkWGLExtensionsString(JNIEnv * env, jclass clazz) { #ifdef _WIN32 jfieldID fid_WGL_ARB_extensions_string = env->GetStaticFieldID(clazz, "WGL_ARB_extensions_string", "Z"); jfieldID fid_WGL_EXT_extensions_string = env->GetStaticFieldID(clazz, "WGL_EXT_extensions_string", "Z"); if (wglGetExtensionsStringARB) env->SetStaticBooleanField(clazz, fid_WGL_ARB_extensions_string, JNI_TRUE); if (wglGetExtensionsStringEXT) env->SetStaticBooleanField(clazz, fid_WGL_EXT_extensions_string, JNI_TRUE); #endif } |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:32:20
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/win32 In directory sc8-pr-cvs1:/tmp/cvs-serv17676/win32 Removed Files: org_lwjgl_opengl_CoreGL.cpp org_lwjgl_opengl_GL.cpp Log Message: Moved org_lwjgl_opengl_GL.cpp to common --- org_lwjgl_opengl_CoreGL.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/win32/org_lwjgl_opengl_CoreGL.cpp --- org_lwjgl_opengl_GL.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/win32/org_lwjgl_opengl_GL.cpp |
|
From: Elias N. <eli...@us...> - 2002-11-25 13:32:20
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv17676/linux Removed Files: org_lwjgl_opengl_CoreGL.cpp org_lwjgl_opengl_GL.cpp Log Message: Moved org_lwjgl_opengl_GL.cpp to common --- org_lwjgl_opengl_CoreGL.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_CoreGL.cpp --- org_lwjgl_opengl_GL.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_GL.cpp |
Update of /cvsroot/java-game-lib/LWJGL/src/native/common In directory sc8-pr-cvs1:/tmp/cvs-serv9414/common Added Files: MatrixOpCommon.cpp MatrixOpCommon.h org_lwjgl_Math.cpp org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpNormalise_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpSubtract_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpSubtract_MatrixOpSafe.cpp Log Message: Moved Math functions to common --- NEW FILE: MatrixOpCommon.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/MatrixOpCommon.cpp //#include <iostream> #include <jni.h> #include <memory.h> #include "MatrixOpCommon.h" bool Matrix::identicalDataSpaces(Matrix & other) { if (address != other.address) return JNI_FALSE; if (stride != other.stride) return JNI_FALSE; if ((width * height) != (other.width * other.height)) return JNI_FALSE; return JNI_TRUE; } bool Matrix::intersectingDataSpaces(Matrix & other) { char * my_max_address = &address[ stride * elements ]; char * other_max_address = &other.address[ other.stride * other.elements]; if (address >= other.address || address <= other_max_address) return JNI_TRUE; if (other.address >= address || other.address <= my_max_address) return JNI_TRUE; return JNI_FALSE; } void Matrix::transposeMatrix(float * src, float * dst, int src_width, int src_height) { // square matrix transpose if (src_width == src_height) { for (int i = 0; i < src_width; i++) for (int j = 0; j < src_width; j++) dst[i + src_width * j] = src[j + i * src_width]; } // non square matrix transpose else { for (int i = 0; i < src_width; i ++) for (int j = 0; j < src_height; j++) dst[i + src_height * j] = src[j + i * src_height]; } } void Matrix::transposeMatrix(float * mat, int src_width, int src_height) { float temp; // square matrix transpose if (src_width == src_height) { for (int col = 0; col < src_width; col++) { for (int row = col+1; row < src_height; row++) { // swap the two elements temp = mat [col * src_height + row]; mat[col * src_height + row] = mat[row * src_width + col]; mat[row * src_width + col] = temp; } } } // non square matrix transpose else { transposeMatrix(mat, transpose_record, src_width, src_height); memcpy(mat, transpose_record, src_width * src_height * sizeof(float)); } } MatrixSrc::MatrixSrc ( jint addr, jint s, jint w, jint h, jint e, jboolean t): Matrix(addr, s, e), record_offset((char *) addr), record_size (w*h) { if (t) { width = h; height = w; } else { width = w; height = h; } elements = e; record = new float[width * height]; // vectors do not need to be transposed transpose = (t == JNI_TRUE) && (w != 1) && (h != 1); if (transpose && (width != height)) // only need temp storage for transpose if the matrix is not square transpose_record = new float[width*height]; else transpose_record = 0; if (elements == 1) { // fool the nextMatrix function into returning a value elements = 2; nextMatrix(); elements = 1; } } MatrixSrc::~MatrixSrc() { //cout << "MatrixSrc destructor \n"; delete [] record; if (transpose_record != 0) delete [] transpose_record; } float * MatrixSrc::nextMatrix() { if (elements > 1) { //cout << "Elements: " << elements << "\n"; //cout << "Address: " << (unsigned int) (record_offset) << "\n"; // the record is not properly aligned if ((unsigned int) (record_offset) & FLOAT_ALIGNMENT) { // copy the floats into a buffer so that they are aligned // on 4 byte margins (not necessary on intel, but a good thing) memcpy (record, record_offset, record_size * sizeof(float)); if (transpose) transposeMatrix (record, height, width); record_offset = &record_offset[stride]; current_record_ptr = record; } // the record is aligned but it has to be transposed else if (transpose) { transposeMatrix ((float *) (record_offset), record, height, width); record_offset = &record_offset[stride]; current_record_ptr = record; } // nothing has to be done to the record else { // the floats are aligned in memory current_record_ptr = (float *) record_offset; record_offset = &record_offset[stride]; } } return current_record_ptr; } MatrixDst::MatrixDst (jint addr, jint s, jint w, jint h, jint e, jboolean t): Matrix(addr, s, e) { width = w; height = h; record_size = width * height; record = new float[record_size]; // vectors do not need to be transposed transpose = (t) && (w != 1) && (h != 1); if (transpose) transpose_record = new float[width*height]; else transpose_record = 0; data_buffered = JNI_FALSE; record_buffered = JNI_FALSE; record_offset = address - stride; } MatrixDst::~MatrixDst() { //cout << "MatrixDst destructor \n"; delete [] record; if (transpose_record != 0) delete [] transpose_record; // copy back any buffered data if (data_buffered) { char * src = buffer; char * dest = address; for (int i = 0; i < elements; i++) { memcpy(dest, src, record_size * sizeof(float)); src += stride; dest += stride; } delete [] buffer; } } void MatrixDst::configureBuffer(MatrixSrc & a, MatrixSrc & b) { if (!a.intersectingDataSpaces(b)) { // as long as the output only overlays 1 of the sources, and the other // source only has 1 matrix in it, only a record_buffer is required if (a.elements == 1 && identicalDataSpaces(b)) record_buffered = JNI_TRUE; else if (b.elements == 1 && identicalDataSpaces(a)) record_buffered = JNI_TRUE; else // otherwise all of the output has to be buffered createBuffer(); } else createBuffer(); } void MatrixDst::configureBuffer(MatrixSrc & a) { if (identicalDataSpaces(a)) record_buffered = JNI_TRUE; else if (intersectingDataSpaces(a)) createBuffer(); } void MatrixDst::createBuffer() { data_buffered = JNI_TRUE; buffer = new char[ elements * stride ]; record_offset = buffer - stride; } float * MatrixDst::nextMatrix() { record_offset = &record_offset[stride]; int alignment = ((unsigned int)(record_offset)) & FLOAT_ALIGNMENT; if (transpose || record_buffered || alignment) { last_record_in_temp = JNI_TRUE; return record; } else { last_record_in_temp = JNI_FALSE; return (float *) record_offset; } } void MatrixDst::writeComplete() { if (last_record_in_temp) { // 3 reasons why the record would be in temp // // 1. The record is not aligned // 2. The result will need to be transposed // 3. Direct Mode where result would overlay an operand if (((unsigned int)(record_offset)) & FLOAT_ALIGNMENT) { if (transpose) transposeMatrix(record, width, height); memcpy (record, record_offset, record_size * sizeof(jfloat)); } else if (transpose) { transposeMatrix(record, (float *) &record_offset[0], width, height); } else memcpy (record_offset, record, record_size * sizeof(jfloat)); } } /////////////////////////////////////////////////////////////////////////// void subMatrix (const float * src, int side, float * dst , int col_omit, int row_omit) { int index = 0; int src_index = 0; for (int c = 0; c < side; c++) { if (c == col_omit) { src_index += side; continue; } for (int r = 0; r < side; r++) { if (r == row_omit) { src_index++; continue; } dst[index++] = src[src_index++]; } } } float determinant (const float * matrix , int side) { // we are assuming for this case that the data is in column major format float det = 0; if (side == 2) // your basic cross product aka 2x2 determinant det = matrix[0] * matrix[3] - matrix[2] * matrix[1]; else { // create room to store the sub matrix int temp_side = side - 1; // the dimensions of the sub matrix float * temp_matrix = new float[temp_side * temp_side]; // keep the sign (this way we avoid an additional branch in the inner loop) float sign = 1; for (int row = 0; row < side; row++) { // get a sub matrix by eliminating the 0th col and the specified row subMatrix(matrix, side, temp_matrix, 0, row); // add to the determinant sign * [a]i0 * [M]i0 det += sign * matrix[row] * determinant (temp_matrix, temp_side); // alternate the sign sign *= -1; } delete [] temp_matrix; } return det; } --- NEW FILE: MatrixOpCommon.h --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/MatrixOpCommon.h /* * Matrix.h * * * Created by tristan on Sat Aug 24 2002. * Copyright (c) 2001 __MyCompanyName__. All rights reserved. * */ //////////////////////////////////////////////////////////////////////////////////////// // Utility Functions //////////////////////////////////////////////////////////////////////////////////////// #define FLOAT_ALIGNMENT 0x00000003 // 23 bit mantisa on a float (we need error for checking if two nums are equal) // for now use error of 1/2^18, this could be refined up to 1/2^22 if needed #define FLOATING_POINT_ERROR (1.0f/262144.0f) // check if two numbers are approximately equal, used when floating point errors // occur. Should NEVER check to see if two floats are identical inline bool approxEqual(float a, float b) { a -= b; a = (a < 0) ? -a: a; return (a < FLOATING_POINT_ERROR); } float determinant (const float * matrix , int side); void subMatrix (const float * src, int side, float * dst , int col_omit, int row_omit); /////////////////////////////////////////////////////////////////////////////////////// // Matrix ////////////////////////////////////////////////////////////////////////////////////// class Matrix { protected: float * transpose_record; // to use while transposing the record public: char * address; // the start of the data jint stride; // the distance between each record jint width, // the width of the matrix height, // the height of the matrix elements; // the number of matricies jboolean transpose; // whether this matrix is or will be transposed Matrix (jint a, jint s, jint e): address((char *)a), stride(s), elements(e) {} bool identicalDataSpaces (Matrix & other); bool intersectingDataSpaces(Matrix & other); void transposeMatrix(float * src, float * dst, int src_width, int src_height); void transposeMatrix(float * mat, int src_width, int src_height); }; /////////////////////////////////////////////////////////////////////////////////////// // Src Matrix ////////////////////////////////////////////////////////////////////////////////////// class MatrixSrc: public Matrix { private: char * record_offset; // the offset of this record in memory float * record; // temporary storage to store a fully aligned and transposed // copy of the record, if the one in memory is not so float * current_record_ptr; // the address of the memory containing the record last // returned by the nextMatrix() function jint record_size; // the total floats in each record public: MatrixSrc ( jint address, jint stride, jint width, jint height, jint elements, jboolean transpose); ~MatrixSrc(); void rewind() { record_offset = address; } float * nextMatrix(); }; /////////////////////////////////////////////////////////////////////////////////////// // Dst Matrix ////////////////////////////////////////////////////////////////////////////////////// class MatrixDst: public Matrix { private: char * record_offset; // the offset of the record in memory jboolean data_buffered; // if all of the data has to be buffered char * buffer; // a buffer used when data_buffered jboolean last_record_in_temp; jboolean record_buffered; // if only a single record is buffered float * record; // to store data if source is unaligned jint record_size; void createBuffer(); public: MatrixDst (jint address, jint stride, jint width, jint height, jint elements, jboolean transpose); ~MatrixDst(); void configureBuffer(MatrixSrc & a, MatrixSrc & b); void configureBuffer(MatrixSrc & a); float * nextMatrix(); void writeComplete(); }; --- NEW FILE: org_lwjgl_Math.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math.cpp /* * 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: org_lwjgl_Math.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * maths library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif //#include "org_lwjgl_Math.h" #include "math.h" --- NEW FILE: org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp /* * 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: org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.h" #include "MatrixOpCommon.h" /* * Class: org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect * Method: execute * Signature: (IIIIIZIIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpAdd_00024MatrixOpDirect_execute ( JNIEnv * env, jobject obj, jint leftSourceAddress, jint leftSourceStride, jint leftElements, jint leftSourceWidth, jint leftSourceHeight, jboolean transposeLeftSource, jint rightSourceAddress, jint rightSourceStride, jint rightElements, jint rightSourceWidth, jint rightSourceHeight, jboolean transposeRightSource, jint destAddress, jint destStride, jboolean transposeDest ) { MatrixSrc left (leftSourceAddress, leftSourceStride, leftSourceWidth, leftSourceHeight, leftElements, transposeLeftSource); MatrixSrc right (rightSourceAddress, leftSourceStride, rightSourceWidth, rightSourceHeight, rightElements, transposeRightSource); MatrixDst dest (destAddress, destStride, left.width, left.height, left.elements * right.elements, transposeDest); dest.configureBuffer(left, right); float * leftMatrix, * rightMatrix, * destMatrix; left.rewind(); for (int i = 0; i < left.elements; i++) { leftMatrix = left.nextMatrix(); right.rewind(); for (int j = 0; j < right.elements; j++) { rightMatrix = right.nextMatrix(); destMatrix = dest.nextMatrix(); int k = dest.width * dest.height; while (k--) destMatrix[k] = leftMatrix[k] + rightMatrix[k]; dest.writeComplete(); } } } --- NEW FILE: org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp /* * 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: org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.h" #include "MatrixOpCommon.h" /* * Class: org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe * Method: execute * Signature: (IIIIIZIIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpAdd_00024MatrixOpSafe_execute ( JNIEnv * env, jobject obj, jint leftSourceAddress, jint leftSourceStride, jint leftElements, jint leftSourceWidth, jint leftSourceHeight, jboolean transposeLeftSource, jint rightSourceAddress, jint rightSourceStride, jint rightElements, jint rightSourceWidth, jint rightSourceHeight, jboolean transposeRightSource, jint destAddress, jint destStride, jboolean transposeDest ) { MatrixSrc left (leftSourceAddress, leftSourceStride, leftSourceWidth, leftSourceHeight, leftElements, transposeLeftSource); MatrixSrc right (rightSourceAddress, leftSourceStride, rightSourceWidth, rightSourceHeight, rightElements, transposeRightSource); MatrixDst dest (destAddress, destStride, left.width, left.height, left.elements * right.elements, transposeDest); float * leftMatrix, * rightMatrix, * destMatrix; left.rewind(); for (int i = 0; i < leftElements; i++) { leftMatrix = left.nextMatrix(); right.rewind(); for (int j = 0; j < rightElements; j++) { rightMatrix = right.nextMatrix(); destMatrix = dest.nextMatrix(); int k = dest.width * dest.height; while (k--) destMatrix[k] = leftMatrix[k] + rightMatrix[k]; dest.writeComplete(); } } } --- NEW FILE: org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp /* * 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: org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.h" #include "MatrixOpCommon.h" #include <string.h> /* * Class: org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpCopy_00024MatrixOpDirect_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { if (transposeSource == transposeDest) { transposeSource = false; transposeDest = false; } MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, source.elements, transposeDest); dest.configureBuffer(source); float * srcMatrix, * destMatrix; int matrixByteCount = source.width*source.height*sizeof(jfloat); for (int i = 0; i < source.elements; i++) { srcMatrix = source.nextMatrix(); destMatrix = dest.nextMatrix(); // just do a straight memory copy memcpy(destMatrix, srcMatrix, matrixByteCount); dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp /* * 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: org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include <string.h> #include "org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.h" #include "MatrixOpCommon.h" /* * Class: org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpCopy_00024MatrixOpSafe_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { // remove any unnecessary copying if (transposeSource == transposeDest) { transposeSource = false; transposeDest = false; } MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, source.elements, transposeDest); float * srcMatrix, * destMatrix; int matrixByteCount = source.width*source.height*sizeof(jfloat); for (int i = 0; i < source.elements; i++) { srcMatrix = source.nextMatrix(); destMatrix = dest.nextMatrix(); // just do a straight memory copy memcpy(destMatrix, srcMatrix, matrixByteCount); dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp /* * 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: org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.h" #include "MatrixOpCommon.h" #ifdef _DEBUG #include <stdio.h> #endif /* * Class: org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpInvert_00024MatrixOpDirect_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { static float * temp_matrix = 0; static int temp_matrix_size = 0; if (transposeSource == transposeDest) { transposeSource = JNI_FALSE; transposeDest = JNI_FALSE; } // We are under the assumption that sourceWidth == sourceHeight and the matrix // defined within is invertable MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, source.elements, transposeDest); dest.configureBuffer(source); float * srcMatrix, * destMatrix; int temp_side = source.width-1; if (temp_matrix_size < temp_side) { if (temp_matrix) delete[] temp_matrix; temp_matrix = new float[temp_side * temp_side]; temp_matrix_size = temp_side; } for (int i = 0; i < source.elements; i++) { srcMatrix = source.nextMatrix(); destMatrix = dest .nextMatrix(); // calculate the determinant float det = determinant(srcMatrix, source.width); #ifdef _DEBUG printf("Matrix Determinant: %f\n", det); printf("Matrix Determinant - 1 = %f\n", det -1); #endif float sign; for (int col = 0; col < source.width; col++) { /* Maintain sign: + - + - ... - + - + .. + - + - .. - + - + .. : : : : \ */ sign = (col & 1) ? -1.0f : 1.0f; for (int row = 0; row < source.height; row++) { // get the sub matrix subMatrix(srcMatrix, source.width, temp_matrix, col, row); // transpose the result destMatrix[col + row * source.height] = (sign / det) * determinant(temp_matrix, temp_side); // swap signs sign *= -1.0f; } } dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp /* * 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: org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * Win32 math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.h" #include "MatrixOpCommon.h" #ifdef _DEBUG #include <stdio.h> #endif /* * Class: org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpInvert_00024MatrixOpSafe_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { static float * temp_matrix = 0; static int temp_matrix_size = 0; if (transposeSource == transposeDest) { transposeSource = JNI_FALSE; transposeDest = JNI_FALSE; } // We are under the assumption that sourceWidth == sourceHeight and the matrix // defined within is invertable MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, source.elements, transposeDest); float * srcMatrix, * destMatrix; int temp_side = source.width-1; if (temp_matrix_size < temp_side) { if (temp_matrix) delete[] temp_matrix; temp_matrix = new float[temp_side * temp_side]; temp_matrix_size = temp_side; } for (int i = 0; i < source.elements; i++) { srcMatrix = source.nextMatrix(); destMatrix = dest.nextMatrix(); // calculate the determinant float det = determinant(srcMatrix, source.width); #ifdef _DEBUG printf("Matrix Determinant: %f\n", det); printf("Matrix Determinant - 1: %f\n", det-1); #endif float sign; for (int col = 0; col < source.width; col++) { /* Maintain sign: + - + - ... - + - + .. + - + - .. - + - + .. : : : : \ */ sign = (col & 1) ? -1.0f : 1.0f; for (int row = 0; row < source.height; row++) { // get the sub matrix subMatrix(srcMatrix, source.width, temp_matrix, col, row); // transpose the result destMatrix[col + row * source.height] = (sign / det) * determinant(temp_matrix, temp_side); // swap signs sign *= -1.0f; } } dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp /* * 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: org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.h" #include "MatrixOpCommon.h" #include <cstring> /* * Class: org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect * Method: execute * Signature: (IIIIIZIIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpMultiply_00024MatrixOpDirect_execute ( JNIEnv * env, jobject obj, jint leftSourceAddress, jint leftSourceStride, jint leftElements, jint leftSourceWidth, jint leftSourceHeight, jboolean transposeLeftSource, jint rightSourceAddress, jint rightSourceStride, jint rightElements, jint rightSourceWidth, jint rightSourceHeight, jboolean transposeRightSource, jint destAddress, jint destStride, jboolean transposeDest ) { if (transposeLeftSource && transposeRightSource) { transposeLeftSource = false; transposeRightSource = false; transposeDest = !transposeDest; } MatrixSrc left (leftSourceAddress, leftSourceStride, leftSourceWidth, leftSourceHeight, leftElements, transposeLeftSource); MatrixSrc right (rightSourceAddress, leftSourceStride, rightSourceWidth, rightSourceHeight, rightElements, transposeRightSource); MatrixDst dest (destAddress, destStride, right.width, left.height, left.elements * right.elements, transposeDest); dest.configureBuffer(left, right); float * leftMatrix, * rightMatrix, * destMatrix; // check out discussions envolving ordering left.rewind(); for (int i = 0; i < left.elements; i++) { leftMatrix = left.nextMatrix(); right.rewind(); for (int j = 0; j < right.elements; j++) { rightMatrix = right.nextMatrix(); destMatrix = dest.nextMatrix(); // zero the elements of the destination matrix for (int d = 0; d < dest.width * dest.height; d++) destMatrix[d] = 0; // loop through each column of the right matrix int rightCell = 0; for (int rightCol = 0; rightCol < right.width; rightCol++) { // [RxC] * [RxC] // dest has same height as left // dest has same width as right int leftCell = 0; for (int leftCol = 0; leftCol < left.width; leftCol++) { for (int leftRow = 0; leftRow < left.height; leftRow++) { destMatrix[leftRow] += rightMatrix[rightCell] * leftMatrix[leftCell++]; } rightCell ++ ; } //rightMatrix = &rightMatrix[right.height]; destMatrix = &destMatrix[dest.height]; } dest.writeComplete(); } } } --- NEW FILE: org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp /* * 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: org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * Win32 math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.h" #include "MatrixOpCommon.h" #include <cstring> /* * Class: org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe * Method: execute * Signature: (IIIIIZIIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpMultiply_00024MatrixOpSafe_execute ( JNIEnv * env, jobject obj, jint leftSourceAddress, jint leftSourceStride, jint leftElements, jint leftSourceWidth, jint leftSourceHeight, jboolean transposeLeftSource, jint rightSourceAddress, jint rightSourceStride, jint rightElements, jint rightSourceWidth, jint rightSourceHeight, jboolean transposeRightSource, jint destAddress, jint destStride, jboolean transposeDest ) { if (transposeLeftSource && transposeRightSource) { transposeLeftSource = false; transposeRightSource = false; transposeDest = !transposeDest; } MatrixSrc left (leftSourceAddress, leftSourceStride, leftSourceWidth, leftSourceHeight, leftElements, transposeLeftSource); MatrixSrc right (rightSourceAddress, leftSourceStride, rightSourceWidth, rightSourceHeight, rightElements, transposeRightSource); MatrixDst dest (destAddress, destStride, right.width, left.height, left.elements * right.elements, transposeDest); float * leftMatrix, * rightMatrix, * destMatrix; // check out discussions envolving ordering left.rewind(); for (int i = 0; i < left.elements; i++) { leftMatrix = left.nextMatrix(); right.rewind(); for (int j = 0; j < right.elements; j++) { rightMatrix = right.nextMatrix(); destMatrix = dest.nextMatrix(); // zero the elements of the destination matrix for (int d = 0; d < dest.width * dest.height; d++) destMatrix[d] = 0; // loop through each column of the right matrix int rightCell = 0; for (int rightCol = 0; rightCol < right.width; rightCol++) { // [RxC] * [RxC] // dest has same height as left // dest has same width as right int leftCell = 0; for (int leftCol = 0; leftCol < left.width; leftCol++) { for (int leftRow = 0; leftRow < left.height; leftRow++) { destMatrix[leftRow] += rightMatrix[rightCell] * leftMatrix[leftCell++]; } rightCell ++ ; } //rightMatrix = &rightMatrix[right.height]; destMatrix = &destMatrix[dest.height]; } dest.writeComplete(); } } } --- NEW FILE: org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp /* * 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: org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.h" #include "MatrixOpCommon.h" /* * Class: org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpNegate_00024MatrixOpDirect_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, numElements, transposeDest); dest.configureBuffer(source); int * srcMatrix, * destMatrix; for (int i = 0; i < source.elements; i++) { srcMatrix = (int *) source.nextMatrix(); destMatrix = (int *) dest.nextMatrix(); // we can cheat and use the less expensive xor // to switch the sign bit of the float // single precision format 1 - sign 8 - exponent (excess 127) 23 - mantisa int j = source.width*source.height; while (j--) destMatrix[j] = srcMatrix[j] ^ 0x80000000; dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp /* * 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: org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp,v 1.1 2002/11/25 13:18:23 elias_naur Exp $ * * math library. * * @author cix_foo <ci...@us...> * @version $Revision: 1.1 $ */ #ifdef _WIN32 #include <windows.h> #endif #include "org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.h" #include "MatrixOpCommon.h" /* * Class: org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe * Method: execute * Signature: (IIIIIZIIZ)V */ JNIEXPORT void JNICALL Java_org_lwjgl_Math_00024MatrixOpNegate_00024MatrixOpSafe_execute ( JNIEnv * env, jobject obj, jint sourceAddress, jint sourceStride, jint numElements, jint sourceWidth, jint sourceHeight, jboolean transposeSource, jint destAddress, jint destStride, jboolean transposeDest ) { MatrixSrc source (sourceAddress, sourceStride, sourceWidth, sourceHeight, numElements, transposeSource); MatrixDst dest (destAddress, destStride, source.width, source.height, numElements, transposeDest); int * srcMatrix, * destMatrix; for (int i = 0; i < source.elements; i++) { srcMatrix = (int *) source.nextMatrix(); destMatrix = (int *) dest.nextMatrix(); // we can cheat and use the less expensive xor // to switch the sign bit of the float // single precision format 1 - sign 8 - exponent (excess 127) 23 - mantisa int j = source.width*source.height; while (j--) destMatrix[j] = srcMatrix[j] ^ 0x80000000; dest.writeComplete(); } } --- NEW FILE: org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/common/org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp /* * 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: * *... [truncated message content] |
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1:/tmp/cvs-serv9414/linux Modified Files: Makefile Removed Files: MatrixOpCommon.cpp MatrixOpCommon.h org_lwjgl_Math.cpp org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpNormalise_MatrixOpSafe.cpp org_lwjgl_Math_MatrixOpSubtract_MatrixOpDirect.cpp org_lwjgl_Math_MatrixOpSubtract_MatrixOpSafe.cpp Log Message: Moved Math functions to common Index: Makefile CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/Makefile =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- Makefile 22 Nov 2002 09:40:18 -0000 1.11 +++ Makefile 25 Nov 2002 13:18:24 -0000 1.12 @@ -43,8 +43,8 @@ G++ = g++ LINK = g++ JAVAHOME=/usr/java/j2sdk1.4.1_01 -LIBCSRC=../common/extgl.c -LIBCPPSRC=$(shell find . -name \*.cpp -print|grep -v CVS) +LIBCSRC=$(shell find ../common -name \*.c -print|grep -v CVS) +LIBCPPSRC=$(shell find . -name \*.cpp -print|grep -v CVS) $(shell find ../common -name \*.cpp -print|grep -v CVS) LIBCPPOBJS=$(LIBCPPSRC:.cpp=.o) LIBCOBJS=$(LIBCSRC:.c=.o) LIBOBJS=$(LIBCOBJS) $(LIBCPPOBJS) @@ -76,5 +76,5 @@ $(LINK) -o $@ $< -L/usr/X11R6/lib -lX11 -lXext -lXxf86vm -lGL -lGLU .PHONY clean: - rm -rf *.o *.so - rm -rf `find ../../ -name \*.class -print` + rm -rf *.so + rm -rf $(LIBOBJS) --- MatrixOpCommon.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/MatrixOpCommon.cpp --- MatrixOpCommon.h DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/MatrixOpCommon.h --- org_lwjgl_Math.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math.cpp --- org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpAdd_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpAdd_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpCopy_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpCopy_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpInvert_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpInvert_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpMultiply_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpMultiply_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpNegate_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpNegate_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpNormalise_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpNormalise_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpNormalise_MatrixOpSafe.cpp --- org_lwjgl_Math_MatrixOpSubtract_MatrixOpDirect.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpSubtract_MatrixOpDirect.cpp --- org_lwjgl_Math_MatrixOpSubtract_MatrixOpSafe.cpp DELETED --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/linux/org_lwjgl_Math_MatrixOpSubtract_MatrixOpSafe.cpp |
|
From: Luke H. <lh...@us...> - 2002-11-25 06:55:31
|
Update of /cvsroot/java-game-lib/LWJGL In directory sc8-pr-cvs1:/tmp/cvs-serv20474 Modified Files: .cvsignore Log Message: put my cvsignore changes here =) Index: .cvsignore CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/.cvsignore =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- .cvsignore 24 Aug 2002 21:19:06 -0000 1.1 +++ .cvsignore 25 Nov 2002 06:55:28 -0000 1.2 @@ -1 +1 @@ -.classpath +.classpath *.class *.class~ *.java~ .nbattrs \ No newline at end of file |
|
From: Luke H. <lh...@us...> - 2002-11-25 06:53:15
|
Update of /cvsroot/java-game-lib/LWJGL/examples/nehe/lesson17/data In directory sc8-pr-cvs1:/tmp/cvs-serv18314/lesson17/data Added Files: bumps.png font.png Log Message: up we go =) --- NEW FILE: bumps.png --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/examples/nehe/lesson17/data/bumps.png PNG ¡`Ðò-¦oö5L × Ìv.wö5A8ù=IÁþø?æ øVxb˹<ªgýÀ=-ÐYÅO.j&µ.@) è©HÝqJã-ҽѡ¬]|Vʪ×(ýàV"¡ýbºi Ô8Íd "T| %³1Ï%¿ßJä%JyæÒ¡Ë0hR¾¤òa)PGD)þÝÀmߢÀJäÜÒ À±C:£&?sD*î×amêÎ *Y GX¬ñ@¶ÇUZ¢W ßUØ`ØWî78«Õ"éÝx¼hâý˯ÂJ:òº¨¨ãÁ1uN{+ ×9Ñb¡uV¾¹¿:§ïLÿPX.; Ã@?ÒD¡ÑªVH¬øÿ%ÄS DÕ¤}¥qüÈéÎ+_Û:÷x4·ÂPú Ñ\BôÚX§pÉ-½ÇáFÚtÉ=m9sÂx¨+» þ¹PmÀtP¶ïÛ?+ÿjoOïT<Õ9êN²¶ëºHéÖü°'Üï¼O'-eÐâ,£B5S·7Íñ~v=¯Òªw#ïJôÁÒÑðoô Ká¬B-¡{`qZmÕ¢Öëã¡@±rËùuÄ ¢2£L _`f=Ä ãíåÕ!ø¾ß©R°ÜbÞhBiqNÎXQFTä Ý»Z SòÆç0|C¾Æôª¢Ï ÿà°Lvb jwOfA ¸pÊ!ñÿÿÁ C iø¡¸ ¨Å@ Ë`'¢}ÓvÚJ¢De¡b0®Üø~½&$Ä "i§ïyMúïÞ{ôñMá®ý ~`èMFà=»RÙº/¥ÆÁêOÁÀµò©±ÝÃØtgn;7*Ô ¥YÁªv¨íKJò}pwÁbGLÕû"¬ aåÆ&¥oÁ±i ÛADikųº¿8ªö1a«V(¥Öÿ¶X2mðl[ÛR³}f'ܽÚ*Zu´lã±& #³ªr¼6 ª¢ðwÌÖÍǤ㲠ÓÜùgGOÌ'õCek,¹w ! Ey&x'ä¢À0 £kbY2õúí7PèÉúvÜâáú¾qp=/Â^äbN?ÀþÿzKd-æL>ºÃáÂ7aê½äíÕ»×Á¥Â °nL×4ú&0\]÷z[ 3yiÂȹZ ¦õµú¡nù¶àÒÑØ¾þY|ÆiT6 #ê¨V)wA®üKM\úÀÃÛ¹ëÚ¤ò±TO$å,:;rö*Q &'ËØ¿èôÞýJt.éC$±÷Òµc %uá tv$`9íJµdó^$·yñåÍ0VýjüY^ET¸{ÜdèáHðI¡þ¬Ç ¢[qõÄÖ¢êhICkóç E;Psí>JÝIbDù±q7«¡{úÿK©c`(BìÙ(û\=[2gâaÄ`ïÛßU]¶öªaÃJoç®<ê¢è¡Jd3 ½N1°"ºèù¥0Ú{à7&Y#(Ù²ZBËÓ&ç¯ùÔÁké§8jD9Å(Q'Üý¸!ô,QWT¦óu'±ÖíPI@'!ÄJ°jx)Ø{É' fÎ"!þ @q¹ë4QÔ^?6 Ñ QÐðü+@ F ´!²~ÌxlÖ%Ëwæ{Õ4Z6-ijߦr@Ø`ß¡°Í¸MøÊhGhBÜFZaÞãu!¥Cþ`¿ôøÕað]È áH¥3Ëý^÷²fÁµ Ú¨ä[H\)¹.þ#d×;ZðE|0PÎ¥ñ»ì¦2ßu§êKe?)}I;$à¼8+ý×}\½Á·ÜÚ Âáj~4ÒÕó«ªY$ZÛñ0sÏ.µR)@ù a`hÉxç÷³È3ÓUõró¶èë{S9UiÞlKâRÖFæ£Á¯ÏA°J2<DÓäçÏq«²+BëH@¡±iÞ&Æþ @q¹ì$Q´ªú1/Ð'c\ÈFâÿï\ø(QJÄ%ÃÌô«,?¡««î=GM!Û*GÒ¥@+($m¯k¶^;2¦RºAå3ÝÏ:· »NR/ZTe3Ù6Æ\ãYñO¾ÑÆPKD=Ý RqÑ*³#-#þìÀ|#b³ç7ÇÂØ½|»$#º| zR}¿bkªO46È·§µwÍ]ã÷2wÉLPÚì(N.Rß®»®)@ÆÜ:/`tTÎv!W(ÜQ:oB2ùÒ·R{FɧÂ1KI$ø«ÌV@Ñ[×ÿ0/}|G,v^_tÝ0ùIùÅ·|üª"y;$¦syô©E,Q@E4Tk¨ÅÉþ ÀÙô$a¸Ón»Å5M Gï^ÿ<s1ñ#(Aýh;ã»þ&íL;ïó4C¹ñÎjEÈý×ÍÍ<ñådÜ[\ÙÎ- «ÉFG5¡ö&{ððÀwºû-GÀ¯úè³Ì< ¶g5§^n}ìd Ѭ<Aú'æü éz?UÞÕw$3+KÂ[H<íĻ礣|]}y~â(é\S :[ö^^ç¦ÃHJgÓ4sÞ÷|5_ý}ÔÍ ëePXK!qj×;»5ÝçXî7y#ZÌS©{6É/'³ä³ÜÑ¥DÌM"\Kszøý®à2t!7ÔºQ gÉk.ÿsii ¢ðÍkfl,BAÁ ]þÿÿª¸j±¶´Ò©bg¦Íäq¯gö!nÎÉ÷Å\Ý*Jø ÷÷wó}ýÑc°©Ñ`gÁÝ(s ¶ºº`ºRsì¼_ö@1Q¦Éé¤Àüd]mǵÐÝß)wZ7ÊìYÕ1ïÞêÞbZJ5hù}6ý³GÍ7¾åJþTþì-ìwø´ÅÖ±¦Ð¥ âÆQ9 §Â²$¬¼\«ÑèõÒÜVã6¤CûDùHéG f£ /UQ°A½vPÒ^!.é ±¡3°Ø.uç"ðgÄ´ß¿I«ºë|ÞpÕrÏ ÝXi+ ÜYФiÉá _G稫¿-d6^'>wÚ¤Ù£ßÅV¤ ÊHASÌrw=ðÝÖ´Aá EPQAªRG!ÚÑ£úC½êAð&¢T¤bZI²Ù8ýÃÌ»ó<;`á*¦×LÛDõÃNeYö®4¤l£BF´Á®T¹8Îuy?½%Z¥t.çAS=¹Òæ6%u¿B°*&½ú®Ê>'ÎÛÒuºé<V^ÆÈࣧ?ª r,b¦|(² W~¸oE$]ÂÛO¬û¨P#¨íù¢Ox1ø±¾) [Ah|@aøÓZÎôº?§üdaY[oçnJæÅ©í)¾@cjÑÅÇ!½Løåk.:D3 .ºñ \¹õmõĵ¸´bm j¶¡i.ç6N``63ßó=q{íÌÄ»1²7fMõ+ä¸Üµû £Diʱ»>~Ù¼-Û¿çTØ1çî<O[»fY&V^zO4 ØkLWÚÈ Î5ãdN¢®¨aàû1eòÈhËjÎq`Jdøâ÷¯(O&ýòue!ä ´¼t0S-²£æ>~ìë»Ñè¾?~þÚÝÜN¾_¦OÛæþq8ÎîªÓY^Ãn;«| _GÇ/PSÔ\ÇAð]p¼Y3i]l±3ík!M¿Ht3¬ÀÏi+UY64Vü¦}9 bþVA£Gø ,O%öï·'\ö£+; PsPûòô¾F4ÌéÑ¿Ùdà_9þÊS®¿+~Õ~¦h+ò'\î1¡ÑïÆõ~Ãw]x[}¹Ü6õ§óÒ×¢Þª¶¢sõÂ4òè|-Τ2¾IÂØlSÍj%ÓòT<Yê9;ÅÔ°´üló§óE;Wú©í¹îìÕÙÅÉ ÷/ëÇÕGd*;°¢:äMD §9ÈJ>ÂÛ³m&#wоÐ04µËcã»wí¿ ¤ñ$Á6mÉ+®¿@³Ú«½ç®Ôê®b³Fm@üÙ¶agoë hÕ7eOçpÛ§pÅ;yAòà-¸!ÜôⲬJòc¦Îg!¼1Ñ-©J0&Ry%:»æ®£^Ez_Us °+Àx2_¿ÖpSdUîÅ Pºnªw°2ï2;ìnhKs+Ùµbr<}L³³`Ð>©~[ú"ã|QBÍ©©ÁéP]Qjý«&¹QbEÖÕ^8·Jn¿H ÷ëVÊåtºÕúÉÀ©lKJ¹F´ÇHO Ñn5¤îÎyÅÈ:V; rÙ¼ËóMºÏË82a zÄ¡-m)TH¨-,ذG¯ñHE ^m¡¤/ª´ÏØÜ°÷Æ9sÏHO¼t*ײ®Ç* ßv¦ABÄMX¹Ö/`L|ßÕãÂ0$(Ã80ÓrÛë)OÐäôþ¯§Ù@â$Ë!OÃRÓɧè«z)¦+=IÄørYÂàdîmqgO³áÍÁLÙÝ¢Û/Z7Á7 J,ËÀå½ã».c,;ߪÔ@) @§Z¿b8(c 5úò+¥§âúX¤áÛ/x4¥pÕ^óyÛ{fÉácï;×-´Ð¶yÅÚK]ígýb¬yç» é?Âq½2/ѳjáöLýÀÿ(IÏľ|]P[e¦É#sÚ87´gOç#¦áÝN}$Âö_gqµ¹+²g«^ú3sà å2ϸw¨¤y môß)(ÌÑuìJ Æî ½z.7³H²E¦V>ÓÞ°ÃqL:NN¤ik¼ëog+ø*զͥ»D9¶Ùb 8 X2:nâmCâ!Fz¥j;wøhá¡ãNý¾0xm±oÍÍìpØRËï§mÊ¢aWíÞ 3L|ö&ÜÆ¤yCsøÖ N¨r¥Qü*&ºIuÍe½øÿ_"¥ÖȮ구^<[¸Î¼ÝéP.¿jÎ1w,®¸EI0ݲ4J¨CÂJ¦¬úv § 5vj*-1Ñ&ÕVÄ\%Prµnô9E?bHÈ Õ¯ Ô-<£«0¨ã¸ã ¸&Æãvõßd¡ÇGÀ¯*SS° Ovï xuFÖjh8]fKt§r AiØ.yJ|¾ä"B°Q-¬Ý J=â7P|¡ º ØKNS%;Þ $6®Lª¢´oÍgW ½ÍåÈÅÇs>?'ÉÔ_t`|¬lÁ"!è; \sôdÁÃxOø wcIñ¤é\ã/(ì'I ë9k¢òÉ¡ë7'ÿphv; AíþÖ¨(o1&&ÆÄKÞÜÐ5D´£T*mwgwf]|¹ûfÎù2â8hOÞES²Z¦õ®¬V !AWl@KËØ±`+*T*hÔª¢mÚd2ã1WÛã÷lëáèT)]q$¨%CU>ð{maYz]X+ï åÌ^ û »YræìØ ÿzÚ#}VH$n]ÏHÎÅLaïhS0C¡-È[`ró ÂÒ»}©zFgÍ]zSÈxA8Y×ajRY÷©;ÿ]óÌCþs§D'iMkÚ` q Bµ*ê&ܹ¡°Ì?îÕÀ½¯©;µÉA'è."ÙF?onS¼ÓEµ Pûòå @Ýø×-¨ÙÊo¬{aî1ùp-ê«vq^r6ìÕ¹·Ç½·Ùüé7¤hdÛ_¡J=$=è^ªâÄJ°±Ó ·ôynÍÑfåcýqÝ.9L¨4º§4×Àñ :D1 ê,£¨+ÃJV³5ÙCøIÜE¤(|Zpëâ¼:}Ùw[¦6ÑÔ*XüÍÀæ»ÏTðÞq9¨gãÇñìÒ 0Gyòþô%¨&¤)³0æ4ÍÍ]¤õEÆ5ñ&*¸0(¥,[çZ9î¢ÙQ:úãFÒ=BnæxadEþ²Ýxµ/Ïl¨þ\=6¦¬¶¬ê}û6&Ò/âoJu¯tLÿ @¡Ùó$ax¿nIRIg£$ÊÄÊÞ?Á¶¶@càBãDð±7;³ël»Õf2yß÷- ®pR½M»4ºòLR¿Zo*¡R]m§ |ÄVíü1]¨{IÛ,î k¬t,EøN'í©«Òïtl(MøéhC #³®¸x¡ðT÷¾#Ó£¨8ajÝáÂ2aE®9Grì@2[³´a×â&èQngñ$^xýCÎs¦n½äEh¢½-J 0¬|Èø¯Å æ`´#øä íVÒ·9¶ë'Q¦ßëJdÌs˲v ôó.ð²?OÆ^ÒÃ_n~À`¢ÓÜìòUrDNwø¶ûBã¢,® µÂ"À8ªÝWå.è±_Ùâqo#Hã´ ò¯¬ý¦ ÚµßÉiÃ0L¾àúdèÃ6å7HG[zçjÿkrs[=¤4³xävàßÇÂ× ¸ºÄz¶rÓùÝ å<#ÃÛ¾öåÂJÒ0Ï^gÓ·Ù¤jµwæ}ÿ Ðì~¡(~ÛÛvmM3 Ñ1~ýÿ/j|0Ѩ * ²~x÷ܶ9÷ôüÒ«7D*[Ã09Î]ÒÒw9Ý â .ªµuMÛf?f| ä®cÎö@ÄS`Mf¨oÁvPHÊ¿ aºÇ²äbéä|å)¹MÚjÖô!ÉèLÚgÐ} 6$_S©Ùß/#¿]Ë}ÅF0FNOðéI+>¬«æÑÆóNölñ»®N·t_꺾"m"´+¼¤ñ"лö~ÁÈãóÕÃ$GñÓjCg»D<ó¤f<á!¶H"|«WÖ½ö£©rôI¤sLn¢¨,ÜVÓ,íY/~_ڻʼæÝ¸oZòÛõ±ÒMP$CëÍ¿ DÀu¨zBq&xÎh Õf¶Kû2è¢R_-/o`ÚEöiIo;¶QSMI¡g@7É¿Ëeß+ÓÏ~E\©ÀÀ#/é¯Böºµ~j?? -beÃEefѧ¥#C¦)¨©|²_zG4UÅ õWÉo©ò "=5 ùô2h $Z=26îX^ºLÖcúlÝâ)*ïv~D;bËiƨÚÄVMÐ¥(h3s §§ò÷âTg*+[½ÔgwkÌÛÊ«06ÂR#o£ArÓÏÒÅùÏ]ÿ/c=ï½ë´bÀNþ Ør(:vl'qZ¤fD¥+ÛSp$NÀ ²`´J¦©í±Íø¶dkþÆ3~xrÙê×Ï=h§Á½¹ðK9ÑרôáxKéMíÍßúáqT[ºRð¹|GîQV;{ S:¸:g6KÒµmÿPh-- Ä@xÝ$-¸»õÁ¢à/èüÛ¢WÑ£'±Øµh[ê>²'÷dä{0_.dTTö,®ä¢à»ÚVßU6;îcn7*g"!´µv!^ÜE&¥VB( ã©ÐöÚê·HÒÊCGJÌÁ ¬3ïÀºïgµ/ú8÷GAvâqÆýǶu?÷¾RÍóö[Ôº0óOÚÁXÑÏìGÛ=ííýQó·ZÉâøÜúòET5C 4Íû_ÅSV¤°2û¸NÑàEy¿â¢ü°%e´Zê¦91ªTa¼Õôúc*"¤ãd¸èbæÐP;1ÞÖÉ3ß"u SMYÖVé]ºh<1ú@q àCWþ@±Ùì4ÃpÜNRº® ´/Ð.páÈ$ÞWã@áÑ}°1µË¶©Ã¿/ÇlÿþIlV> ÏB}Lt&nªû=§b®z½xisçúYéãvâ'87¥±EX8x+£rrñß¾\{?sh-kîk~u¿Iãϲ°d¥`y¤ÚèHJúJøé·ÚC`k5&7já²ÎòP´·¸z*aëév¿¬ô`v4N°¢õM¥xän¾º<9º>>f?_Àö.8ÄH=ëøKéD¹¨½+>&oY]-LôP7ÚÉ@TJýýÙIBÉPÑyûaÚP4°ûr©»CR#ÍèÈ;`'w,βiñÚ)v:±id SHé$ZùS×Û¨ø8 N#ÇGS,20Òò¨Nu¯ô¿ þ AóJlçâë{dÊݹ+ÜiÚNFdmß>"=ÚXÞ(¬ DßÇ¿|í¬.q\:ÏÔ¥°z$2H J462;®¡|#/-;Kãb¨À$yq{IëlÍLÜæt pAÑÃ*\ÆjÀ*Æ#¤Û1ì~xFèVQÜ*2ý°<¥nÒLZFêßNÿ ÏýMoÒ6Mmk¥]àNp¥n×gA\Ré¦`¡Ø&Éýsî+Ìç|çÞ>Tañ_g/#~ 6Û]cIP U£9º|B~ nÚgCoKÏ>êð7?"¢-i[ÊÈ.U¾t3Çß<3:û¢·X qq)eñÈ븣N;c[¢¬Wl[ZÿÀ±´4Q¸÷ééI02`Æ QbL1^<Áÿ+xó¨àBP,³t÷tÛíNu*^½W| ¯bÏÂl[ÜX6h^T §"k8ÀdÀ¤]Kö©)´¥e¬0´°xnðÖ+i@ñg#gþ¸`ÓRöU~ÖJ#TñùOw¹j7ûLdBzW8U1-DþßRÈ\ro"ëaPU§©÷"_º4Dáeì¡ÌGÝ =TòRÄÁ<¾:æ<R÷×ùKégO1éAÂHfi]s·¡«À§l®|Ü"ìXÜÅWÀS&ÐÐFÒ¡+5¥°ôÍ.+ðà_ î¬ÉWúj¡ZìCuVFÊ߬ßêöµiç°Ué̩ȲàOÆ#ãQ4*ur:Ëñ¡ÜâÍ>Òº %á*%¨À:sOâZB1(×@"ÐÖª|vÅ*ÇeãÁùU"Ñ£ÈEa¯oÂïQç4U¡Lá þ_ :u~Z@/ÅsûYV -2^ËbÅ\Ì~çðAáO ¿¿Ú£cêb÷ï¼F9ÅPáÝ?88 W¯³$q2Ĩ(.(|<y÷èsù Oä["÷Ag Zâbª×ªäPGÿ`½j´[ºîæ}bº¢-Q(°À÷uÚ§:=8Þ¬ò¶ÊÏC¶q27ÇoN'×½¸{ÿýèòW¢Ü É0ÕÍS!bâÙRºniü#WFhÑ{8sHp½- ÿ èñËa\ФhaQ寽ðݮ«ñËÞl?GWºÖæEHEÌl (δ¦[YUsí2ãPÁÑÀBÐS¿;ì\dGdek£ñNr{ß/¿ Ä V ½ßd9;¡ôBDÂÒ kJÔúa4±6èí.# !ÌÚ5+ôÚ¢þ @Áµì4A{ãG&©¶*R¡©ª # $Î|߯ÏÀp 'À%MZ'ñ²þ bÛ¥n¾8¬ªæ6`ÀTÙÏFZmNMOý2¬¥TÚi!8`¾¬ÃÔç:òçè¿©+h]JôRëI¡q¡ú%HØÊV«Z4`ÞâL©?(6·b ·Óv·^hW.ôÂðÊçÖø<Æ ñM:èM~0ÒL»pä°¦JoHaåxÛ!Q[×Içsë(YÞÖÞÑ]'.ªfíbÅõg[¿§ñE§³¯ª1ö 5¡dÝúf·½Â®LâJÚæY_®ÖëÇ¡öðì(ó¥5%Íä¸iI¿[ÁçÎM c4zY³Ù¾\y¶Çp¦sÄE¦#þF(Þ4fùÜWÛþï~x4Ñ#B½¥++À³~ÃE¼ qKB¥8ÜùC| êÄûýVåmç|A\Ôcl=í0út0 8ÖÀÍ ç¯òvj6ÃîÕ")õ1¿Æ]¡Ë<,˼±9O¾¨Ã0zvö½#f\?¤i¤ |ÒÍT%j«æ-ì8l:¥ r°ÜÁÃO[ç±"É´1JìnÄE[Í[«Ä|R$Køi ôU÷=Æü«ÙÂsD;¹Zª5*YòÞB%wg¬¹vÁäéô(Ü;ó !ÞÙ®:O- Ã5²%íÈ8Ú)±ó9ÍñhS*X-fóD±÷z»ÍNPP9<ÁPÂU}zw£ÉJµdýÿæ¶§±ýªóY¢Àö»T4Pqmí:ÆVwÀDZÓR>nêop )§Ýï8Õl¤Ú/ëfI¢ Kjο¥øìqáOÙâJÑÂ6VÎ9H Á>¸LôË|Ó!¸þ@=4 µ d>]0îwî¹í©q°³6¼0sÆ]Åù61fóé§8LiÍ©ë¢Ðúþ àÜya ùYR3}$,¹RËsäÊjMâ(¸a :GiZÁ[ÎÀA¸álPJA¢Q©ª ù9ÉØÃ̼߼ñÌ{æQ©Ë´8µQTsá¢nÑéw½s5!æõÉå;}m¶ýÐü¾äeãü's/öHMDe'ôÕÍ<}#ÛÕýÕôÄÿ5\'_µõWüÊPä;½¸`x0pêlvþ\öèÐkDØs¹p bÈÁ¸;FikmäKY27GìjżEov ù!-öÇÀGE´Pæ6Äõ.ÀÙļ:W¹8Éfäëaü ø©êµg¥ÕíÆ!\ì½X{1#B$&ÛvÔ°ÇÀ¥w¬ _b³íº2p·7¿¥l¨ð(ç+«µ³û/õ8âòÉ'ɾÚî£1F\'Éët4À0±¦W ÷ζv*`¥{"9jQ½w\xzc4$Ñ(L:s" 9;á8ËôÆt@úë4â°wS^½3·'MÃL®"aX=¿ RÝ'zt<zò4y)s³;DróÖÊP`dØÊ±åòx,kCÅ·(+¢ÿPp-+ Qtf2$4AkAApÓnÄ ]øGþþ¸Ò+¡ µ¶iÓÌ#ñÎÌb{÷Þ3tÝEGbz¤tKDÇÌT,¶[Ë8*y>AÝøO¹ã3`6´Úäó8fNÝþ8ËòbUKÌz@6H%WÜ*|Ïj @?ÌÈ|Øu:kºV¯{Wvâ£ïH¾¦Gúô)ãÖÎ4¸*ø¬Þ¨ö&F£ü3[fg´´:¼zÎè²E/ºÎ§¡Z+ujÕäzÉÓwÆÌ7õGåpºWIxÕèMÙ<ÓL!Ke¬ûuaªü§Õó¡^x'Ô[$}ÔxÂxVíî$ÎôL\mbµ[ç+uHòäËG1rÿppv; Ä@îl·,»! câW¾oìcø d×KÌÓÓ£réìç½ ¬B ùWwÓþ@Á®4CQ87IÓvsÎn²!øø¸¾¿Eð>À¦ 6ÙÜÚզɽñæBÂ9çKrn¼FeèY ²`jë}We±èù òQ´g,Mmt²iùÀz#²àËDò75ærRÜÖs ·ãSCzn̸U¥4P@½<j¿®»É'ã'\ú´þ׳$Ç|t«ÕmÿøÔ®Klß0ÝïÌ/~»`bE5KÌWD¿bÒÝOªÀè$Æf6¯Ô@âL´%sLu8GÎÅ÷QBÙyì¥Î´NYáiÛ\¸ºw÷]x p-ýR¥¦ä HlMLBr\¥b©ÖRÖ-úѸ¶§èõ¬a§8â4$%0ÖU9j4:Ö}TBþ@ÁÙ4Q8dÍ®i-*hA/z!øþOá E@´ÕVkí¦¿'&3ç;äd´¨õñÀ8ÝepIbÜe°cúâüãTjPÕwrO\ ÷[9øº×X¶ý{@mMrÍÂrº"õ!T[¢ñzµbi O£¹r¶M³(é¸îÐÊ££ØoÖv|±Þ¼ è¥VRF81Aÿppö8 Ä@öÄ^/Í ( ¡¡ OÁ8' "¤ABH«¬DÿÍnàç÷ÉöSÇÑ6 äp;89ETÔÂXgaó=WÌYyÌ0gÐâl©vr+ã{¿n8eG¸<8\ ré©w2ùÔg®rî Øw£XÎá'Ù·Ä^«Q!¶2º¢´ÔñÝ`ÑÄ7ÎØ×f4æÕ;NæcMkX B9¢KApÚÅí?î2|ðÛ§ZÉkki¼Á9/å Ë|[ TÃ9+Öø'sÆ÷àSA¢ÝE«r þ(43\§1 ¸®ô²a.ò«º4ì·6,íV#ïa¦Áî0¾* 7QFøäXèÆ°"ÚÂØ[7öUAP%=j'ÙL$<³~ÔÒ)ô0Wý«éi¡Nº¬S¡BÀÄ3nøÿ7nHûB@Ƕn0²6vÌó5(±üñe?Ý'VÐu6s{ÕS¥?Èzb½ÿ$z<?»$ZuqN£ú Ô/±=¬:úR:ÉcA¹&ª²L~*î yeÉêûc }]Eàiám!g(ò&~!Öþ«ûþ @mGG¦¹Ýì0©°å¸6õ'àÛ¾f¡ÇhÃo7Dîïå¸KÇÎô °ÃµlkYÐÊ>Ï^^÷¤ã-MË_Sº+EoßæKÔrÌÏT+EhÏØØ(aºU~ðá©(ïóBc× ýe6ªmZVë¢Ý[m#Îß:BØûhL°6©¶u¦RtTr´k°aulåPéÁè¡´êÌñâ;×Ôà>&È2¢®1]nKÿ<=¿ªågJ3¯/+¢±Ð¥®åÜ6lúóÌ.¨V¸\$h´Ï:ë0ýŶÊúã/,îl¤êÓ]#æÌðeá_×5bö°óV7íFõtn*ÞJý4kp@ôÊ´Ý%à~ròh÷nòè£üðÀGV"6æ%×#ánËð4ÔjZð¹EÒ¼¿r¼Ðô/ ÅQ&R*j.ÀѸGà4H( NL<Åc~sÞ¼÷é×ÌûÙLÊ!óZÔK8Ð1v:SÊv<Àt ;¹ªûkÜ;kmV¤¼;üÓ¥aôlõU¶¨H=Ò÷§Ä»5øC¶ÂÄ(ÓCåì{ñáè #ñ¢hH»ÂþêsG"b,hµ(x.Iöú£¯×õÏÁ»ñVÊHLK ë\óµ\ðû,ûoëÜnúÚ¶úÁØÄ&´Qk^+ ¦D8ó6g¹èQ.+UDuX3+ Û%²98e"8cn]è{SSß)סxÔt½ÐÙ{ó.<¡jµ+?WËc K´iøSWþ8«K]¡Ê¬´UJÖþ @Á¹4CQ4·ÉLÒNl¢ÕR}âÿìGø P°E¼R/í4ÍíÄ3?òµ×æ$áRð½7Ï\Ömþ{ß Õë§ ±\øI$jûÖÃ&ù¤CM® ©! ÐþBZZ¡|Å[Wßi¤»A壮þÖFZÊÒª6Umç6HÇPÎ,gb¢k\¯Þ~\ÝOq-ÂÔ ò7S°íK[@V2'2 p PîeÍ®òÝ]u\;ÌR ¤]@¾ÕpÚÁf£»Ô[ç#õiMYÉýãX2³»¹¤.úH4ä¿PiùòÜgG#m¿bÎ~g nÌlí¦AÜÒ~Dj[Ý´5ª9¼þ¹=ïê¨1vSXf.N×7·ÅÃãnß´ÚbtôÅCq\ÅüÜ+ûéÅ´àÿÔ"âU¿,c¨<^®(Y÷AúQ¤sC¼bÊ1±Ðóv,{ÙáÌÚ¼QOÎORBq©lV°FhPén%¥é_ çíigAYh01<ñ |YV®])1Á$(0\fzÖ¿îôv.ß¶§ m¬hã])goù*ºà¶¿)¢E÷">ktAjcÝ£EüÖŸ޳z"qIå{°kr¦D^h¥1ËÞÈ6¢yÑ«\¥f¢%ExÖäÒH°VïøÓHݪgî\)1ò|Nü@ç6ÿñ@ì¤@,ÝExÛ-ç>|$p»Ys.3uqCNúeû;?U[CÃès©ÑV®ºå}~xiÁbjÌi¢eOê]*F}×aå.t?¾Õ*åbKXÐM8ù4}ÿK,ð&×AÞ7íɱIPØÞCR¨-è±GSOþàèjS"hfÒv¿°¸+*ð ÞvOáaQü£¬j·Ð¦ùôÍþM ï½a2)èÀ@üQ¢ äqC¡ult@¹Ä%X{l=ó¥ðÔTÏy©ì#_Nà)5øë=HeÜ ¹nW«m_&ëëÌns¥²PC¢ciÀß$´sÙÓ) ë1e¦Í±qݱÇbe/D9Ë©köYº9ÌZÁâÚz,ïÔ×|©%"áa.ø ø.VwëÆ4xU_ÄÜ,ü0êg½ì%ùÇiødY Ú Æý3C|ÉÓ+KÍÀ@uà8º ºß4-´TrËEl*Að¤ÞýÕj=´¥Z6É~3ù˰yó3»#±jïJ&½_6~¦Ç\SÑÒ=µ ä¿}ÜÒnÆX³ÇDÂȰ!gV³L¸Æµ½'¼ÙI_B|¦ðâkå^<¬Âº²Û52ÀGíf1>{þ娣I2äÖií:ôô³;_Ym;úÂÀuG?ô³[ÅO1D6¶"7jR6?nö àÛ&®"écò³JÌ[ 61¥_òÞ£hîv{¨vË ´?êøõrCsÇô}CÝö^F_Zy"IP¿üù*ÇM¼<Ø¡CX×x1þ@Ñù´4Q|I¶Ùìn[ZTA<Ô´BA<y¼{ò{ñæÉÐCÛC¡ÝÝîæ/0ïÍûMÞ¯dªÓþ¯Ó±o_â®'ªNìBZÁ|dXãjÌÑÐÅE®ÿÚÓÉø¿Qu¶ÖMFåB§KKO*ÌÚgzLjÂã³y-SÎfÄG\tOãöÆ~vaß4,yäqþÚ55IÀt!gnâlé82:aJ¥C(Ëk7ñn¬n°5ð®ö¬Ä}¡kì½ÊòÉM;Ýw«ß:Y~ÿë0âjcÝUÓ½%xs}òÛ¸A õeOå¶å\ä¯åddv÷ùp#ÂÚÖÕÑPX¿QöÌ#ÿ·ò{åÜ4uog¸rÂÃìO¤i>Ïfݱ:d {òßÎßñF'VDÞZ{Ûû²¦+ÕûÑ£õr RÕª=rè¿ôË{æÀUj)b%LâLê|A$/ñ{_¬^#x#òý¡fÌð*haòK,¶ýàbS ËaQR3bVÌ'âÐô0 ðõQ'*L,Ì ÷2þalÿJ?Åm§=£@Ê%GÖ=gPZS3(ˮִ¾XÌ?C×ßËic}Ѻ0¿R,3ɧà7«æCØþÀÐùôaÝÒ!iÓ+ì{×g×{\7ÝS5Öu¸ :òâbPÏ£Éýñ|Dݰ'zÔñ/ºëkÈ¿ Ø ÐÌø5*]ZT[xqǾ Í4£EÉôåRÉÆÀËsOl'`Bùª(o®Âé4ÑÈ|»+2ÁÜ8{ù£s×i¢èÎxv@ ¥èòü7%Ê Àã¡Ý[CYxúóBö¡¬8ÉÜò'æw׫§úoýY3Ãì;!hò/Mg\ËÇ}=)QLÙHÑÈì{ BÈ4sQ@÷éc´K¾esÉòÖâwãâFƾµZQPÈ=Õó7# ]"a5â^ÌÉ1/hJä$DZñ°÷ÿ R3ø"ô&ݨPY«ø|d£¾pmQràyWRöÔÀ`-©ëu¥Â*ÀOðëfJ®îYú²O|!ÞPöq]ÇNXútzCZtMÛlç¥þä¾5Þ:t¥Pn¤Ã±ÉäßnüV Yr¥õ¾Í¿Qíòø(ò®õKÊ-Lvï5ÚÙ¹ò;k¹a>b.¯Ë<bAD8BQ¥ìö|9ÍIÛðÄIª h[ËOEþÀÑÙë4Ãp<_壪ÁÄóò6LH<@UT¸ëqwùvÓ9C;û[¶º;EqË>QèIËhl¾{S¬Ã´¬ «(Ço¯sá S yäg'¢HtÇöq¦d7Àçãt ½û×2Þ¸ôé³Ö×Ü%ɤy²-z:² 9rôq#øZÈ5Ô-?VÐÎá¦mÎ|ý : >²_¤dG {&?÷aWÆ×¥Ï¡°³0oÞW7<ÙÊòÚGmã( M~ÁëÚä #¥ h{F˨n_ìühd'ݶ6ýúäHKVª6ݵ)HÍÒ.z$EÓEté7Ã^Õu WqÒµ78/^J¹<è±.þ èlr(ì±ÒªjB ¨PAÀ 8 0 Aì,áimú]Î!ËNA~Þ)õ/ ¡_íêã¥oc£|ÔZS\¥IdÀgT6W§[rQÃ:«!KLa¤ô©Â¾$H{żC)νX¹þÔ©¥s©Mtgy?$>ÖûæãÝà &ë{ß\;dFbxØIGþ&³eÍÏmØnàÍÓlOSárÝ´#iÒòDÇ[9ÀRt`|¡`wÅO¼IrayuÒ(ylºÆ»¶«bòíX{ÐþwÂ]É@3{g'gǰéi¹îÝpÕsºÖ+ÐWÁ÷äf2ý@ÑÕ´4ÑÝlö#I©VÔRôÐ7þ ñèÔ`õRè¡XlEÚ¤iºÙl6ÎüÞ¼Ù÷ƪªù2¹ÅeÔèW+©¾*úaͲ¦Ì%Ú·á³)@¿iÜ!C7( Å`P×´£dîZö¹ºWõ¨÷¥UfÖô«ðK6Ìõ p@GÉuí½£.NolÒö°U N}Ë&%§EÚ Øùæî Kf4®X?¢Ü{óÀJ=\ج;Íø¶ïý&?%ãðjÓôÅÅå\Q(Þn¬ÇÛñeC¸T\iwÃëß´ÅÿõnQ».º¨Õ J P²»}ds/"mOv©&ÀÈF hïK®*v'-gÆÄÌ °úá¹v5285®béÉ¡ÑFp_â"ÿz AHâ^zªÇ3¤QVΫ³&IèTyÝ ,«n³#ókLã á$*é®M^Ë Ùô Ð(çÓ&ï6& O,=×?j°4ÏÇLT/1ü@ÒÙ4Qxfw»ØÓho,µàÀ÷ÇGðB*Z¤Ò¶It³?Ñlv²gÎ=8°Èq ¸ÉÜuëðÔg¤u?ä N +~p½w{':G°L¨Xô íÂÂð[1ëN(øAËìâ¹¼ÚÔ ¬ÒuåeîÁªÖ_&[rüÿ zK-¬.Th°VNä:BzÇl®¶& ¹Öpædì ûZñ.ú¾«$¦ûèA3id°7)Ùy¦_ÏwíàÔ V+i02ó¼ûrj&ñ;ä|Í@wÆ>ñáÜö¤~ èÚua¨ó¸¯¶T:@A!`få;ÙùØ?Àc¡RÐê67ãìQÇö9Gr|lÛPFnpí8bÂ:À<mÇcà®ÖK]ô#w¥°þRùoÃF ) Õ-r~hÌ%¶ÔîÍzÊNf÷Zf *ÑãD(?ÐíÒIE^X_¿~ëæÍÈÒBC§^É´#INk©³KiØW¤ýj|½:4Î}`×ÖÕÌ1vþÙlîµM[ëÀ¥@}¢Ê«s£2§ýÞÈÿ\,å3Q7¼¦/;ñÐÓÅAfÑ'ÿ)/#,Ô,-°jÐ}{ôyIY~Í»/>Ø,AWEú,¦{Úþ`ù.Ææ¤*jÐSÖ$_Óöj'ÒåÛªþ£k[i ¢ìɶJ¥Ä oú滿àÇ/¢ >)ø H¥¶mm·f7Ùm²ñL29dÎÄ Þ-+¨p1±,wd(öQ~ÙJ$'üõÊ?7¯ÜD¦ð楷È"¥NK%ùfÃÞ+õn7¯ÖR#æÝó¨¾#ùb㫼ÞUz_wÎdCë¶4HÔ·ÓবCâãÿÞ/ o·\8Ö g»½eð_*à1XI´Ëê%F!F±´]Ót±DeUξhûØÆMj¿ ¢¾u;«\¹p|,½H·FùFax.ÝðXÐ]«à<Nn"Î"ÖÝ<åÏUwZ¤³±1ÐYÍ«4,Mfék.laCoÔ@¶0kGuKKbû\櫲ò¡yz]ó/ HlLL;ãʧðMM\h|÷lFCDþzË#tqÏùÚs˰yT&z.+Áz^ôGóEV¿Qú±-EzP««õF)VD§61è h (ObCèÄ-1RÀÄ5ݶÄlKÇPv `ÁU.ð£_þdã±7¹[odþ,AJÏåÊ!^Fü&Eéû²u:ç½þç2°ªõ.ËÍ xIfvªnÉ0|UÝÂEbHä#ÆîÐ?{ÿúz¯ôcýºø6òIÙ¦c§"î¢Kâ53͹gU+o^½:6Í!³º¡UVÃu¿FîY åÚ»Ã0#RBä.ê}ÔõÝÇê?º¸j7î^]Gî1âmþ/ Ú´viYh·;ÙÌÉ_7ïÃä£09ñP¦ìIwÑß׿òo¢F¸t¹ÕIË4µæ\ òãXoR¼NçR"@~§½á)´FO&óáBGAqû=á Ì{Ãé³A/<.(´jï#¸*ý\.ÑS{f©såZ ¼<«oz*±¸ÐÑpL*µ'µ¤Dâá¹åǶ¨ô*é£I¶>â£HP¤ÖàH /0Tî#ÐJ¡faíuÈDѪ×dÀMj¬£×M3Ã4ù´^¸Ü¶åÐ2üôqý¡/k¿ð/ vB´ÄT1*»OßȾ²¯ô 8R«ò\¿ ÏdMë¤8wÍÖq¨°ÃqLRCøæº¤ð&A¤¡õ#¸5ѳ½Ä¨ öòɪz¶gFISa¢wyHònï±?: ]ºO"Â&æ,=7ÙÇlÕcëøáÌOï\®]Ù3ü Àѵå4A?ëØF¦jU ø.Áe¸'GàÔJüE ®Ò$mf9-ywgfµë!òädq§Æß¢Âæ}<c>ËËi9jæ¹*c\ÉåÛ9òP)QYð°LÝÛbw¤*µ(¸àÿøL,eZ;ÙѾ [p¾¥¿HiyfeÔ'Eä*x¯gã©PÞhHûP$mfë^®Ê§EýzôMÕ³.ÁÅpòÓ\äf±-ù×M´³4éUBeå-t%²Däæw:kN³ýýµa'÷ýx@èOht\Lbk~©pà£ìèeÙïÌó²ÞyÿC^®*áV³ÿÎnK)Éþ]ëFä&$(ÿ&{¯?, )4þ @ÑÕ³4ÑÙÛz$¢±$ ØXÙùëÓµ ¢ÄäLr¹3·{û1ã,l¹l3óÞ¼³<#©täî $h~5ajéiÂbo`ÍG{UNcþ÷㨱cÏMÀêåÔúcOX>]C:HL¸>]x|}÷¸+Û¢1®gC¨¡®Ì(nøòæ÷ÿ ¢éÓ&¯.ÞÂÜî^ìu#ùñLppQAÝøõÌO®£ÓjX05íûÇS ß RøÀÄ éu+,V òÑøx_@W°&gÆIV MøÛ5«*ÄáÈJmgk÷ë®àt@ÖKR³ê@ Ï×#öBÜòªûÑõÛ½ 90ÇEȳßÑMRuLsXX ô?üN¢Oí¸Ú,È)²äv"Ïv~ðÓOSiëÂëCT9# À ×ܺùåÌu?ݹ:ÐM×9í$9ø{ülVèÖÖ<â$à»qvsvÁÑ6¡üÚu=ÃÐ;KÂÊñÉò{ì °"ÕZÁÀebmRt:`t}³4ö8Æ)ÓÙ ¤Ie'qÃf¿õîûîÓ}lÚáy6.êôIóecJ/ÚB:4ûQ ´2?¡ä"ÒN¿+ù ÁcK% àsÂCÒ9+±=haì!Ø÷$ãÙØé%Ð]4¸÷vh?);ñðÆfa³ý)-Ì^=b¥IÕjËXÊ.ú¿È¥h¥¨JîW¢¶PôPl¯Î´7]ÜÖ¸ZÿÚþk8ËÉQ ú¾M·{wq<ïd¾ÔFïEÒû² "¦µEgDÝdÅøHC´ø;£ -¬»¼í,ã{z)µnëö¾À?EØçUD;"r]g L[z@Ó·ªÄ'0gUJ˵ÎÔt ¹ñâŰfßjo$ lvóR«èÝ)»Qá¢à¿ =Ogpõÿ ±ä1±çOûÊϲ@½Aaâ²"T*Gê% ©.ËsñAqmIÑû$Wðhøµ´ÓmMØAÜJ;îÞòW³µæ»Ü.Ѭëþt¬}r}Ø%`I´ÊXÇ{îº:MFiºçTJ1OÎ2)¤¿¡Ô %G-OÖ`4¬Ûþ+ÍJñïµ:NÀ)ãR0?¬ûaé¡D Ĩ Wç%«LW#þ Àѹ,%Q4 ÉTQ(²pÿÿ/lqEi)`Ðâ!GwÇÛþÀÌ,ô9Ü4e_<xÆÎ"K¬´¯ Aa¼*ù,³Ë)ÖôèÖãókn58`Ì 4½× ¾»ö¾ÛkÓù¼uÓK.ç4µÚ£¾å®?10¸`V¦<kÜÇ{ѺäÂô61g AÆä;óQ2^ñëPì©êß(Óü&2Ð!&µp-a>[=<ÞSÁRð4ëܺËr«C; `dÝ×û¾Âtç<6wd8 TF8àÕAµ4±7ª+Û©²¤ §ãļeþ¢,×ü-Æ´=,ýLyÀ[zöT¯&)²ÊÑv¯³ð#òË `ï#´jxÍL+K§Û§0JÒÇ4º´_Ks{ÎyäÞg¹ b2q&3~ù·G¨¦ªþï/j8gÜDr¼×?,ŬhËb6î-Y`yYP©ô'· _áÅÃnóµ%!ÓìwÀXÐ HgùZPk.Ú-Àb]Q#ûÜ?é Ý,kT[«êÕfQóbeì·Ön¯Ñå«0ûFqwMÇ´A0÷Ã}¾L'Bô|Éhzv®éS®Q"@X(§ÚölRe ®LPtu- At¿î·ÚEÊ£zé#è¹è÷(½TJE¥ÙõîîݽÓì?Ø9çÃ9< 4ä05ÂTeí$ܼ¤X\iò}â]%×mÅÉ@Ú¾õ¾ ®Ø³ô²LUl¹mì'ApðWí|égÀ;>òRþ먰-AEqï-y-ä. 2>Ar-VDà·79z3.áë|aÝðïÎf ÔY¢VÀ¢Ð/¥F}ée£¾\ü<¸³þ;©òN%m»Ü<Û,ͯu©M »ÌOKo©¡¢åq Y¥²m¡6¶ä "DxÃ1¾èæk>[;¥zH[c.©ìi;Cjs] E(R8ì`çyôé*o*óÝ*1ÂwóLQ¹Û%²q²¿(:wb í]' "¢4© QrnÀh8 ¢("$ðP66»dýfnàb߯ÿý@60Þ7Þ«rMèV>0zæ~â¸ÚP{ êXZÓVÀ§ÄMCñc ¼Ì.aTvÃHúá®-dAw²kuQ\Ø0Ýú÷èïËö,Á9ÏH32©ò5õdö]"~>¯A¶N!(ó~¾³@b®Òx%ôöfóB¡O;iqã¬ZsªIßmÏNÖéó)nöpÙð½mܯë2üEþ¢- é¾ú⡠ĵ³·«/^ß^U/U÷¨ç\²«µÞâ!?"s·Xµp(ýȨoôS &¯ñ1`¡9ý²a.:ø²Ê-ÔWrqÀ»BMâ_ ÎÚâ¥Þ¼:{Ð)¦+ò?ëÎ<.ä{µ$)RR2áÀKzkï*_¿5fÀ% GÍxñ²E×z`Úµc¸ÖTÿùàgµÎTÇFêêhèÝüW·~Ù¸®û)ÞkùFzèð$ o dIê¹ÞLºc4ÏUDá¢ãÜA@WQÒ,B öm:YN;wÎv>\`P¨rg·Y¹?1ÛpZsÙAô.Ô=Y2<?dÆòHånqÄõ.Òs#xüØÐóÿpt-9 Ã@tfl'hhC Ën;v°ç6Ükp Ä5X $VH¨( ´IiÚ8mƽãù¼7y#»}¯*HÿSÂÀD8Q&üT²Mý+AoZåcæ33(SÉ:GÜï¡o)Zú®Ö¶&¿ Ì5òÀ(Üg¸à-&p¢3þy3¥>AÀu£Y(æ#CÉ W¸¥oÓȱ»½[º_Æú±ø{8IÇtÛ1§OdBg¬Æ'/í¦nìHÀrÓØ}õ9;!µÃ¿ºp÷~<jY¶ÌªÁ¨ôñÚ?Ū¶ºÊ¸£v¦Í¶÷Ѱ3ÏËêMøëØ ¾Òì¯Lú4)DÌ wY,¹¢qVø¢³ii Âp&³Ù¬´ zñâÿ¿û¼V(v»µØ-ÕÒm7L2Îo÷ÉÇδöF;Y³L>äáC<Å//îW\6&öv¢Ò"!\ã²-Û½P1îd´É°ò!*{mo¥ÿw(Î`®¼ôÃ"ÙMb¥ï*xÆwøö-ÅFÜe&ªö,ÑLÜsÄ÷âÑ(kãÚÈï>¬PD6Vw é*nî¹·ú(kéAÏß0µä¿2Y]uyæ°â½¨ K®êIQØv&kF2e¹û§ÛÙ!¯çÜåjCØ´²4î£?"¯ LäGDS%hè¦/ÖQ"vGzõ==Y »Íý@ÑÙ¶4Ãp¼MÚÝC;'8a>à`à+_ßÿKøRÑÔèÜv·ë51ùméC_IþAòqy/!*«HÜ)@ÏfsGf ùܦÀü-çÆx`(½}é¯dö0Ü ÈZÄ*oÊyÖ. Ðm4P¯^?§áy§ªéaO¥LëU¬ÂÌ5îCy7^sÐd¤s£òø6õÌrÜÏP®u'³?-|ÒFÉ=e K¢ Âßæî:VZC/Ä`Mÿ+®Mb[vo)¯³vú9í#Û¾¦QqÚ-_´9vX9|ÂðÓëí¦Õ,v11æx¼ôªL#<Ñ2|hס0ÄÔNêdtì|Z¶{Øî=¸FÏØ^¡[Å ÊwØIÿàèl^(>ÌM¿dµ·ö ¥èÅ«GÁÿߣB¡JAmE*ÖÊvÓÍÇ&Nürʼ÷c÷] uÒÙÉ °í¥ÖæWíi>¢¼ÕrªJÙÉÎØ ¾Þ&Q b.¯[)¼ïú¸çùLr!rdÏeP=º ~ëOv'¹`¥»Mòx®Óhìdb`+E¬MãT°|C_+ëMçâ"ÉCÝ`"XDú? .r¦ðS¹19ëÜ(¢yBüwà&¥¾;¯t]/]x÷aoÜVéT9WȹzßJÈ0vvdåäM_ü*$úcHOûúg×e9î©Ú²Ø{su2[¦.Á±>c:anoÌ$§ÅåµhÅ®áãÈÐÁE®4Öþ Àѵ´4Á¼³¸¶,R¥þyO "*-ívÉn6~éOHÂdfHf>vÙÝ Àày9æÖfªzܵޱ×þã+5nÇèc_áóÓJÆ\î@ÅHáS4ÂØÖøæ0Búÿ¢¾Þ%Óeø£çÀ¿¬x)`|õÒÕ ál³]öbi û4I¦ÇJR]ÛÔ¬·¿zÙýíÇr#|L]7q*Ô¶xº]µµnG;Rédd æ1¯¬yÍK]LDx¯¢ ckÇVÅ~oû¶}¥;Ò ÑØKÐ^Z/C"Fþ°ËÅ¿ T´ &Uüx? Qm Úc¤½¨Ê ]ONpÎ&cé©R¢î[Zp£q±¬ûñodùmXä¦ã5;RF°¥d/«¼ ,Èe *zIfòüªHF´câ°Ëï÷üYJWwoÁýÀÑÙó4aØç¯$¥¢D"ÀP± 1 ÁÐ_ÀÿdgafeGHÀEH|´VmJƱ}Üñ|g¿í÷=½÷ï Ë2Îø}Î÷dúööçZ¥ÿâz]α['ôRä5¬úÐôuöÔHbîRUSRùí4WKâ 8$ -aáZvqR¯8Îx]û+à· #NR£nqsr0lgðÓú®7¤yÞxçéaæª BéGFm5«ßØ®Lo¼ÅÏéÅn>Px³Þ\»8¤î¨ ÌB,'±$Î0üiÕС-Ù+Ä!¹"îk]!cF,ãÏ2[-¢WiFÒÉÕÝêhöBèbðH½FxðnÛÂp©üGD"{HF¾>MÛDÅIà[<Í1³2qG´ í©pt6= Ä@î×ÝITÆÄh<yðÿÿãÅN í¶ÓváÞKÛéÛ÷i§S[¤ \)³¶ä¾Ø ã4ë|72Ca.v¾Éøgè6éüN#£íÃûöZ8/{ÿÓ0|2§Èÿï¦ÜRù¨ý«Ò¹¢¹VâIËEkúåÚjÜ\ÉÚÛ×p´°Ôo®'BÔü)D~©eÂp]Àµq»ø+wR¶§T~e9¡ëÛJxöWÄJîªûÀËs²ü =éï39²¿ E8Is4v78jÐ|Hõ Îkòz¹ç 1T¥H÷ÄUFlI ø»è[.Þ¬SÛ 6p/NÌ&Ŧ&`O½ÒRò¾´6TvÔ(Ý ·pÛdw3W¦KÈǼ7/¼'_mEb\ Ò)¹Nä÷Jòk(Y$<,Ê2à]¯9=6ésË;ÊRZääp¤¢ÞË/;¦ZÚÞ»»õÌT&-Ñø¦eQ{ú®åÂu±ñíÀÑsÃm!¼XÈIz Òwù»/zÂRìÕU x&-²nSèçU0Û¾[Ý9 é_ HPu(3in8±ü>%ö3s«2UmI;Bëågø(s`õÙMO># 09]ðaA°K3ªdu¥ås(5æäe¤¦XiLTeñüç¯ãyaì£{>Uaè8µ©Î[ÎõÒãRj²ïð~,9â>%D§4|¿b3·É8¥êëE}©ÿþ¸éÖ·¸Eó¤Ô«@*{µ¥ÄY¯±s»Ñ U÷]ÛKÇ|°¥a¶§QsblçÀ¼ºJ|ôïQ-¥C(åþ;rÃ$e²½Ö:°QGÎ2mÎ-UPY±Úvwýºé,O§«gYørâõü+À --- NEW FILE: font.png --- CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/examples/nehe/lesson17/data/font.png PNG Î=HõÀ0*®¬¬ìîî&¨8-- '¹ººµã$ z<a>$`D£ *@ 1ëgÍ5}útÈ®ê`ø ©¸$d&A÷ Mf¹ ð<9Echç¸ù¤j¡]ø@ÚôDh§õêËA²¾ê õýT ÄhøÚ/<v@êíF ¯\¢9ËZFªz ÝO¼ud¬"rJî  äò,b ÝOk@äÀæ`äÒbEÐp!!!üa\ Zo± CäÅRâ]ì=¿a#|hY?ÄÈ0D ȱ\h¾Ã³[ë01ä /Fu¨r=3@ ]T[`;Ïâ1ª ì¤ e°F40¬Ùd-@ >Vv9VÃê÷ ê&Ü38Á7oy`ß¾}Ck½ 0~÷«@|ÈÍ d Á<i]¼½ \º?è²2bÈ6+°ñMp3'Ðv4é»Ù=ÀÔCûÎh!d< 2æ;°i>¾ ¤vßI=y~*@ `ºfË_!q_ÁGðÊ#7ã 99E½«¹?g²ë øµß ϯ¼Ð9UbÍ @æj ó<D.ûã ÐþµX©kiH:ÔûzxEüý$ Ôq¥6MÕÃOi'r¿z jµ__¾; è OñÄ(M@üÙhîLPÐ"ùáZæ@^éxAj: Ä\) <lf«[Ô«ºgýâáØ*ç$AÙEO1íßö92n#©µï-Cª*nsXÜ ?¬ßµá4×ÌÖ?ñð¨¦}÷9-~Òu¿P§x=Pûüy JA!ëì AÂÝt?d9:¼)ïÅe&@ Ï 'ì¨Z ɤu xHK 9ª g¯Ò¢P!cù $MÀ`|AJ¾ISÔ0G´h¢ ß ¯Ù$bøúu xC& ;Wp²mñãQtka(¼H»ñ"HÈìÄ4~ rZA'AFZ1^_RF¼áÄ#'ÃçæôMª`øC¦ñ¬ ,r>d=ÁÅIÈÏL͹$ÈRdbfé Ëâ?ViÁ#1WXCÁÁ!E!ðO£ Oü2 ñgHÈÜÄ1ïÁV ð$xzC\ ì±IÄl)9¬Èù?ȸ5rf ~kú 3 ÄäÍ@ú±ahG8h?B2!D~ÿ"o F==K_È<Í$2±&6\é æÃ+³®kÑ&o">'÷Õ¥´4µxcïlãòs)*à×'[Y¢z$q{:BÎaÅD&eRó:$\ÁTFdûâO`D¤àí+HýHÐ|xW¾;ulÜ|îAnB¹ ¸Slõðåå;Py)1á _oGdU «ÐoÆÁ÷mg®DnÜ úmq{v!&"U¢OLøC6¿%²¤Ë-QVâWC`n òB^x]GämeøwJ 7äÕµs[ N^;"¨Rä¢gòcÚßxKø/¯N÷êYÆ~|/ó7x1{qBɳpÉ2ø,oCo¤ØìÙå#Æô#k)y쯹ÍrᦠðXÀäOé @©óJÁ¼P\¨PJ®º(u´þÎ_Ð**¹JP¡t¿àò*NT¾Mï¸ÜÛB²ùæÙÕî÷« ÈÝJÛ¶4M;úÇãqØàr¹,Ë¢ª*6Móæ= Øó¼v<Ï[õ³Ã(㸪ª¢(ÃÐu½ïûº®?äÇ¢mÛXÉóü<ið~è÷¿ø¯íú&˲u]}ß×4ív» Ãp¦Éqáe¢@aí,ËÏçÈÀøÑñ¬Å<Ï»rRI¯§öÇ,Bïº.h£(B¤õHÀ^r¿ß7¿¢¢( GPy¾Xü/ßP(¥8Q:KðÎ9¢# qsçObüWKK ÃÖ ;饯û¾ç÷wh Ì\É[ÉÇ*âépbÞ÷½ÍÐB47ì@(²ÈRP³¤ñ§IÏR@$ÃÜpyÔ3B 1µàß@öbzbÔ£mê JNRøPk?d2òâböKS¸ÂÒXǯ²6Þ: ¢Rô רg¸Zü·\üÐgûU/ t äó\Ãàº.mÃ"ÝX ûÙx?××u}áS)eãMð¬ÇqÄÀ¶mÅ ãLdzP®øosL±¢ÀpÏóøNÓ|N¹ÃW F4 F4 F4 F4 F4 F4 F4 <8zs~P\ P:x9vk(¤ÆR`£hR%ã*UçÎ2.1é2Sñ>Ýí@¹TÏ8Fvöú¹ÄÓìÃ%fI7Ü|x}ML÷Iðx(T¸3 cHÚ< Q%.üèfHjèÂ_qCÆ»àW à ´Ãn©tÈ0 Ö @Ú¤ QÐѪsNL) ³Ü-D$Seâòqg¶¦ ·Ä$5®µ&ã<-íÔxsãYd·T Lÿ@]ÀÐZs#*9¢ìU 5Bâx{32óx°Y§&Áê½G?QZ²<1>/Ȩû[gç Ä£LZ$æ.°@Ú¥ àÅ!1uïÈ ¨\\\p]:Ø õ4ôj¾oªì¦sî½¾jïý/ ° tDÉz}ëïË!"'#!\yÀºð7CIÝñ¬àBv´q UÆ+Äpø j¿ð þÓ! h¸û!õ6÷ÀÏ<&> u/I·AV@¤àª'äæ @£h½ ¸Ç© K §ªà¿{<ÿÂ&²ªOâ7è Gêð« ìÑ6zS<µ F4 øúxâȱ~ *ÈÂ)üg_B mT °e) î06üPAø2LÈùxú!ȶC.»¥QȹÔ+õv2@ÂxÖ<ÂS 2¢@üéÐøW£ '²û?qÓá'<<BâOÈiðÒÂê2øY1Á䵸Ââtä1÷ÐN=é÷ Prÿ @·óþi Ïɳ ¥ þr FÑ H7t;ï$ F4 |