From b2c7849355562977444de76987bca6c43c44a110 Mon Sep 17 00:00:00 2001 From: "Sha..om" Date: Tue, 5 Jul 2011 14:14:11 +0000 Subject: [PATCH] * Added stereo 3D to AppSettings git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7822 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../src/core/com/jme3/system/AppSettings.java | 922 +++++++++--------- 1 file changed, 469 insertions(+), 453 deletions(-) diff --git a/engine/src/core/com/jme3/system/AppSettings.java b/engine/src/core/com/jme3/system/AppSettings.java index d308c877a..0cbc9bf2c 100644 --- a/engine/src/core/com/jme3/system/AppSettings.java +++ b/engine/src/core/com/jme3/system/AppSettings.java @@ -1,453 +1,469 @@ -/* - * Copyright (c) 2009-2010 jMonkeyEngine - * 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 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package com.jme3.system; - -import com.jme3.renderer.Renderer; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.prefs.BackingStoreException; -import java.util.prefs.Preferences; - -public class AppSettings extends HashMap { - - private static final AppSettings defaults = new AppSettings(false); - public static final String LWJGL_OPENGL1 = "LWJGL-OPENGL1", - LWJGL_OPENGL2 = "LWJGL-OpenGL2", - LWJGL_OPENGL3 = "LWJGL-OpenGL3", - LWJGL_OPENGL_ANY = "LWJGL-OpenGL-Any", - JOGL = "JOGL", - NULL = "NULL"; - public static final String LWJGL_OPENAL = "LWJGL"; - private String settingsDialogImage = "/com/jme3/app/Monkey.png"; - - static { - defaults.put("Width", 640); - defaults.put("Height", 480); - defaults.put("BitsPerPixel", 24); - defaults.put("Frequency", 60); - defaults.put("DepthBits", 24); - defaults.put("StencilBits", 0); - defaults.put("Samples", 0); - defaults.put("Fullscreen", false); - defaults.put("Title", "jMonkey Engine 3.0"); - defaults.put("Renderer", LWJGL_OPENGL2); - defaults.put("AudioRenderer", LWJGL_OPENAL); - defaults.put("DisableJoysticks", true); - defaults.put("UseInput", true); - defaults.put("VSync", false); - defaults.put("FrameRate", -1); - // defaults.put("Icons", null); - - // disable these settings to benchmark speed -// defaults.put("VSync", true); -// defaults.put("FrameRate", 60); - } - - /** - * Create Application settings - * use loadDefault=true, to load jME default values. - * use false if you want to change some settings but you would like the application to remind other settings from previous launches - * @param loadDefaults - */ - public AppSettings(boolean loadDefaults) { - if (loadDefaults) { - putAll(defaults); - } - } - - public void copyFrom(AppSettings other) { - this.putAll(other); - } - - public void mergeFrom(AppSettings other) { - for (String key : other.keySet()) { - if (get(key) == null) { - put(key, other.get(key)); - } - } - } - - public void load(InputStream in) throws IOException { - Properties props = new Properties(); - props.load(in); - for (Map.Entry entry : props.entrySet()) { - String key = (String) entry.getKey(); - String val = (String) entry.getValue(); - if (val != null) { - val = val.trim(); - } - if (key.endsWith("(int)")) { - key = key.substring(0, key.length() - 5); - int iVal = Integer.parseInt(val); - putInteger(key, iVal); - } else if (key.endsWith("(string)")) { - putString(key.substring(0, key.length() - 8), val); - } else if (key.endsWith("(bool)")) { - boolean bVal = Boolean.parseBoolean(val); - putBoolean(key.substring(0, key.length() - 6), bVal); - } else { - throw new IOException("Cannot parse key: " + key); - } - } - } - - public void save(OutputStream out) throws IOException { - Properties props = new Properties(); - for (Map.Entry entry : entrySet()) { - Object val = entry.getValue(); - String type; - if (val instanceof Integer) { - type = "(int)"; - } else if (val instanceof String) { - type = "(string)"; - } else if (val instanceof Boolean) { - type = "(bool)"; - } else { - throw new UnsupportedEncodingException(); - } - props.setProperty(entry.getKey() + type, val.toString()); - } - props.store(out, "jME3 AppSettings"); - } - - public void load(String preferencesKey) throws BackingStoreException { - Preferences prefs = Preferences.userRoot().node(preferencesKey); - String[] keys = prefs.keys(); - if (keys != null) { - for (String key : keys) { - Object defaultValue = defaults.get(key); - if (defaultValue instanceof Integer) { - put(key, prefs.getInt(key, (Integer) defaultValue)); - } else if (defaultValue instanceof String) { - put(key, prefs.get(key, (String) defaultValue)); - } else if (defaultValue instanceof Boolean) { - put(key, prefs.getBoolean(key, (Boolean) defaultValue)); - } - } - } - } - - public void save(String preferencesKey) throws BackingStoreException { - Preferences prefs = Preferences.userRoot().node(preferencesKey); - for (String key : keySet()) { - prefs.put(key, get(key).toString()); - } - } - - public int getInteger(String key) { - Integer i = (Integer) get(key); - if (i == null) { - return 0; - } - - return i.intValue(); - } - - public boolean getBoolean(String key) { - Boolean b = (Boolean) get(key); - if (b == null) { - return false; - } - - return b.booleanValue(); - } - - public String getString(String key) { - String s = (String) get(key); - if (s == null) { - return null; - } - - return s; - } - - public void putInteger(String key, int value) { - put(key, Integer.valueOf(value)); - } - - public void putBoolean(String key, boolean value) { - put(key, Boolean.valueOf(value)); - } - - public void putString(String key, String value) { - put(key, value); - } - - /** - * @param frameRate The frame-rate is the upper limit on how high - * the application's frames-per-second can go. - * (Default: -1 no frame rate limit imposed) - */ - public void setFrameRate(int frameRate) { - putInteger("FrameRate", frameRate); - } - - /** - * @param use If true, the application will initialize and use input. - * Set to false for headless applications that do not require keyboard - * or mouse input. - * (Default: true) - */ - public void setUseInput(boolean use) { - putBoolean("UseInput", use); - } - - /** - * @param use If true, the application will initialize and use joystick - * input. Set to false if no joystick input is desired. - * (Default: false) - */ - public void setUseJoysticks(boolean use) { - putBoolean("DisableJoysticks", !use); - } - - /** - * Set the graphics renderer to use, one of:
- *
    - *
  • AppSettings.LWJGL_OPENGL1 - Force OpenGL1.1 compatability
  • - *
  • AppSettings.LWJGL_OPENGL2 - Force OpenGL2 compatability
  • - *
  • AppSettings.LWJGL_OPENGL3 - Force OpenGL3.3 compatability
  • - *
  • AppSettings.LWJGL_OPENGL_ANY - Choose an appropriate - * OpenGL version based on system capabilities
  • - *
  • null - Disable graphics rendering
  • - *
- * @param renderer The renderer to set - * (Default: AppSettings.LWJGL_OPENGL2) - */ - public void setRenderer(String renderer) { - putString("Renderer", renderer); - } - - /** - * Set a custom graphics renderer to use. The class should implement - * the {@link Renderer} interface. - * @param clazz The custom graphics renderer class. - * (Default: not set) - */ - public void setCustomRenderer(Class clazz){ - put("Renderer", "CUSTOM" + clazz.getName()); - } - - /** - * Set the audio renderer to use. One of:
- *
    - *
  • AppSettings.LWJGL_OPENAL - Default for LWJGL
  • - *
  • null - Disable audio
  • - *
- * @param audioRenderer - * (Default: LWJGL) - */ - public void setAudioRenderer(String audioRenderer) { - putString("AudioRenderer", audioRenderer); - } - - /** - * @param value the width for the rendering display. - * (Default: 640) - */ - public void setWidth(int value) { - putInteger("Width", value); - } - - /** - * @param value the height for the rendering display. - * (Default: 480) - */ - public void setHeight(int value) { - putInteger("Height", value); - } - - /** - * Set the resolution for the rendering display - * @param width The width - * @param height The height - * (Default: 640x480) - */ - public void setResolution(int width, int height) { - setWidth(width); - setHeight(height); - } - - /** - * Set the frequency, also known as refresh rate, for the - * rendering display. - * @param value The frequency - * (Default: 60) - */ - public void setFrequency(int value) { - putInteger("Frequency", value); - } - - /** - * Set the bits per pixel for the display. Appropriate - * values are 16 for RGB565 color format, or 24 for RGB8 color format. - * - * @param value The bits per pixel to set - * (Default: 24) - */ - public void setBitsPerPixel(int value) { - putInteger("BitsPerPixel", value); - } - - /** - * Set the number of samples per pixel. A value of 1 indicates - * each pixel should be single-sampled, higher values indicate - * a pixel should be multi-sampled. - * - * @param value The number of samples - * (Default: 1) - */ - public void setSamples(int value) { - putInteger("Samples", value); - } - - /** - * @param title The title of the rendering display - * (Default: jMonkeyEngine 3.0) - */ - public void setTitle(String title) { - putString("Title", title); - } - - /** - * @param value true to enable full-screen rendering, false to render in a window - * (Default: false) - */ - public void setFullscreen(boolean value) { - putBoolean("Fullscreen", value); - } - - /** - * Set to true to enable vertical-synchronization, limiting and synchronizing - * every frame rendered to the monitor's refresh rate. - * @param value - * (Default: false) - */ - public void setVSync(boolean value) { - putBoolean("VSync", value); - } - - /** - * Sets the application icons to be used, with the most preferred first. - * For Windows you should supply at least one 16x16 icon and one 32x32. The former is used for the title/task bar, - * the latter for the alt-tab icon. - * Linux (and similar platforms) expect one 32x32 icon. - * Mac OS X should be supplied one 128x128 icon. - *
- * The icon is used for the settings window, and the LWJGL render window. Not currently supported for JOGL. - * Note that a bug in Java 6 (bug ID 6445278, currently hidden but available in Google cache) currently prevents - * the icon working for alt-tab on the settings dialog in Windows. - * - * @param value An array of BufferedImages to use as icons. - * (Default: not set) - */ - public void setIcons(Object[] value) { - put("Icons", value); - } - - public int getFrameRate() { - return getInteger("FrameRate"); - } - - public boolean useInput() { - return getBoolean("UseInput"); - } - - public String getRenderer() { - return getString("Renderer"); - } - - public int getWidth() { - return getInteger("Width"); - } - - public int getHeight() { - return getInteger("Height"); - } - - public int getBitsPerPixel() { - return getInteger("BitsPerPixel"); - } - - public int getFrequency() { - return getInteger("Frequency"); - } - - public int getDepthBits() { - return getInteger("DepthBits"); - } - - public int getStencilBits() { - return getInteger("StencilBits"); - } - - public int getSamples() { - return getInteger("Samples"); - } - - public String getTitle() { - return getString("Title"); - } - - public boolean isVSync() { - return getBoolean("VSync"); - } - - public boolean isFullscreen() { - return getBoolean("Fullscreen"); - } - - public boolean useJoysticks() { - return !getBoolean("DisableJoysticks"); - } - - public String getAudioRenderer() { - return getString("AudioRenderer"); - } - - public Object[] getIcons() { - return (Object[]) get("Icons"); - } - - public void setSettingsDialogImage(String path) { - settingsDialogImage = path; - } - - public String getSettingsDialogImage() { - return settingsDialogImage; - } -} +/* + * Copyright (c) 2009-2010 jMonkeyEngine + * 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 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.system; + +import com.jme3.renderer.Renderer; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.prefs.BackingStoreException; +import java.util.prefs.Preferences; + +public class AppSettings extends HashMap { + + private static final AppSettings defaults = new AppSettings(false); + public static final String LWJGL_OPENGL1 = "LWJGL-OPENGL1", + LWJGL_OPENGL2 = "LWJGL-OpenGL2", + LWJGL_OPENGL3 = "LWJGL-OpenGL3", + LWJGL_OPENGL_ANY = "LWJGL-OpenGL-Any", + JOGL = "JOGL", + NULL = "NULL"; + public static final String LWJGL_OPENAL = "LWJGL"; + private String settingsDialogImage = "/com/jme3/app/Monkey.png"; + + static { + defaults.put("Width", 640); + defaults.put("Height", 480); + defaults.put("BitsPerPixel", 24); + defaults.put("Frequency", 60); + defaults.put("DepthBits", 24); + defaults.put("StencilBits", 0); + defaults.put("Samples", 0); + defaults.put("Fullscreen", false); + defaults.put("Title", "jMonkey Engine 3.0"); + defaults.put("Renderer", LWJGL_OPENGL2); + defaults.put("AudioRenderer", LWJGL_OPENAL); + defaults.put("DisableJoysticks", true); + defaults.put("UseInput", true); + defaults.put("VSync", false); + defaults.put("FrameRate", -1); + // defaults.put("Icons", null); + + // disable these settings to benchmark speed +// defaults.put("VSync", true); +// defaults.put("FrameRate", 60); + } + + /** + * Create Application settings + * use loadDefault=true, to load jME default values. + * use false if you want to change some settings but you would like the application to remind other settings from previous launches + * @param loadDefaults + */ + public AppSettings(boolean loadDefaults) { + if (loadDefaults) { + putAll(defaults); + } + } + + public void copyFrom(AppSettings other) { + this.putAll(other); + } + + public void mergeFrom(AppSettings other) { + for (String key : other.keySet()) { + if (get(key) == null) { + put(key, other.get(key)); + } + } + } + + public void load(InputStream in) throws IOException { + Properties props = new Properties(); + props.load(in); + for (Map.Entry entry : props.entrySet()) { + String key = (String) entry.getKey(); + String val = (String) entry.getValue(); + if (val != null) { + val = val.trim(); + } + if (key.endsWith("(int)")) { + key = key.substring(0, key.length() - 5); + int iVal = Integer.parseInt(val); + putInteger(key, iVal); + } else if (key.endsWith("(string)")) { + putString(key.substring(0, key.length() - 8), val); + } else if (key.endsWith("(bool)")) { + boolean bVal = Boolean.parseBoolean(val); + putBoolean(key.substring(0, key.length() - 6), bVal); + } else { + throw new IOException("Cannot parse key: " + key); + } + } + } + + public void save(OutputStream out) throws IOException { + Properties props = new Properties(); + for (Map.Entry entry : entrySet()) { + Object val = entry.getValue(); + String type; + if (val instanceof Integer) { + type = "(int)"; + } else if (val instanceof String) { + type = "(string)"; + } else if (val instanceof Boolean) { + type = "(bool)"; + } else { + throw new UnsupportedEncodingException(); + } + props.setProperty(entry.getKey() + type, val.toString()); + } + props.store(out, "jME3 AppSettings"); + } + + public void load(String preferencesKey) throws BackingStoreException { + Preferences prefs = Preferences.userRoot().node(preferencesKey); + String[] keys = prefs.keys(); + if (keys != null) { + for (String key : keys) { + Object defaultValue = defaults.get(key); + if (defaultValue instanceof Integer) { + put(key, prefs.getInt(key, (Integer) defaultValue)); + } else if (defaultValue instanceof String) { + put(key, prefs.get(key, (String) defaultValue)); + } else if (defaultValue instanceof Boolean) { + put(key, prefs.getBoolean(key, (Boolean) defaultValue)); + } + } + } + } + + public void save(String preferencesKey) throws BackingStoreException { + Preferences prefs = Preferences.userRoot().node(preferencesKey); + for (String key : keySet()) { + prefs.put(key, get(key).toString()); + } + } + + public int getInteger(String key) { + Integer i = (Integer) get(key); + if (i == null) { + return 0; + } + + return i.intValue(); + } + + public boolean getBoolean(String key) { + Boolean b = (Boolean) get(key); + if (b == null) { + return false; + } + + return b.booleanValue(); + } + + public String getString(String key) { + String s = (String) get(key); + if (s == null) { + return null; + } + + return s; + } + + public void putInteger(String key, int value) { + put(key, Integer.valueOf(value)); + } + + public void putBoolean(String key, boolean value) { + put(key, Boolean.valueOf(value)); + } + + public void putString(String key, String value) { + put(key, value); + } + + /** + * @param frameRate The frame-rate is the upper limit on how high + * the application's frames-per-second can go. + * (Default: -1 no frame rate limit imposed) + */ + public void setFrameRate(int frameRate) { + putInteger("FrameRate", frameRate); + } + + /** + * @param use If true, the application will initialize and use input. + * Set to false for headless applications that do not require keyboard + * or mouse input. + * (Default: true) + */ + public void setUseInput(boolean use) { + putBoolean("UseInput", use); + } + + /** + * @param use If true, the application will initialize and use joystick + * input. Set to false if no joystick input is desired. + * (Default: false) + */ + public void setUseJoysticks(boolean use) { + putBoolean("DisableJoysticks", !use); + } + + /** + * Set the graphics renderer to use, one of:
+ *
    + *
  • AppSettings.LWJGL_OPENGL1 - Force OpenGL1.1 compatability
  • + *
  • AppSettings.LWJGL_OPENGL2 - Force OpenGL2 compatability
  • + *
  • AppSettings.LWJGL_OPENGL3 - Force OpenGL3.3 compatability
  • + *
  • AppSettings.LWJGL_OPENGL_ANY - Choose an appropriate + * OpenGL version based on system capabilities
  • + *
  • null - Disable graphics rendering
  • + *
+ * @param renderer The renderer to set + * (Default: AppSettings.LWJGL_OPENGL2) + */ + public void setRenderer(String renderer) { + putString("Renderer", renderer); + } + + /** + * Set a custom graphics renderer to use. The class should implement + * the {@link Renderer} interface. + * @param clazz The custom graphics renderer class. + * (Default: not set) + */ + public void setCustomRenderer(Class clazz){ + put("Renderer", "CUSTOM" + clazz.getName()); + } + + /** + * Set the audio renderer to use. One of:
+ *
    + *
  • AppSettings.LWJGL_OPENAL - Default for LWJGL
  • + *
  • null - Disable audio
  • + *
+ * @param audioRenderer + * (Default: LWJGL) + */ + public void setAudioRenderer(String audioRenderer) { + putString("AudioRenderer", audioRenderer); + } + + /** + * @param value the width for the rendering display. + * (Default: 640) + */ + public void setWidth(int value) { + putInteger("Width", value); + } + + /** + * @param value the height for the rendering display. + * (Default: 480) + */ + public void setHeight(int value) { + putInteger("Height", value); + } + + /** + * Set the resolution for the rendering display + * @param width The width + * @param height The height + * (Default: 640x480) + */ + public void setResolution(int width, int height) { + setWidth(width); + setHeight(height); + } + + /** + * Set the frequency, also known as refresh rate, for the + * rendering display. + * @param value The frequency + * (Default: 60) + */ + public void setFrequency(int value) { + putInteger("Frequency", value); + } + + /** + * Set the bits per pixel for the display. Appropriate + * values are 16 for RGB565 color format, or 24 for RGB8 color format. + * + * @param value The bits per pixel to set + * (Default: 24) + */ + public void setBitsPerPixel(int value) { + putInteger("BitsPerPixel", value); + } + + /** + * Set the number of samples per pixel. A value of 1 indicates + * each pixel should be single-sampled, higher values indicate + * a pixel should be multi-sampled. + * + * @param value The number of samples + * (Default: 1) + */ + public void setSamples(int value) { + putInteger("Samples", value); + } + + /** + * @param title The title of the rendering display + * (Default: jMonkeyEngine 3.0) + */ + public void setTitle(String title) { + putString("Title", title); + } + + /** + * @param value true to enable full-screen rendering, false to render in a window + * (Default: false) + */ + public void setFullscreen(boolean value) { + putBoolean("Fullscreen", value); + } + + /** + * Set to true to enable vertical-synchronization, limiting and synchronizing + * every frame rendered to the monitor's refresh rate. + * @param value + * (Default: false) + */ + public void setVSync(boolean value) { + putBoolean("VSync", value); + } + + /** + * Enable 3D stereo. + *

This feature requires hardware support from the GPU driver. + * See: http://en.wikipedia.org/wiki/Quad_buffering
+ * Once enabled, filters or scene processors that handle 3D stereo rendering + * could use this feature to render using hardware 3D stereo.

+ * (Default: false) + */ + public void setStereo3D(boolean value){ + putBoolean("Stereo3D", value); + } + + /** + * Sets the application icons to be used, with the most preferred first. + * For Windows you should supply at least one 16x16 icon and one 32x32. The former is used for the title/task bar, + * the latter for the alt-tab icon. + * Linux (and similar platforms) expect one 32x32 icon. + * Mac OS X should be supplied one 128x128 icon. + *
+ * The icon is used for the settings window, and the LWJGL render window. Not currently supported for JOGL. + * Note that a bug in Java 6 (bug ID 6445278, currently hidden but available in Google cache) currently prevents + * the icon working for alt-tab on the settings dialog in Windows. + * + * @param value An array of BufferedImages to use as icons. + * (Default: not set) + */ + public void setIcons(Object[] value) { + put("Icons", value); + } + + public int getFrameRate() { + return getInteger("FrameRate"); + } + + public boolean useInput() { + return getBoolean("UseInput"); + } + + public String getRenderer() { + return getString("Renderer"); + } + + public int getWidth() { + return getInteger("Width"); + } + + public int getHeight() { + return getInteger("Height"); + } + + public int getBitsPerPixel() { + return getInteger("BitsPerPixel"); + } + + public int getFrequency() { + return getInteger("Frequency"); + } + + public int getDepthBits() { + return getInteger("DepthBits"); + } + + public int getStencilBits() { + return getInteger("StencilBits"); + } + + public int getSamples() { + return getInteger("Samples"); + } + + public String getTitle() { + return getString("Title"); + } + + public boolean isVSync() { + return getBoolean("VSync"); + } + + public boolean isFullscreen() { + return getBoolean("Fullscreen"); + } + + public boolean useJoysticks() { + return !getBoolean("DisableJoysticks"); + } + + public String getAudioRenderer() { + return getString("AudioRenderer"); + } + + public boolean useStereo3D(){ + return getBoolean("Stereo3D"); + } + + public Object[] getIcons() { + return (Object[]) get("Icons"); + } + + public void setSettingsDialogImage(String path) { + settingsDialogImage = path; + } + + public String getSettingsDialogImage() { + return settingsDialogImage; + } +}