// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.plugins.main.saveload.image;
import graphtea.graph.graph.AbstractGraphRenderer;
import graphtea.graph.graph.GraphModel;
import graphtea.platform.Application;
import graphtea.platform.parameter.Parameter;
import graphtea.platform.parameter.Parametrizable;
import graphtea.platform.preferences.lastsettings.UserModifiableProperty;
import graphtea.plugins.main.saveload.core.GraphIOException;
import graphtea.plugins.main.saveload.core.extension.GraphWriterExtension;
import javax.imageio.ImageIO;
import java.io.File;
/**
* @author Azin Azadi
*/
public class SaveImage implements GraphWriterExtension, Parametrizable {
@UserModifiableProperty(displayName = "Default Image Extension")
@Parameter(name = "File Extension", description = "The file extension for the output.")
public static String extension = "png";
/**
* saves g in file as a (.extension) image
*
* @param extension eg. jpeg, png, bmp, ... It can be any extension supported by ImageIO.write
*/
public static void saveImage(GraphModel g, final File ff, String extension) {
Image.save(Image.Graph2Image((AbstractGraphRenderer.getCurrentGraphRenderer(Application.blackboard)), g), ff, extension);
}
public String getName() {
return "Image";
}
public String getExtension() {
return extension;
}
public void write(File file, GraphModel graph) throws GraphIOException {
//todo
// throw new RuntimeException("not implemented");
saveImage(graph, file, extension);
}
public String getDescription() {
return extension + " File Format";
}
public String checkParameters() {
if (!ImageIO.getImageWritersByFormatName(extension).hasNext())
return "This file format is not supported!";
else
return null;
}
}