Browse Source

* Added stereo 3D to AppSettings

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7822 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
Sha..om 14 years ago
parent
commit
b2c7849355
1 changed files with 469 additions and 453 deletions
  1. 469 453
      engine/src/core/com/jme3/system/AppSettings.java

+ 469 - 453
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<String, Object> {
-
-    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<Object, Object> 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<String, Object> 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:<br>
-     * <ul>
-     * <li>AppSettings.LWJGL_OPENGL1 - Force OpenGL1.1 compatability</li>
-     * <li>AppSettings.LWJGL_OPENGL2 - Force OpenGL2 compatability</li>
-     * <li>AppSettings.LWJGL_OPENGL3 - Force OpenGL3.3 compatability</li>
-     * <li>AppSettings.LWJGL_OPENGL_ANY - Choose an appropriate 
-     * OpenGL version based on system capabilities</li>
-     * <li>null - Disable graphics rendering</li>
-     * </ul>
-     * @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:<br>
-     * <ul>
-     * <li>AppSettings.LWJGL_OPENAL - Default for LWJGL</li>
-     * <li>null - Disable audio</li>
-     * </ul>
-     * @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.
-     * <br/>
-     * 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<String, Object> {
+
+    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<Object, Object> 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<String, Object> 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:<br>
+     * <ul>
+     * <li>AppSettings.LWJGL_OPENGL1 - Force OpenGL1.1 compatability</li>
+     * <li>AppSettings.LWJGL_OPENGL2 - Force OpenGL2 compatability</li>
+     * <li>AppSettings.LWJGL_OPENGL3 - Force OpenGL3.3 compatability</li>
+     * <li>AppSettings.LWJGL_OPENGL_ANY - Choose an appropriate 
+     * OpenGL version based on system capabilities</li>
+     * <li>null - Disable graphics rendering</li>
+     * </ul>
+     * @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:<br>
+     * <ul>
+     * <li>AppSettings.LWJGL_OPENAL - Default for LWJGL</li>
+     * <li>null - Disable audio</li>
+     * </ul>
+     * @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.
+     * <p>This feature requires hardware support from the GPU driver. 
+     * See: http://en.wikipedia.org/wiki/Quad_buffering<br>
+     * Once enabled, filters or scene processors that handle 3D stereo rendering
+     * could use this feature to render using hardware 3D stereo.</p>
+     * (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.
+     * <br/>
+     * 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;
+    }
+}