package org.jzy3d.chart;

import java.io.File;
import java.io.IOException;

import org.apache.log4j.Logger;
import org.jzy3d.chart.controllers.mouse.camera.ICameraMouseController;
import org.jzy3d.maths.Rectangle;

import com.jogamp.opengl.util.texture.TextureData;
import com.jogamp.opengl.util.texture.TextureIO;

public class ChartLauncher {
    static Logger logger = Logger.getLogger(ChartLauncher.class);
    
    public static String SCREENSHOT_FOLDER = "./data/screenshots/";
    
    public static ICameraMouseController openChart(Chart chart) {
        return openChart(chart, new Rectangle(0, 0, 800, 600), "Jzy3d", true);
    }

    public static ICameraMouseController openChart(Chart chart, Rectangle rectangle) {
        return openChart(chart, rectangle, "Jzy3d", true);
    }

    public static ICameraMouseController openChart(Chart chart, String title) {
        return openChart(chart, new Rectangle(0, 0, 800, 600), title, true);
    }

    public static ICameraMouseController openChart(Chart chart, Rectangle bounds, String title) {
        return openChart(chart, bounds, title, true);
    }

    public static ICameraMouseController openChart(Chart chart, Rectangle bounds, String title, boolean allowSlaveThreadOnDoubleClick) {
        return openChart(chart, bounds, title, allowSlaveThreadOnDoubleClick, false);
    }

    public static ICameraMouseController openChart(final Chart chart, Rectangle bounds, final String title, boolean allowSlaveThreadOnDoubleClick, boolean startThreadImmediatly) {
        ICameraMouseController mouse = configureControllers(chart, title, allowSlaveThreadOnDoubleClick, startThreadImmediatly);
        chart.render();
        frame(chart, bounds, title);
        return mouse;
    }

    public static ICameraMouseController configureControllers(final Chart chart, final String title, boolean allowSlaveThreadOnDoubleClick, boolean startThreadImmediatly) {
        chart.addKeyController();
        chart.addScreenshotKeyController();
        return chart.addMouseController();
    }

    public static void openStaticChart(Chart chart) {
        openStaticChart(chart, new Rectangle(0, 0, 800, 600), "Jzy3d");
    }

    public static void openStaticChart(Chart chart, Rectangle bounds, String title) {
        chart.render();
        frame(chart, bounds, title);
    }

    public static void instructions() {
        System.out.println(makeInstruction());
        System.out.println("------------------------------------");
    }

    public static String makeInstruction() {
        StringBuffer sb = new StringBuffer();
        sb.append("Rotate     : Left click and drag mouse\n");
        sb.append("Scale      : Roll mouse wheel\n");
        sb.append("Z Shift    : Right click and drag mouse\n");
        sb.append("Animate    : Double left click\n");
        sb.append("Screenshot : Press 's'\n");
        return sb.toString();
    }

    
    /* FRAMES */
    
    /*public static void frame(Chart chart){
    	Screen screen = Settings.getInstance().getScreen();
        frame(chart, new Rectangle(0,0,screen.getWidth(), screen.getHeight()), "Jzy3d");
    }*/
    
    public static void frame(Chart chart, Rectangle bounds, String title){
    	chart.getFactory().newFrame(chart, bounds, title);
    }
    
    /* SCREENSHOT */

    public static void screenshot(Chart chart, String filename) throws IOException {
        File output = new File(filename);
        if (!output.getParentFile().exists())
            output.mkdirs();
        TextureData screen = chart.screenshot();
        if(screen!=null){
        	TextureIO.write(screen, new File(filename));    
	        logger.info("Dumped screenshot in: " + filename);
        }
        else{
        	logger.error("screenshot not available");
        }
    }
}

 

Ads help maintain this website.