/*********************************************************************** * mt4j Copyright (c) 2008 - 2009 C.Ruff, Fraunhofer-Gesellschaft All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * ***********************************************************************/ package org.mt4j.util; import org.mt4j.MTApplication; import org.mt4j.util.math.Vector3D; /** * A class with some configurations to read the current settings from. * * @author Christopher Ruff */ public class MT4jSettings { /** The const and settings. */ private static MT4jSettings constAndSettings = null; /** Screen Size X. */ public int windowWidth = 1024; /** Screen Size Y. */ public int windowHeight = 768; //Draw Modes /** The Constant OPENGL_MODE. */ public static final int OPENGL_MODE = 1; /** The Constant P3D_MODE. */ public static final int P3D_MODE = 2; /** Current DrawMode. */ public int renderer = P3D_MODE; /** The num samples. */ public int numSamples = 0; /** Frame Title. */ public String frameTitle = "MT-Application"; /** Maximum FrameRate. */ public int maxFrameRate = 60; /** Start time of the app. */ public long programStartTime = 0; /** The Constant ARCHITECTURE_32_BIT. */ public static final int ARCHITECTURE_32_BIT = 32; /** The Constant ARCHITECTURE_64_BIT. */ public static final int ARCHITECTURE_64_BIT = 64; /** The architecture. */ public int architecture = ARCHITECTURE_32_BIT; /** The v sync. */ public boolean vSync = false; /** The fullscreen. */ public static boolean fullscreen = false; /** The display. */ public int display = 1; /** The fullscreen exclusive. */ public boolean fullscreenExclusive = false; /** The DEFAUL t_ fon t_ path. */ public static String DEFAULT_SETTINGS_PATH = new String(/* MTApplication.separator */ "" ); /** The DEFAUL t_ dat a_ folde r_ path. */ public static String DEFAULT_DATA_FOLDER_PATH = new String(/* MTApplication.separator + */ "data" + MTApplication.separator); /** The DEFAUL t_ fon t_ path. */ public static String DEFAULT_FONT_PATH = DEFAULT_DATA_FOLDER_PATH; /** The DEFAUL t_ image s_ path. */ public static String DEFAULT_IMAGES_PATH = new String( /* System.getProperty("user.dir") + */ /* MTApplication.separator + */ "data" + MTApplication.separator + "images" + MTApplication.separator); // public static String DEFAULT_VIDEOS_PATH = new String(System.getProperty("user.dir") + File.separator + "data" /*+ File.separator + "videos" */ + File.separator); //Since gsvideo looks into the ./data directory by itself /** The DEFAUL t_ video s_ path. */ public static String DEFAULT_VIDEOS_PATH = new String(""); /** The DEFAUL t_ sv g_ path. */ public static String DEFAULT_SVG_PATH = new String(/* MTApplication.separator + */ "data" + MTApplication.separator + "svg" + MTApplication.separator); /** The DEFAUL t_3 d_ mode l_ path. */ public static String DEFAULT_3D_MODEL_PATH = new String(/* MTApplication.separator + */ "data" + MTApplication.separator + "models" + MTApplication.separator); /** * Gets the path to the /data folder. * * @return the default data path */ public String getDataFolderPath() { return DEFAULT_DATA_FOLDER_PATH; } /** * Gets the default settings path. * * @return the default settings path */ public String getDefaultSettingsPath() { return DEFAULT_SETTINGS_PATH; } /** * Gets the default font path. * * @return the default font path */ public String getDefaultFontPath(){ return DEFAULT_FONT_PATH; } /** * Gets the default images path. * * @return the default images path */ public String getDefaultImagesPath(){ return DEFAULT_IMAGES_PATH; } /** * Gets the default videos path. * * @return the default videos path */ public String getDefaultVideosPath(){ return DEFAULT_VIDEOS_PATH; } /** * Gets the default svg path. * * @return the default svg path */ public String getDefaultSVGPath(){ return DEFAULT_SVG_PATH; } /** * Gets the default3 d model path. * * @return the default3 d model path */ public String getDefault3DModelPath(){ return DEFAULT_3D_MODEL_PATH; } /** * Checks if is fullscreen. * * @return true, if is fullscreen */ public boolean isFullscreen(){ return fullscreen; } /** * Gets the num samples. * * @return the num samples */ public int getNumSamples() { return numSamples; } // /** // * Sets the num samples. // * // * @param numSamples the new num samples // */ // public void setNumSamples(int numSamples) { // this.numSamples = numSamples; // } /** * Checks if is multi sampling. * * @return true, if is multi sampling */ public boolean isMultiSampling(){ return getNumSamples() > 0; } /** * Instantiates a new constants and settings. */ private MT4jSettings(){ } /** * Returns the GlobalConstants and Settings Object. * Implements the singleton pattern. * * @return ConstantsAndHelpers object */ public static MT4jSettings getInstance(){ if (constAndSettings == null){ constAndSettings = new MT4jSettings(); return constAndSettings; }else{ return constAndSettings; } } /** * Gets the screen height. * * @return the screen height * @deprecated renamed to getWindowHeight() since this doesent return the screen height, but the MT4j window's height */ public int getScreenHeight() { return windowHeight; } /** * Gets the screen width. * * @return the screen width * @deprecated renamed to getWindowWidth() since this doesent return the screen width, but the MT4j window's width */ public int getScreenWidth() { return windowWidth; } /** * Gets the MT4j's window height. * * @return the window height */ public int getWindowHeight() { return windowHeight; } /** * Gets the MT4j's window width. * * @return the window width */ public int getWindowWidth() { return windowWidth; } /** * Gets the screen center. * * @return the screen center * @deprecated - use getWindowCenter() */ public float[] getScreenCenter(){ return new float[]{getWindowWidth()/2, getWindowHeight()/2 , 0}; } /** * Gets the window center. * * @return the window center */ public Vector3D getWindowCenter(){ return new Vector3D (getWindowWidth()/2, getWindowHeight()/2 , 0); } /** * Gets the renderer mode. * * @return the renderer mode */ public int getRendererMode() { return renderer; } // /** // * Sets the renderer mode. // * // * @param drawMode the new renderer mode // */ // public void setRendererMode(int drawMode) { // this.renderer = drawMode; // } // synchronized public long generateNewID(){ // return ConstantsAndHelpers.currentID++; // } // /** // * Sets the title of the application frame. // * Only takes effect if called right at the start. // * This should be called by internally only! // * // * @param frameTitle the frame title // */ // public void setFrameTitle(String frameTitle) { // this.frameTitle = frameTitle; // } /** * Gets the frame title. * * @return the frame title */ public String getFrameTitle() { return frameTitle; } // /** // * Sets the max frame rate. // * // * @param frameRate the new max frame rate // */ // public void setMaxFrameRate(int frameRate) { // this.maxFrameRate = frameRate; // } /** * Gets the max frame rate. * * @return the max frame rate */ public int getMaxFrameRate() { return maxFrameRate; } /** * Gets the program start time. * * @return the program start time */ public long getProgramStartTime() { return programStartTime; } // /** // * Sets the program start time. // * // * @param programStartTime the new program start time // */ // public void setProgramStartTime(long programStartTime) { // this.programStartTime = programStartTime; // } // /** // * NOTE: DONT SET THIS AFTER size() FROM PAPPLET HAS BEEN CALLED!. // * // * @param screenHeight the screen height // */ // public void setScreenHeight(int screenHeight) { // this.screenHeight = screenHeight; // } // /** // * NOTE: DONT SET THIS AFTER size() FROM PAPPLET HAS BEEN CALLED!. // * // * @param screenWidth the screen width // */ // public void setScreenWidth(int screenWidth) { // this.screenWidth = screenWidth; // } /** * Checks if is open gl mode. * * @return true, if is open gl mode */ public boolean isOpenGlMode(){ return this.getRendererMode() == MT4jSettings.OPENGL_MODE; } /** * Checks if is p3d mode. * * @return true, if is p3d mode */ public boolean isP3DMode(){ return this.getRendererMode() == MT4jSettings.P3D_MODE; } /** * Gets the architecture. (32/64 bit JVM) * * @return the architecture constant indicating architecture (32 or 64 bit) */ public int getArchitecture() { return this.architecture; } // /** // * Sets the architecture. // * <br>NOTE: Set automatically. DONT SET THIS YOURSELF! // * // * @param architecture the new architecture // */ // public void setArchitecture(int architecture) { // this.architecture = architecture; // } // /** // * Sets the vertical synchronization. // * <br>NOTE: Set automatically. DONT SET THIS YOURSELF! // * @param parseBoolean the new vertical synchronization // */ // public void setVerticalSynchronization(boolean parseBoolean) { // this.vSync = parseBoolean; // } /** * Checks if is vertical synchronization. * * @return true, if is vertical synchronization */ public boolean isVerticalSynchronization(){ return this.vSync; } /** * Gets the display. * * @return the display */ public int getDisplay() { return this.display; } /** * Checks if is fullscreen exclusive. * * @return true, if is fullscreen exclusive */ public boolean isFullscreenExclusive() { return this.fullscreenExclusive; } }