/******************************************************************************* | |
* Copyright 2011 See AUTHORS file. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
******************************************************************************/ | |
package com.badlogic.gdx.backends.jglfw; | |
import com.badlogic.gdx.Gdx; | |
import com.badlogic.gdx.Graphics.DisplayMode; | |
import com.badlogic.gdx.backends.jglfw.JglfwGraphics.JglfwDisplayMode; | |
import com.badlogic.gdx.graphics.Color; | |
import com.badlogic.gdx.utils.Array; | |
import java.awt.GraphicsDevice; | |
import java.awt.GraphicsEnvironment; | |
/** @author Nathan Sweet */ | |
public class JglfwApplicationConfiguration { | |
/** Title of application window. **/ | |
public String title = ""; | |
/** Initial width of the application window. **/ | |
public int width = 640; | |
/** Initial height of the application window. **/ | |
public int height = 480; | |
/** Intial x coordinate of the application window, -1 for center. **/ | |
public int x = -1; | |
/** Intial x coordinate of the application window, -1 for center. **/ | |
public int y = -1; | |
/** True to start in fullscreen. **/ | |
public boolean fullscreen; | |
/** Monitor index to use for fullscreen. **/ | |
public int fullscreenMonitorIndex = -1; | |
/** Number of bits per color channel. **/ | |
public int r = 8, g = 8, b = 8, a = 8; | |
/** Number of bits for the depth buffer. **/ | |
public int depth = 16; | |
/** Number of bits for the stencil buffer. **/ | |
public int stencil = 0; | |
/** Number of samples for MSAA **/ | |
public int samples = 0; | |
/** True to enable vsync. **/ | |
public boolean vSync = true; | |
/** True if the window is resizable. **/ | |
public boolean resizable = true; | |
/** True to call System.exit() when the main loop is complete. **/ | |
public boolean forceExit = true; | |
/** True to have a title and border around the window. **/ | |
public boolean undecorated; | |
/** Causes the main loop to run on the EDT instead of a new thread, for easier interoperability with AWT/Swing. Broken on Linux. **/ | |
public boolean runOnEDT; | |
/** The color to clear the window immediately after creation. **/ | |
public Color initialBackgroundColor = Color.BLACK; | |
/** True to hide the window when it is created. The window must be shown with {@link JglfwGraphics#show()}. **/ | |
public boolean hidden; | |
/** Target framerate when the window is in the foreground. The CPU sleeps as needed. Use 0 to never sleep. **/ | |
public int foregroundFPS = 60; | |
/** Target framerate when the window is in the background. The CPU sleeps as needed. Use 0 to never sleep, -1 to not render. **/ | |
public int backgroundFPS = 60; | |
/** Target framerate when the window is hidden or minimized. The CPU sleeps as needed. Use 0 to never sleep, -1 to not render. **/ | |
public int hiddenFPS = -1; | |
/** Prefrences location on desktop. Default: current directory + ".prefs" */ | |
public String preferencesLocation = ".prefs/"; | |
static public DisplayMode[] getDisplayModes () { | |
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); | |
java.awt.DisplayMode desktopMode = device.getDisplayMode(); | |
java.awt.DisplayMode[] displayModes = device.getDisplayModes(); | |
Array<DisplayMode> modes = new Array(); | |
outer: | |
for (java.awt.DisplayMode mode : displayModes) { | |
for (DisplayMode other : modes) | |
if (other.width == mode.getWidth() && other.height == mode.getHeight() && other.bitsPerPixel == mode.getBitDepth()) | |
continue outer; // Duplicate. | |
if (mode.getBitDepth() != desktopMode.getBitDepth()) continue; | |
modes.add(new JglfwDisplayMode(mode.getWidth(), mode.getHeight(), mode.getRefreshRate(), mode.getBitDepth())); | |
} | |
return modes.toArray(DisplayMode.class); | |
} | |
static public DisplayMode getDesktopDisplayMode () { | |
java.awt.DisplayMode mode = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode(); | |
return new JglfwDisplayMode(mode.getWidth(), mode.getHeight(), mode.getRefreshRate(), mode.getBitDepth()); | |
} | |
} |