From 0e6c9aa0cde1188692be8085ac94383e868666a6 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 9 Apr 2005 17:35:37 +0000 Subject: [PATCH] Added LWJGLUtil.getPlatform to encapsulate platform detection. Added FreeBSD as an alias to Linux. --- src/java/org/lwjgl/LWJGLUtil.java | 70 ++- src/java/org/lwjgl/Sys.java | 24 +- src/java/org/lwjgl/devil/IL.java | 90 +-- src/java/org/lwjgl/devil/ILU.java | 330 +++++------ src/java/org/lwjgl/devil/ILUT.java | 258 ++++----- src/java/org/lwjgl/fmod3/FMOD.java | 636 +++++++++++---------- src/java/org/lwjgl/input/Cursor.java | 45 +- src/java/org/lwjgl/input/Mouse.java | 2 +- src/java/org/lwjgl/opengl/AWTGLCanvas.java | 23 +- src/java/org/lwjgl/opengl/Context.java | 22 +- src/java/org/lwjgl/opengl/Display.java | 22 +- 11 files changed, 784 insertions(+), 738 deletions(-) diff --git a/src/java/org/lwjgl/LWJGLUtil.java b/src/java/org/lwjgl/LWJGLUtil.java index cbec924d..fdf4a60d 100644 --- a/src/java/org/lwjgl/LWJGLUtil.java +++ b/src/java/org/lwjgl/LWJGLUtil.java @@ -49,37 +49,59 @@ import java.util.StringTokenizer; * @version $Revision$ */ public class LWJGLUtil { + public static final int PLATFORM_LINUX = 1; + public static final int PLATFORM_MACOSX = 2; + public static final int PLATFORM_WINDOWS = 3; - /** Debug flag. */ + /** Debug flag. */ public static final boolean DEBUG = Boolean.getBoolean("org.lwjgl.util.Debug"); /** - * Locates the paths required by a library. - * - * @param libNames List of library names to look for, in the form of Local Library name, Platform library name. - * At least 6 names must be passed. 2 for each supported platform in the following order: Windows, Linux, MacOSX. - * @param classloader The classloader to ask for librariy paths - * @return Paths to located libraries, if any - */ - public static String[] getLibraryPaths(String[] libNames, ClassLoader classloader) throws LWJGLException { + * Get the current platform + */ + public static int getPlatform() { + String osName = System.getProperty("os.name"); + + if (osName.startsWith("Windows")) { + return PLATFORM_WINDOWS; + } else if (osName.startsWith("Linux") || osName.startsWith("FreeBSD")) { + return PLATFORM_LINUX; + } else if (osName.startsWith("Mac OS X")) { + return PLATFORM_MACOSX; + } else { + throw new LinkageError("Unknown platform: " + osName); + } + } + + /** + * Locates the paths required by a library. + * + * @param libNames List of library names to look for, in the form of Local Library name, Platform library name. + * At least 6 names must be passed. 2 for each supported platform in the following order: Windows, Linux, MacOSX. + * @param classloader The classloader to ask for librariy paths + * @return Paths to located libraries, if any + */ + public static String[] getLibraryPaths(String[] libNames, ClassLoader classloader) throws LWJGLException { // need to pass path of possible locations of IL to native side List possible_paths = new ArrayList(); - String osName = System.getProperty("os.name"); - String libname; String platform_lib_name; - if (osName.startsWith("Win")) { - libname = libNames[0]; - platform_lib_name = libNames[1]; - } else if (osName.startsWith("Lin")) { - libname = libNames[2]; - platform_lib_name = libNames[3]; - } else if (osName.startsWith("Mac")) { - libname = libNames[4]; - platform_lib_name = libNames[5]; - } else { - throw new LWJGLException("Unknown platform: " + osName); + switch (getPlatform()) { + case PLATFORM_WINDOWS: + libname = libNames[0]; + platform_lib_name = libNames[1]; + break; + case PLATFORM_LINUX: + libname = libNames[2]; + platform_lib_name = libNames[3]; + break; + case PLATFORM_MACOSX: + libname = libNames[4]; + platform_lib_name = libNames[5]; + break; + default: + throw new LWJGLException("Unknown platform: " + getPlatform()); } // Add all possible paths from java.library.path @@ -95,7 +117,7 @@ public class LWJGLUtil { possible_paths.add(classloader_path); } - String lwjgl_classloader_path = LWJGLUtil.getPathFromClassLoader("lwjgl", classloader); + String lwjgl_classloader_path = LWJGLUtil.getPathFromClassLoader("lwjgl", classloader); if (lwjgl_classloader_path != null) { LWJGLUtil.log("getPathFromClassLoader: Path found: " + lwjgl_classloader_path); possible_paths.add(lwjgl_classloader_path.substring(0, lwjgl_classloader_path.lastIndexOf(File.separator)) @@ -120,7 +142,7 @@ public class LWJGLUtil { * locate it. * * @param libname Name of library to search for - * @param classloader Classloader to use + * @param classloader Classloader to use * @return Absolute path to library if found, otherwise null */ public static String getPathFromClassLoader(String libname, ClassLoader classloader) { diff --git a/src/java/org/lwjgl/Sys.java b/src/java/org/lwjgl/Sys.java index 02e08c82..063dfdc0 100644 --- a/src/java/org/lwjgl/Sys.java +++ b/src/java/org/lwjgl/Sys.java @@ -53,9 +53,6 @@ public final class Sys { /** The native library name */ private static final String LIBRARY_NAME = "lwjgl"; - /** OS Name */ - private final static String OS_NAME = System.getProperty("os.name"); - /** The implementation instance to delegate platform specific behavior to */ private final static SysImplementation implementation; @@ -71,14 +68,19 @@ public final class Sys { private static SysImplementation createImplementation() { String class_name; - if (OS_NAME.startsWith("Linux")) { - class_name = "org.lwjgl.LinuxSysImplementation"; - } else if (OS_NAME.startsWith("Windows")) { - class_name = "org.lwjgl.Win32SysImplementation"; - } else if (OS_NAME.startsWith("Mac")) { - class_name = "org.lwjgl.MacOSXSysImplementation"; - } else - throw new IllegalStateException("The platform " + OS_NAME + " is not supported"); + switch (LWJGLUtil.getPlatform()) { + case LWJGLUtil.PLATFORM_LINUX: + class_name = "org.lwjgl.LinuxSysImplementation"; + break; + case LWJGLUtil.PLATFORM_WINDOWS: + class_name = "org.lwjgl.Win32SysImplementation"; + break; + case LWJGLUtil.PLATFORM_MACOSX: + class_name = "org.lwjgl.MacOSXSysImplementation"; + break; + default: + throw new IllegalStateException("Unsupported platform"); + } try { Class impl_class = Class.forName(class_name); return (SysImplementation)impl_class.newInstance(); diff --git a/src/java/org/lwjgl/devil/IL.java b/src/java/org/lwjgl/devil/IL.java index a5e13a43..63c0e89d 100644 --- a/src/java/org/lwjgl/devil/IL.java +++ b/src/java/org/lwjgl/devil/IL.java @@ -300,7 +300,7 @@ public class IL { public static final int IL_SEEK_CUR = 1; public static final int IL_SEEK_END = 2; public static final int IL_EOF = -1; - + /** Have we been created? */ protected static boolean created; @@ -311,8 +311,8 @@ public class IL { public static native boolean ilApplyProfile(String InProfile, String OutProfile); public static native void ilBindImage(int image); public static native boolean ilBlit(int Source, int DestX, int DestY, - int DestZ, int SrcX, int SrcY, int SrcZ, - int Width, int Height, int Depth); + int DestZ, int SrcX, int SrcY, int SrcZ, + int Width, int Height, int Depth); public static native void ilClearColour(float Red, float Green, float Blue, float Alpha); public static native boolean ilClearImage(); public static native int ilCloneCurImage(); @@ -321,15 +321,15 @@ public class IL { public static native boolean ilConvertPal(int DestFormat); public static native boolean ilCopyImage(int Src); public static int ilCopyPixels( int XOff, int YOff, int ZOff, - int Width, int Height, int Depth, - int Format, int Type, ByteBuffer Data) { + int Width, int Height, int Depth, + int Format, int Type, ByteBuffer Data) { BufferChecks.checkDirect(Data); return nilCopyPixels(XOff, YOff, ZOff, Width, Height, Depth, Format, Type, Data, Data.position()); } private static native int nilCopyPixels(int XOff, int YOff, int ZOff, int Width, - int Height, int Depth, int Format, - int Type, ByteBuffer Data, int data_offset); + int Height, int Depth, int Format, + int Type, ByteBuffer Data, int data_offset); public static native int ilCreateSubImage(int Type, int Num); public static native boolean ilDefaultImage(); @@ -352,14 +352,14 @@ public class IL { public static native void ilModAlpha(int AlphaValue); public static native void ilSetAlpha(int AlphaValue); public static native boolean ilGetBoolean(int Mode); - public static void ilGetBooleanv(int mode, ByteBuffer param) { - nilGetBooleanv(mode, param, param.position()); - } - private static native void nilGetBooleanv(int mode, ByteBuffer param, int position); - public static void ilGetIntegerv(int mode, IntBuffer param) { - nilGetIntegerv(mode, param, param.position()); - } - private static native void nilGetIntegerv(int mode, IntBuffer param, int position); + public static void ilGetBooleanv(int mode, ByteBuffer param) { + nilGetBooleanv(mode, param, param.position()); + } + private static native void nilGetBooleanv(int mode, ByteBuffer param, int position); + public static void ilGetIntegerv(int mode, IntBuffer param) { + nilGetIntegerv(mode, param, param.position()); + } + private static native void nilGetIntegerv(int mode, IntBuffer param, int position); public static native ByteBuffer ilGetData(); public static native int ilGetError(); @@ -416,24 +416,24 @@ public class IL { public static native boolean ilSetDuration(int Duration); public static native void ilSetInteger(int Mode, int Param); public static void ilSetPixels( int XOff, int YOff, int ZOff, int Width, - int Height, int Depth, int Format, int Type, ByteBuffer Data) { + int Height, int Depth, int Format, int Type, ByteBuffer Data) { BufferChecks.checkDirect(Data); nilSetPixels(XOff, YOff, ZOff, Width, Height, Depth, Format, Type, Data, Data.position()); } private static native void nilSetPixels(int XOff, int YOff, int ZOff, int Width, - int Height, int Depth, int Format, - int Type, ByteBuffer Data, int data_offset); + int Height, int Depth, int Format, + int Type, ByteBuffer Data, int data_offset); public static native void ilSetString(int Mode, String string); public static native void ilShutDown(); public static boolean ilTexImage( int Width, int Height, int Depth, byte Bpp, - int Format, int Type, ByteBuffer Data) { + int Format, int Type, ByteBuffer Data) { BufferChecks.checkDirect(Data); return nilTexImage(Width, Height, Depth, Bpp, Format, Type, Data, Data.position()); } private static native boolean nilTexImage(int Width, int Height, int Depth, byte Bpp, - int Format, int Type, ByteBuffer Data, int data_offset); + int Format, int Type, ByteBuffer Data, int data_offset); public static native boolean ilTypeFunc(int Mode); public static native boolean ilLoadData(String FileName, int Width, int Height, int Depth, byte Bpp); @@ -446,7 +446,7 @@ public class IL { int Depth, byte Bpp); public static native boolean ilSaveData(String FileName); - + /** * Loads an image from the specified url * @@ -524,12 +524,12 @@ public class IL { byte[] buffer = new byte[4096]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); BufferedInputStream buf = new BufferedInputStream(stream); - + try { while((lastRead = buf.read(buffer, 0, buffer.length)) != -1) { baos.write(buffer, 0, lastRead); } - + buffer = baos.toByteArray(); ByteBuffer lump = ByteBuffer.allocateDirect(buffer.length); lump.put(buffer); @@ -542,12 +542,12 @@ public class IL { return result; } - + // public static native int ilGetDXTCData(ILvoid *Buffer, int BufferSize, int DXTCFormat); // public static native boolean ilIsValidF(int Type, ILHANDLE File); // public static native boolean ilLoadF(int Type, ILHANDLE File); - // public static native boolean ilLoadDataF(ILHANDLE File, int Width, int Height, int Depth, ILubyte Bpp); - // public static native int ilSaveF(int Type, ILHANDLE File); + // public static native boolean ilLoadDataF(ILHANDLE File, int Width, int Height, int Depth, ILubyte Bpp); + // public static native int ilSaveF(int Type, ILHANDLE File); // public static native void ilRegisterFormat(int Format); // public static native boolean ilRegisterLoad(String Ext, IL_LOADPROC Load); // public static native boolean ilRegisterMipNum(int Num); @@ -587,9 +587,9 @@ public class IL { } String[] illPaths = LWJGLUtil.getLibraryPaths(new String[]{ - "DevIL", "DevIL.dll", - "IL", "libIL.so", - "IL", "IL"}, IL.class.getClassLoader()); + "DevIL", "DevIL.dll", + "IL", "libIL.so", + "IL", "IL"}, IL.class.getClassLoader()); nCreate(illPaths); created = true; @@ -597,14 +597,14 @@ public class IL { IL.initNativeStubs(); IL.ilInit(); - // We need to initialize everything in one fell swoop on mac - if(System.getProperty("os.name").startsWith("Mac")) { - ILU.initNativeStubs(); - ILU.setCreated(true); + // We need to initialize everything in one fell swoop on mac + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + ILU.initNativeStubs(); + ILU.setCreated(true); - ILUT.initNativeStubs(); - ILUT.setCreated(true); - } + ILUT.initNativeStubs(); + ILUT.setCreated(true); + } created = true; } catch (LWJGLException e) { @@ -619,16 +619,16 @@ public class IL { public static void destroy() { resetNativeStubs(IL.class); - // We need to destroy everything on mac in one go - if(System.getProperty("os.name").startsWith("Mac")) { - ILU.resetNativeStubs(ILU.class); - ILU.nDestroy(); - ILU.setCreated(false); + // We need to destroy everything on mac in one go + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + ILU.resetNativeStubs(ILU.class); + ILU.nDestroy(); + ILU.setCreated(false); - ILUT.resetNativeStubs(ILUT.class); - ILUT.nDestroy(); - ILUT.setCreated(false); - } + ILUT.resetNativeStubs(ILUT.class); + ILUT.nDestroy(); + ILUT.setCreated(false); + } if (created) { nDestroy(); diff --git a/src/java/org/lwjgl/devil/ILU.java b/src/java/org/lwjgl/devil/ILU.java index aaefda87..67d35d5f 100644 --- a/src/java/org/lwjgl/devil/ILU.java +++ b/src/java/org/lwjgl/devil/ILU.java @@ -55,182 +55,182 @@ import org.lwjgl.LWJGLUtil; * @version $Revision$ */ public class ILU { - - public static final int ILU_FILTER = 0x2600; - public static final int ILU_NEAREST = 0x2601; - public static final int ILU_LINEAR = 0x2602; - public static final int ILU_BILINEAR = 0x2603; - public static final int ILU_SCALE_BOX = 0x2604; - public static final int ILU_SCALE_TRIANGLE = 0x2605; - public static final int ILU_SCALE_BELL = 0x2606; - public static final int ILU_SCALE_BSPLINE = 0x2607; - public static final int ILU_SCALE_LANCZOS3 = 0x2608; - public static final int ILU_SCALE_MITCHELL = 0x2609; - // Error types - public static final int ILU_INVALID_ENUM = 0x0501; - public static final int ILU_OUT_OF_MEMORY = 0x0502; - public static final int ILU_INTERNAL_ERROR = 0x0504; - public static final int ILU_INVALID_VALUE = 0x0505; - public static final int ILU_ILLEGAL_OPERATION = 0x0506; - public static final int ILU_INVALID_PARAM = 0x0509; - - // Values - public static final int ILU_PLACEMENT = 0x0700; - public static final int ILU_LOWER_LEFT = 0x0701; - public static final int ILU_LOWER_RIGHT = 0x0702; - public static final int ILU_UPPER_LEFT = 0x0703; - public static final int ILU_UPPER_RIGHT = 0x0704; - public static final int ILU_CENTER = 0x0705; - public static final int ILU_CONVOLUTION_MATRIX = 0x0710; - public static final int ILU_VERSION_NUM = IL.IL_VERSION_NUM; - public static final int ILU_VENDOR = IL.IL_VENDOR; + public static final int ILU_FILTER = 0x2600; + public static final int ILU_NEAREST = 0x2601; + public static final int ILU_LINEAR = 0x2602; + public static final int ILU_BILINEAR = 0x2603; + public static final int ILU_SCALE_BOX = 0x2604; + public static final int ILU_SCALE_TRIANGLE = 0x2605; + public static final int ILU_SCALE_BELL = 0x2606; + public static final int ILU_SCALE_BSPLINE = 0x2607; + public static final int ILU_SCALE_LANCZOS3 = 0x2608; + public static final int ILU_SCALE_MITCHELL = 0x2609; - /** Have we been created? */ - protected static boolean created; + // Error types + public static final int ILU_INVALID_ENUM = 0x0501; + public static final int ILU_OUT_OF_MEMORY = 0x0502; + public static final int ILU_INTERNAL_ERROR = 0x0504; + public static final int ILU_INVALID_VALUE = 0x0505; + public static final int ILU_ILLEGAL_OPERATION = 0x0506; + public static final int ILU_INVALID_PARAM = 0x0509; - /** - * @return true if ILU has been created - */ - public static boolean isCreated() { - return created; - } + // Values + public static final int ILU_PLACEMENT = 0x0700; + public static final int ILU_LOWER_LEFT = 0x0701; + public static final int ILU_LOWER_RIGHT = 0x0702; + public static final int ILU_UPPER_LEFT = 0x0703; + public static final int ILU_UPPER_RIGHT = 0x0704; + public static final int ILU_CENTER = 0x0705; + public static final int ILU_CONVOLUTION_MATRIX = 0x0710; + public static final int ILU_VERSION_NUM = IL.IL_VERSION_NUM; + public static final int ILU_VENDOR = IL.IL_VENDOR; - public static native boolean iluAlienify(); - public static native boolean iluBlurAvg(int iter); - public static native boolean iluBlurGaussian(int iter); - public static native boolean iluBuildMipmaps(); - public static native int iluColoursUsed(); - public static native boolean iluCompareImage(int comp); - public static native boolean iluContrast(float contrast); - public static native boolean iluCrop(int xOff, int yOff, int zOff, int width, int height, int depth); - public static native void iluDeleteImage(int id); - public static native boolean iluEdgeDetectE(); - public static native boolean iluEdgeDetectP(); - public static native boolean iluEdgeDetectS(); - public static native boolean iluEmboss(); - public static native boolean iluEnlargeCanvas(int width, int height, int depth); - public static native boolean iluEnlargeImage(float xDim, float yDim, float zDim); - public static native boolean iluEqualize(); - public static native String iluErrorString(int error); - public static native boolean iluFlipImage(); - public static native boolean iluGammaCorrect(float gamma); - public static native int iluGenImage(); - public static native void iluGetImageInfo(ILinfo info); - public static native int iluGetInteger(int mode); - public static void iluGetIntegerv(int mode, IntBuffer param) { - BufferChecks.checkDirect(param); - niluGetIntegerv(mode, param, param.position()); - } - private static native void niluGetIntegerv(int mode, IntBuffer param, int param_offset); - public static native String iluGetString(int stringName); - public static native void iluImageParameter(int pName, int param); - private static native void iluInit(); - public static native boolean iluInvertAlpha(); - public static native int iluLoadImage(String fileName); - public static native boolean iluMirror(); - public static native boolean iluNegative(); - public static native boolean iluNoisify(float tolerance); - public static native boolean iluPixelize(int pixSize); - public static native boolean iluReplaceColour(byte red, byte green, byte blue, float tolerance); - public static native boolean iluRotate(float angle); - public static native boolean iluSaturate1f(float saturation); - public static native boolean iluSaturate4f(float r, float g, float b, float saturation); - public static native boolean iluScale(int width, int height, int depth); - public static native boolean iluScaleColours(float r, float g, float b); - public static native boolean iluSharpen(float factor, int iter); - public static native boolean iluSwapColours(); - public static native boolean iluWave(float angle); + /** Have we been created? */ + protected static boolean created; - // public static native void iluRegionfv(ILpointf points[], int n); - // public static native void iluRegioniv(ILpointi points[], int n); - // public static native boolean iluRotate3D(float x, float y, float z, float Angle); - - /* DevIL lib allows both spellings of colour. We support that too */ - // ======================================================================== - public static void iluColorsUsed() { - iluColoursUsed(); - } - public static void iluSwapColors() { - iluSwapColours(); - } - public static void iluReplaceColor(byte red, byte green, byte blue, float tolerance) { - iluReplaceColour(red, green, blue, tolerance); - } - public static void iluScaleColors(float r, float g, float b) { - iluScaleColours(r, g, b); - } - // ------------------------------------------------------------------------ - - /** - * Creates a new instance of ILU. Cannot be created unless IL has been created. - */ - public static void create() throws LWJGLException { - if(!IL.isCreated()) { - throw new LWJGLException("Cannot create ILU without having created IL instance"); - } + /** + * @return true if ILU has been created + */ + public static boolean isCreated() { + return created; + } - // We need to do nothing when running on mac, since all is loaded in IL - if(System.getProperty("os.name").startsWith("Mac")) { - return; - } + public static native boolean iluAlienify(); + public static native boolean iluBlurAvg(int iter); + public static native boolean iluBlurGaussian(int iter); + public static native boolean iluBuildMipmaps(); + public static native int iluColoursUsed(); + public static native boolean iluCompareImage(int comp); + public static native boolean iluContrast(float contrast); + public static native boolean iluCrop(int xOff, int yOff, int zOff, int width, int height, int depth); + public static native void iluDeleteImage(int id); + public static native boolean iluEdgeDetectE(); + public static native boolean iluEdgeDetectP(); + public static native boolean iluEdgeDetectS(); + public static native boolean iluEmboss(); + public static native boolean iluEnlargeCanvas(int width, int height, int depth); + public static native boolean iluEnlargeImage(float xDim, float yDim, float zDim); + public static native boolean iluEqualize(); + public static native String iluErrorString(int error); + public static native boolean iluFlipImage(); + public static native boolean iluGammaCorrect(float gamma); + public static native int iluGenImage(); + public static native void iluGetImageInfo(ILinfo info); + public static native int iluGetInteger(int mode); + public static void iluGetIntegerv(int mode, IntBuffer param) { + BufferChecks.checkDirect(param); + niluGetIntegerv(mode, param, param.position()); + } + private static native void niluGetIntegerv(int mode, IntBuffer param, int param_offset); + public static native String iluGetString(int stringName); + public static native void iluImageParameter(int pName, int param); + private static native void iluInit(); + public static native boolean iluInvertAlpha(); + public static native int iluLoadImage(String fileName); + public static native boolean iluMirror(); + public static native boolean iluNegative(); + public static native boolean iluNoisify(float tolerance); + public static native boolean iluPixelize(int pixSize); + public static native boolean iluReplaceColour(byte red, byte green, byte blue, float tolerance); + public static native boolean iluRotate(float angle); + public static native boolean iluSaturate1f(float saturation); + public static native boolean iluSaturate4f(float r, float g, float b, float saturation); + public static native boolean iluScale(int width, int height, int depth); + public static native boolean iluScaleColours(float r, float g, float b); + public static native boolean iluSharpen(float factor, int iter); + public static native boolean iluSwapColours(); + public static native boolean iluWave(float angle); - String[] iluPaths = LWJGLUtil.getLibraryPaths(new String[]{ - "ILU", "ILU.dll", - "ILU", "libILU.so", - "ILU", "ILU"}, ILU.class.getClassLoader()); - nCreate(iluPaths); - created = true; + // public static native void iluRegionfv(ILpointf points[], int n); + // public static native void iluRegioniv(ILpointi points[], int n); + // public static native boolean iluRotate3D(float x, float y, float z, float Angle); - try { - ILU.initNativeStubs(); - ILU.iluInit(); - created = true; - } catch (LWJGLException e) { - destroy(); - throw e; - } - } + /* DevIL lib allows both spellings of colour. We support that too */ + // ======================================================================== + public static void iluColorsUsed() { + iluColoursUsed(); + } + public static void iluSwapColors() { + iluSwapColours(); + } + public static void iluReplaceColor(byte red, byte green, byte blue, float tolerance) { + iluReplaceColour(red, green, blue, tolerance); + } + public static void iluScaleColors(float r, float g, float b) { + iluScaleColours(r, g, b); + } + // ------------------------------------------------------------------------ - static native void initNativeStubs() throws LWJGLException; - - static native void resetNativeStubs(Class clazz); - - /** - * Exit cleanly by calling destroy. - */ - public static void destroy() { - - // We need to do nothing when running on mac, since all is destroyed in IL - if(System.getProperty("os.name").startsWith("Mac")) { - return; - } - - resetNativeStubs(ILU.class); - if (created) { - nDestroy(); - } - created = false; + /** + * Creates a new instance of ILU. Cannot be created unless IL has been created. + */ + public static void create() throws LWJGLException { + if(!IL.isCreated()) { + throw new LWJGLException("Cannot create ILU without having created IL instance"); } - /** - * Native method to create ILU instance - * - * @param iluPaths Array of strings containing paths to search for ILU library - */ - protected static native void nCreate(String[] iluPaths) throws LWJGLException; + // We need to do nothing when running on mac, since all is loaded in IL + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + return; + } - /** - * Native method the destroy the ILU - */ - static native void nDestroy(); + String[] iluPaths = LWJGLUtil.getLibraryPaths(new String[]{ + "ILU", "ILU.dll", + "ILU", "libILU.so", + "ILU", "ILU"}, ILU.class.getClassLoader()); + nCreate(iluPaths); + created = true; - /** - * Forcefully set created. Used internally by mac platform since - * it loads ilu/ilut in IL and needs to mark them as created - * @param created value to set created to - */ - static void setCreated(boolean created) { - ILU.created = created; - } + try { + ILU.initNativeStubs(); + ILU.iluInit(); + created = true; + } catch (LWJGLException e) { + destroy(); + throw e; + } + } + + static native void initNativeStubs() throws LWJGLException; + + static native void resetNativeStubs(Class clazz); + + /** + * Exit cleanly by calling destroy. + */ + public static void destroy() { + + // We need to do nothing when running on mac, since all is destroyed in IL + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + return; + } + + resetNativeStubs(ILU.class); + if (created) { + nDestroy(); + } + created = false; + } + + /** + * Native method to create ILU instance + * + * @param iluPaths Array of strings containing paths to search for ILU library + */ + protected static native void nCreate(String[] iluPaths) throws LWJGLException; + + /** + * Native method the destroy the ILU + */ + static native void nDestroy(); + + /** + * Forcefully set created. Used internally by mac platform since + * it loads ilu/ilut in IL and needs to mark them as created + * @param created value to set created to + */ + static void setCreated(boolean created) { + ILU.created = created; + } } diff --git a/src/java/org/lwjgl/devil/ILUT.java b/src/java/org/lwjgl/devil/ILUT.java index 28c69dcc..e107da2e 100644 --- a/src/java/org/lwjgl/devil/ILUT.java +++ b/src/java/org/lwjgl/devil/ILUT.java @@ -55,146 +55,146 @@ import org.lwjgl.LWJGLUtil; */ public class ILUT { - // Attribute Bits - public static final int ILUT_OPENGL_BIT = 0x00000001; - public static final int ILUT_ALL_ATTRIB_BITS = 0x000FFFFF; + // Attribute Bits + public static final int ILUT_OPENGL_BIT = 0x00000001; + public static final int ILUT_ALL_ATTRIB_BITS = 0x000FFFFF; - // Error Types - public static final int ILUT_INVALID_ENUM = 0x0501; - public static final int ILUT_OUT_OF_MEMORY = 0x0502; - public static final int ILUT_INVALID_VALUE = 0x0505; - public static final int ILUT_ILLEGAL_OPERATION = 0x0506; - public static final int ILUT_INVALID_PARAM = 0x0509; - public static final int ILUT_COULD_NOT_OPEN_FILE = 0x050A; - public static final int ILUT_STACK_OVERFLOW = 0x050E; - public static final int ILUT_STACK_UNDERFLOW = 0x050F; - public static final int ILUT_BAD_DIMENSIONS = 0x0511; - public static final int ILUT_NOT_SUPPORTED = 0x0550; + // Error Types + public static final int ILUT_INVALID_ENUM = 0x0501; + public static final int ILUT_OUT_OF_MEMORY = 0x0502; + public static final int ILUT_INVALID_VALUE = 0x0505; + public static final int ILUT_ILLEGAL_OPERATION = 0x0506; + public static final int ILUT_INVALID_PARAM = 0x0509; + public static final int ILUT_COULD_NOT_OPEN_FILE = 0x050A; + public static final int ILUT_STACK_OVERFLOW = 0x050E; + public static final int ILUT_STACK_UNDERFLOW = 0x050F; + public static final int ILUT_BAD_DIMENSIONS = 0x0511; + public static final int ILUT_NOT_SUPPORTED = 0x0550; - // State Definitions - public static final int ILUT_PALETTE_MODE = 0x0600; - public static final int ILUT_OPENGL_CONV = 0x0610; - public static final int ILUT_MAXTEX_WIDTH = 0x0630; - public static final int ILUT_MAXTEX_HEIGHT = 0x0631; - public static final int ILUT_MAXTEX_DEPTH = 0x0632; - public static final int ILUT_GL_USE_S3TC = 0x0634; - public static final int ILUT_GL_GEN_S3TC = 0x0635; - public static final int ILUT_GL_AUTODETECT_TEXTURE_TARGET = 0x0807; + // State Definitions + public static final int ILUT_PALETTE_MODE = 0x0600; + public static final int ILUT_OPENGL_CONV = 0x0610; + public static final int ILUT_MAXTEX_WIDTH = 0x0630; + public static final int ILUT_MAXTEX_HEIGHT = 0x0631; + public static final int ILUT_MAXTEX_DEPTH = 0x0632; + public static final int ILUT_GL_USE_S3TC = 0x0634; + public static final int ILUT_GL_GEN_S3TC = 0x0635; + public static final int ILUT_GL_AUTODETECT_TEXTURE_TARGET = 0x0807; - // The different rendering api's...more to be added later? - public static final int ILUT_OPENGL = 0; - - public static final int ILUT_VENDOR = IL.IL_VENDOR; - public static final int ILUT_VERSION_NUM = IL.IL_VERSION_NUM; - - /** Have we been created? */ - protected static boolean created; - - public static native boolean ilutRenderer(int renderer); - public static native boolean ilutDisable(int mode); - public static native boolean ilutEnable(int mode); - public static native boolean ilutGetBoolean(int mode); - public static native int ilutGetInteger(int mode); - public static native void ilutGetBooleanv(int mode, ByteBuffer param); - public static native void ilutGetIntegerv(int mode, IntBuffer Param); - public static native String ilutGetString(int stringName); - private static native void ilutInit(); - public static native boolean ilutIsDisabled(int mode); - public static native boolean ilutIsEnabled(int mode); - public static native void ilutPopAttrib(); - public static native void ilutPushAttrib(int bits); - public static native void ilutSetInteger(int Mode, int param); + // The different rendering api's...more to be added later? + public static final int ILUT_OPENGL = 0; + + public static final int ILUT_VENDOR = IL.IL_VENDOR; + public static final int ILUT_VERSION_NUM = IL.IL_VERSION_NUM; + + /** Have we been created? */ + protected static boolean created; + + public static native boolean ilutRenderer(int renderer); + public static native boolean ilutDisable(int mode); + public static native boolean ilutEnable(int mode); + public static native boolean ilutGetBoolean(int mode); + public static native int ilutGetInteger(int mode); + public static native void ilutGetBooleanv(int mode, ByteBuffer param); + public static native void ilutGetIntegerv(int mode, IntBuffer Param); + public static native String ilutGetString(int stringName); + private static native void ilutInit(); + public static native boolean ilutIsDisabled(int mode); + public static native boolean ilutIsEnabled(int mode); + public static native void ilutPopAttrib(); + public static native void ilutPushAttrib(int bits); + public static native void ilutSetInteger(int Mode, int param); - // ImageLib Utility Toolkit's OpenGL Functions - public static native int ilutGLBindTexImage(); - public static native int ilutGLBindMipmaps(); - public static native boolean ilutGLBuildMipmaps(); - public static native int ilutGLLoadImage(String fileName); - public static native boolean ilutGLScreen(); - public static native boolean ilutGLScreenie(); - public static native boolean ilutGLSaveImage(String fileName, int texID); - public static native boolean ilutGLSetTex(int texID); - public static native boolean ilutGLTexImage(int level); - - /** - * @return true if ILUT has been created - */ - public static boolean isCreated() { - return created; - } - - /** - * Creates a new instance of ILUT. Cannot be created unless IL has been created. - */ - public static void create() throws LWJGLException { - if(!IL.isCreated()) { - throw new LWJGLException("Cannot create ILUT without having created IL instance"); - } + // ImageLib Utility Toolkit's OpenGL Functions + public static native int ilutGLBindTexImage(); + public static native int ilutGLBindMipmaps(); + public static native boolean ilutGLBuildMipmaps(); + public static native int ilutGLLoadImage(String fileName); + public static native boolean ilutGLScreen(); + public static native boolean ilutGLScreenie(); + public static native boolean ilutGLSaveImage(String fileName, int texID); + public static native boolean ilutGLSetTex(int texID); + public static native boolean ilutGLTexImage(int level); - // We need to do nothing when running on mac, since all is loaded in IL - if(System.getProperty("os.name").startsWith("Mac")) { - return; - } + /** + * @return true if ILUT has been created + */ + public static boolean isCreated() { + return created; + } - String[] ilutPaths = LWJGLUtil.getLibraryPaths(new String[]{ - "ILUT", "ILUT.dll", - "ILUT", "libILUT.so", - "ILUT", "IL"}, ILU.class.getClassLoader()); - nCreate(ilutPaths); - created = true; - - try { - ILUT.initNativeStubs(); - ILUT.ilutInit(); - created = true; - } catch (LWJGLException e) { - destroy(); - throw e; - } - } - - static native void initNativeStubs() throws LWJGLException; - - static native void resetNativeStubs(Class clazz); - - /** - * Exit cleanly by calling destroy. - */ - public static void destroy() { - - // We need to do nothing when running on mac, since all is destroyed in IL - if(System.getProperty("os.name").startsWith("Mac")) { - return; - } - - resetNativeStubs(ILUT.class); - if (created) { - nDestroy(); - } - created = false; + /** + * Creates a new instance of ILUT. Cannot be created unless IL has been created. + */ + public static void create() throws LWJGLException { + if(!IL.isCreated()) { + throw new LWJGLException("Cannot create ILUT without having created IL instance"); } - /** - * Native method to create ILUT instance - * - * @param ilutPaths Array of strings containing paths to search for ILUT library - */ - protected static native void nCreate(String[] ilutPaths) throws LWJGLException; + // We need to do nothing when running on mac, since all is loaded in IL + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + return; + } - /** - * Native method the destroy the ILUT - */ - protected static native void nDestroy(); + String[] ilutPaths = LWJGLUtil.getLibraryPaths(new String[]{ + "ILUT", "ILUT.dll", + "ILUT", "libILUT.so", + "ILUT", "IL"}, ILU.class.getClassLoader()); + nCreate(ilutPaths); + created = true; - /** - * Forcefully set created. Used internally by mac platform since - * it loads ilu/ilut in IL and needs to mark them as created - * @param created value to set created to - */ - static void setCreated(boolean created) { - ILUT.created = created; - } + try { + ILUT.initNativeStubs(); + ILUT.ilutInit(); + created = true; + } catch (LWJGLException e) { + destroy(); + throw e; + } + } + + static native void initNativeStubs() throws LWJGLException; + + static native void resetNativeStubs(Class clazz); + + /** + * Exit cleanly by calling destroy. + */ + public static void destroy() { + + // We need to do nothing when running on mac, since all is destroyed in IL + if(LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX) { + return; + } + + resetNativeStubs(ILUT.class); + if (created) { + nDestroy(); + } + created = false; + } + + /** + * Native method to create ILUT instance + * + * @param ilutPaths Array of strings containing paths to search for ILUT library + */ + protected static native void nCreate(String[] ilutPaths) throws LWJGLException; + + /** + * Native method the destroy the ILUT + */ + protected static native void nDestroy(); + + /** + * Forcefully set created. Used internally by mac platform since + * it loads ilu/ilut in IL and needs to mark them as created + * @param created value to set created to + */ + static void setCreated(boolean created) { + ILUT.created = created; + } } diff --git a/src/java/org/lwjgl/fmod3/FMOD.java b/src/java/org/lwjgl/fmod3/FMOD.java index 50aa54ce..34944d4f 100644 --- a/src/java/org/lwjgl/fmod3/FMOD.java +++ b/src/java/org/lwjgl/fmod3/FMOD.java @@ -47,360 +47,364 @@ import org.lwjgl.LWJGLUtil; * @version $Revision$ */ public class FMOD { - + /** Array of hashmaps for callbacks */ - private static HashMap[] callbacks = new HashMap[17]; - - /** FMOD System level clear dsp unit */ - static FSoundDSPUnit fmodClearUnit; - - /** FMOD System level clip and copy dsp unit */ - static FSoundDSPUnit fmodClipAndCopyUnit; - - /** FMOD System level music dsp unit */ - static FSoundDSPUnit fmodMusicUnit; - - /** FMOD System level sound effects dsp unit */ - static FSoundDSPUnit fmodSFXUnit; - - /** FMOD System level FFT dsp unit */ - static FSoundDSPUnit fmodFFTUnit; - - /** FMOD System level FFT buffer */ - static FloatBuffer fmodFFTBuffer; - - /** Type defining the music callback entries in callback hashmap array */ - public static final int FMUSIC_INSTCALLBACK = 0; - - /** Type defining the music callback entries in callback hashmap array */ - public static final int FMUSIC_ORDERCALLBACK = 1; - - /** Type defining the music callback entries in callback hashmap array */ - public static final int FMUSIC_ROWCALLBACK = 2; + private static HashMap[] callbacks = new HashMap[17]; - /** Type defining the music callback entries in callback hashmap array */ - public static final int FMUSIC_ZXXCALLBACK = 3; - - - /** Type defining the dsp callback entries in callback hashmap array */ - public static final int FSOUND_DSPCALLBACK = 4; - - /** Type defining the stream callback entries in callback hashmap array */ - public static final int FSOUND_STREAMCALLBACK = 5; - - /** Type defining the alloc callback entries in callback hashmap array */ - public static final int FSOUND_ALLOCCALLBACK = 6; - - /** Type defining the realloc callback entries in callback hashmap array */ - public static final int FSOUND_REALLOCCALLBACK = 7; - - /** Type defining the free callback entries in callback hashmap array */ - public static final int FSOUND_FREECALLBACK = 8; - - /** Type defining the open callback entries in callback hashmap array */ - public static final int FSOUND_OPENCALLBACK = 9; - - /** Type defining the close callback entries in callback hashmap array */ - public static final int FSOUND_CLOSECALLBACK = 10; - - /** Type defining the metadata callback entries in callback hashmap array */ - public static final int FSOUND_METADATACALLBACK = 11; - - /** Type defining the read callback entries in callback hashmap array */ - public static final int FSOUND_READCALLBACK = 12; - - /** Type defining the seek callback entries in callback hashmap array */ - public static final int FSOUND_SEEKCALLBACK = 13; - - /** Type defining the tell callback entries in callback hashmap array */ - public static final int FSOUND_TELLCALLBACK = 14; - - /** Type defining the "end" callback entries in callback hashmap array */ - public static final int FSOUND_ENDCALLBACK = 15; - - /** Type defining the "sync" callback entries in callback hashmap array */ - public static final int FSOUND_SYNCCALLBACK = 16; + /** FMOD System level clear dsp unit */ + static FSoundDSPUnit fmodClearUnit; - /** Have we been created? */ - protected static boolean created; + /** FMOD System level clip and copy dsp unit */ + static FSoundDSPUnit fmodClipAndCopyUnit; - /** No errors */ - public static final int FMOD_ERR_NONE = 0; + /** FMOD System level music dsp unit */ + static FSoundDSPUnit fmodMusicUnit; - /** Cannot call this command after FSOUND_Init. Call FSOUND_Close first. */ - public static final int FMOD_ERR_BUSY = 1; + /** FMOD System level sound effects dsp unit */ + static FSoundDSPUnit fmodSFXUnit; - /** This command failed because FSOUND_Init was not called */ - public static final int FMOD_ERR_UNINITIALIZED = 2; + /** FMOD System level FFT dsp unit */ + static FSoundDSPUnit fmodFFTUnit; - /** Error initializing output device. */ - public static final int FMOD_ERR_INIT = 3; + /** FMOD System level FFT buffer */ + static FloatBuffer fmodFFTBuffer; - /** Error initializing output device, but more specifically, the output device is already in use and cannot be reused. */ - public static final int FMOD_ERR_ALLOCATED = 4; + /** Type defining the music callback entries in callback hashmap array */ + public static final int FMUSIC_INSTCALLBACK = 0; - /** Playing the sound failed. */ - public static final int FMOD_ERR_PLAY = 5; + /** Type defining the music callback entries in callback hashmap array */ + public static final int FMUSIC_ORDERCALLBACK = 1; - /** Soundcard does not support the features needed for this soundsystem (16bit stereo output) */ - public static final int FMOD_ERR_OUTPUT_FORMAT = 6; + /** Type defining the music callback entries in callback hashmap array */ + public static final int FMUSIC_ROWCALLBACK = 2; - /** Error setting cooperative level for hardware. */ - public static final int FMOD_ERR_COOPERATIVELEVEL = 7; + /** Type defining the music callback entries in callback hashmap array */ + public static final int FMUSIC_ZXXCALLBACK = 3; - /** Error creating hardware sound buffer. */ - public static final int FMOD_ERR_CREATEBUFFER = 8; - /** File not found */ - public static final int FMOD_ERR_FILE_NOTFOUND = 9; + /** Type defining the dsp callback entries in callback hashmap array */ + public static final int FSOUND_DSPCALLBACK = 4; - /** Unknown file format */ - public static final int FMOD_ERR_FILE_FORMAT = 10; + /** Type defining the stream callback entries in callback hashmap array */ + public static final int FSOUND_STREAMCALLBACK = 5; - /** Error loading file */ - public static final int FMOD_ERR_FILE_BAD = 11; + /** Type defining the alloc callback entries in callback hashmap array */ + public static final int FSOUND_ALLOCCALLBACK = 6; - /** Not enough memory */ - public static final int FMOD_ERR_MEMORY = 12; + /** Type defining the realloc callback entries in callback hashmap array */ + public static final int FSOUND_REALLOCCALLBACK = 7; - /** The version number of this file format is not supported */ - public static final int FMOD_ERR_VERSION = 13; + /** Type defining the free callback entries in callback hashmap array */ + public static final int FSOUND_FREECALLBACK = 8; - /** An invalid parameter was passed to this function */ - public static final int FMOD_ERR_INVALID_PARAM = 14; + /** Type defining the open callback entries in callback hashmap array */ + public static final int FSOUND_OPENCALLBACK = 9; - /** Tried to use an EAX command on a non EAX enabled channel or output. */ - public static final int FMOD_ERR_NO_EAX = 15; + /** Type defining the close callback entries in callback hashmap array */ + public static final int FSOUND_CLOSECALLBACK = 10; - /** Failed to allocate a new channel */ - public static final int FMOD_ERR_CHANNEL_ALLOC = 17; + /** Type defining the metadata callback entries in callback hashmap array */ + public static final int FSOUND_METADATACALLBACK = 11; - /** Recording is not supported on this machine */ - public static final int FMOD_ERR_RECORD = 18; + /** Type defining the read callback entries in callback hashmap array */ + public static final int FSOUND_READCALLBACK = 12; - /** Required Mediaplayer codec is not installed */ - public static final int FMOD_ERR_MEDIAPLAYER = 19; + /** Type defining the seek callback entries in callback hashmap array */ + public static final int FSOUND_SEEKCALLBACK = 13; - /** An error occured trying to open the specified CD device */ - public static final int FMOD_ERR_CDDEVICE = 20; - - /** Whether we have been initialized */ - private static boolean initialized; - - /** The native JNI library name */ - private static String JNI_LIBRARY_NAME = "lwjgl-fmod3"; - - /** The native library name on win32 */ - private static String FMOD_WIN32_LIBRARY_NAME = "fmod"; - - /** The native library name on win32 */ - private static String FMOD_LINUX_LIBRARY_NAME = "fmod"; + /** Type defining the tell callback entries in callback hashmap array */ + public static final int FSOUND_TELLCALLBACK = 14; - /** The native library name on win32 */ - private static String FMOD_OSX_LIBRARY_NAME = "fmod"; + /** Type defining the "end" callback entries in callback hashmap array */ + public static final int FSOUND_ENDCALLBACK = 15; - /** Version of FMOD */ - public static final String VERSION = "0.96"; - - static { - initialize(); - } - - /** - * Initializes the FMOD binding - */ - static void initialize() { - if (initialized) { - return; - } - initialized = true; - - System.loadLibrary(JNI_LIBRARY_NAME); - - // check for mismatch - String nativeVersion = getNativeLibraryVersion(); - if (!nativeVersion.equals(VERSION)) { - throw new LinkageError( - "Version mismatch: jar version is '" + VERSION + + /** Type defining the "sync" callback entries in callback hashmap array */ + public static final int FSOUND_SYNCCALLBACK = 16; + + /** Have we been created? */ + protected static boolean created; + + /** No errors */ + public static final int FMOD_ERR_NONE = 0; + + /** Cannot call this command after FSOUND_Init. Call FSOUND_Close first. */ + public static final int FMOD_ERR_BUSY = 1; + + /** This command failed because FSOUND_Init was not called */ + public static final int FMOD_ERR_UNINITIALIZED = 2; + + /** Error initializing output device. */ + public static final int FMOD_ERR_INIT = 3; + + /** Error initializing output device, but more specifically, the output device is already in use and cannot be reused. */ + public static final int FMOD_ERR_ALLOCATED = 4; + + /** Playing the sound failed. */ + public static final int FMOD_ERR_PLAY = 5; + + /** Soundcard does not support the features needed for this soundsystem (16bit stereo output) */ + public static final int FMOD_ERR_OUTPUT_FORMAT = 6; + + /** Error setting cooperative level for hardware. */ + public static final int FMOD_ERR_COOPERATIVELEVEL = 7; + + /** Error creating hardware sound buffer. */ + public static final int FMOD_ERR_CREATEBUFFER = 8; + + /** File not found */ + public static final int FMOD_ERR_FILE_NOTFOUND = 9; + + /** Unknown file format */ + public static final int FMOD_ERR_FILE_FORMAT = 10; + + /** Error loading file */ + public static final int FMOD_ERR_FILE_BAD = 11; + + /** Not enough memory */ + public static final int FMOD_ERR_MEMORY = 12; + + /** The version number of this file format is not supported */ + public static final int FMOD_ERR_VERSION = 13; + + /** An invalid parameter was passed to this function */ + public static final int FMOD_ERR_INVALID_PARAM = 14; + + /** Tried to use an EAX command on a non EAX enabled channel or output. */ + public static final int FMOD_ERR_NO_EAX = 15; + + /** Failed to allocate a new channel */ + public static final int FMOD_ERR_CHANNEL_ALLOC = 17; + + /** Recording is not supported on this machine */ + public static final int FMOD_ERR_RECORD = 18; + + /** Required Mediaplayer codec is not installed */ + public static final int FMOD_ERR_MEDIAPLAYER = 19; + + /** An error occured trying to open the specified CD device */ + public static final int FMOD_ERR_CDDEVICE = 20; + + /** Whether we have been initialized */ + private static boolean initialized; + + /** The native JNI library name */ + private static String JNI_LIBRARY_NAME = "lwjgl-fmod3"; + + /** The native library name on win32 */ + private static String FMOD_WIN32_LIBRARY_NAME = "fmod"; + + /** The native library name on win32 */ + private static String FMOD_LINUX_LIBRARY_NAME = "fmod"; + + /** The native library name on win32 */ + private static String FMOD_OSX_LIBRARY_NAME = "fmod"; + + /** Version of FMOD */ + public static final String VERSION = "0.96"; + + static { + initialize(); + } + + /** + * Initializes the FMOD binding + */ + static void initialize() { + if (initialized) { + return; + } + initialized = true; + + System.loadLibrary(JNI_LIBRARY_NAME); + + // check for mismatch + String nativeVersion = getNativeLibraryVersion(); + if (!nativeVersion.equals(VERSION)) { + throw new LinkageError( + "Version mismatch: jar version is '" + VERSION + "', native libary version is '" + nativeVersion + "'"); - } - - // Initialize callback hashmaps - for(int i=0; i