/******************************************************************************* * This is part of SketchChair, an open-source tool for designing your own furniture. * www.sketchchair.cc * * Copyright (C) 2012, Diatom Studio ltd. Contact: hello@diatom.cc * * 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 cc.sketchchair.core; import java.awt.Frame; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.swing.JFileChooser; import cc.sketchchair.environments.Environments; import cc.sketchchair.ragdoll.ergoDoll; import cc.sketchchair.sketch.Sketch; import cc.sketchchair.sketch.SketchGlobals; import cc.sketchchair.sketch.SketchTools; import cc.sketchchair.widgets.WidgetLoad; import cc.sketchchair.widgets.WidgetMaterials; import cc.sketchchair.widgets.WidgetPlanes; import cc.sketchchair.widgets.WidgetPreviewPanel; import cc.sketchchair.widgets.WidgetSlices; import cc.sketchchair.widgets.WidgetToolSettings; import CloudHook.CloudHook; import ModalGUI.GUIComponentSet; import ModalGUI.GUIPanel; import ModalGUI.GUIPanelTabbed; import ModalGUI.ModalGUI; import ShapePacking.spShapePack; import processing.core.PApplet; import processing.core.PFont; import processing.core.PGraphics; import processing.core.PImage; import toxi.geom.Ray3D; import toxi.geom.Vec3D; //import toxi.physics.VerletPhysics; /** * Static global variables used in SketchChair. * Since keeping one large Global class is not good coding practice this class might be either split up into several singleton or factory classes. * @author gregsaul * */ public class GLOBAL { public static boolean useMaskedUpdating = false; static SketchProperties sketchProperties = new SketchProperties(); public static double CAM_OFFSET_X = 300; public static double CAM_OFFSET_Y = -900; public static int windowWidth; public static int windowHeight; public static PFont font; public PImage clickToStart; public String version = "0.9.0.1"; public static boolean forceReset = false; public static boolean cropExportToScreen = false; public static SketchGlobals SketchGlobals; public static boolean dxfCapture = false; public static String dxfLocation = "./designOutput.dxf"; //public static MovieMaker mm; public static boolean captureScreen = false; static int designDisplayList; //contains the title img static PImage tittleImg; static Object myMovie = null; static int tittleImageNum = 0; static public SketchChairs sketchChairs; //static public VerletPhysics physics; static public jBullet jBullet; static public UITools uiTools; //static public RagDoll ragDoll = null; public static ModalGUI gui; static public Environments environments; /* * What mode are we in? 0 - sketch seat 1 - view in 3d */ static public int mode = 0; static public float rotateModelsX; static public float rotateModelsY; static public PGraphics g; public static PApplet applet; public static boolean savePDF = false; public static int sketch_id; static double ZOOM = 1.5f; public static Ray3D debugRay = null; public static Vec3D debugRayIntersection = null; public static ergoDoll person = null; public static spShapePack shapePack; static public Undo undo = new Undo(); static public Long tick = 0l; static public WidgetPlanes planesWidget; static public WidgetSlices slicesWidget; static public WidgetLoad loadWidget; static public WidgetMaterials widgetMaterials; static public WidgetToolSettings widgetToolSettings; public static boolean performanceMode = true; static JFileChooser fc; public static String pdfSaveLocation = null; public static MeasureTool measuretTool; public static String LAST_SAVED_LOCATION = null; public static int timeoutCounter = 1200000 * 1000; //seconds of inactivity untill timeout. public static int inativeCounter = 0; //seconds of inactivity untill timeout. public static boolean personTranslate = true; public static boolean autoRotate = false; public static boolean modeChanged = false; public static float rememberLasty; public static boolean resetting = false; static CloudHook cloudHook = new CloudHook( "http://sketchchair.cc/framework/CloudHook.php"); public static boolean autoOpenPDF = true; public static String lastLoadLocation = null; public static boolean screenshot = false; public static int renderChairColour = 255; public static WidgetLoad widgetLoad; public static String dxfSaveLocation; public static boolean saveDXF; public static SketchChair copyOfChair; public static GUIComponentSet toggleSetSlices; public static String pngPreviewSaveLocation; public static boolean exportPreviewPNG = false; static SkchAutamata skchAutomatic = new SkchAutamata(); public static boolean floorOn = true; public static boolean saveChairToFile =false; public static boolean saveChairToFileAuto = false; public static boolean displayIntroPanel = true; public static boolean forceResize = false; public static boolean deleteAllChairsFlag =false; public static String username = null; public static String password = null; public static boolean authenticated = false; public static String sessionID = null; public static float prevRotateModelsX = 0; public static float prevRotateModelsY = -(float)Math.PI/4; public static GUIPanelTabbed designToolbarAdvanced = null; public static GUIPanelTabbed designToolbarBasic = null; public static GUIPanel slicePanel; public static WidgetPreviewPanel previewWidget; public static Frame frame; public static int planeID = 0; protected static String loadChairLocation = null; public static String saveChairLocation = null; public static String savePatternLocation = null; protected static String saveDXFLocation = null; protected static String importSVGLocation = null; // create and load default properties Properties properties = new Properties(); public static boolean debugPickBuffer =false; public static GUIPanelTabbed designToolbarPattern = null; public static GUIPanel cameraPanel; public static GUIPanel patternCameraPanel; public final static int color(int x, int y, int z) { if (x > 255) x = 255; else if (x < 0) x = 0; if (y > 255) y = 255; else if (y < 0) y = 0; if (z > 255) z = 255; else if (z < 0) z = 0; return 0xff000000 | (x << 16) | (y << 8) | z; } public final static int color(int x, int y, int z, int a) { if (a > 255) a = 255; else if (a < 0) a = 0; if (x > 255) x = 255; else if (x < 0) x = 0; if (y > 255) y = 255; else if (y < 0) y = 0; if (z > 255) z = 255; else if (z < 0) z = 0; return (a << 24) | (x << 16) | (y << 8) | z; } /** * @return the zOOM */ public static double getZOOM() { return ZOOM; } public static boolean isMacOSX() { String osName = System.getProperty("os.name"); return osName.startsWith("Mac OS X"); } /** * @param zOOM the zOOM to set */ public static void setZOOM(float zOOM) { ZOOM = zOOM; } GLOBAL(PApplet applet) { LOGGER.info("Making GLOBAL"); GLOBAL.applet = applet; gui = new ModalGUI(); gui.applet = applet; gui.appletStatic = applet; ZOOM = 1f; CAM_OFFSET_X = -600; CAM_OFFSET_Y = -900; this.font = applet.loadFont("SegoeUI-12.vlw"); //this.font = applet.createFont("Helvetica", 12); gui.myFontMedium = this.font; /* URL url = findResource("TrebuchetMS-12.vlw"); try { InputStream input = createInput(filename); this.font = new PFont(input); } catch (Exception e) { die("Could not load font " + filename + ". " + "Make sure that the font has been copied " + "to the data folder of your sketch.", e); } */ sketchChairs = new SketchChairs(); //physics = new VerletPhysics( //new Vec3D(0, 2f, 0), 300, 90f, .090f); jBullet = new jBullet(); uiTools = new UITools(applet); //ragDoll = null; environments = new Environments(); /* * What mode are we in? 0 - sketch seat 1 - view in 3d */ mode = 0; rotateModelsX = 0; rotateModelsY = 0; savePDF = false; // psketch_id; setZOOM(1f); debugRay = null; debugRayIntersection = null; person = null; shapePack = new spShapePack(); undo = new Undo(); tick = 0l; planesWidget = new WidgetPlanes(0, 0, 0, 0, gui); loadWidget = new WidgetLoad(); widgetMaterials = new WidgetMaterials(0, 0, 0, 0, gui); performanceMode = false; fc = null; pdfSaveLocation = null; measuretTool = new MeasureTool(); LAST_SAVED_LOCATION = null; SketchGlobals = new SketchGlobals(); SketchGlobals.undo = this.undo; } public final int color(float x, float y, float z) { if (x > 255) x = 255; else if (x < 0) x = 0; if (y > 255) y = 255; else if (y < 0) y = 0; if (z > 255) z = 255; else if (z < 0) z = 0; return 0xff000000 | ((int) x << 16) | ((int) y << 8) | (int) z; } }