GPL + CeCILL Header change
[scilab.git] / scilab / modules / xcos / src / java / org / scilab / modules / xcos / utils / XcosDelegates.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - Clement David
4  * Copyright (C) 2011-2015 - Scilab Enterprises - Clement DAVID
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  * === LICENSE_END ===
15  *
16  */
17
18 package org.scilab.modules.xcos.utils;
19
20 import java.awt.image.BufferedImage;
21 import java.io.File;
22
23 import javax.imageio.ImageIO;
24
25 import org.scilab.modules.helptools.image.XcosImageConverter;
26 import org.scilab.modules.xcos.JavaController;
27 import org.scilab.modules.xcos.Kind;
28 import org.scilab.modules.xcos.graph.XcosDiagram;
29 import org.scilab.modules.xcos.io.XcosFileType;
30
31 import com.mxgraph.swing.mxGraphComponent;
32 import com.mxgraph.util.mxCellRenderer;
33
34 /**
35  * Class which contains all Xcos dependant function used by other modules.
36  */
37 public class XcosDelegates {
38
39     private XcosDelegates() {
40         // static singleton
41     }
42
43     /**
44      * Delegate method to avoid a strong dependency on helptools.
45      *
46      * @param helpID
47      * @param xcosFile
48      * @param imageFile
49      * @param imageName
50      * @throws Exception
51      *
52      * @see {@link XcosImageConverter}
53      */
54     public static final void convertToPNG(final String helpID, final String xcosFile, final File imageFile, final String imageName) throws Exception {
55         JavaController controller = new JavaController();
56
57         final XcosDiagram diag = new XcosDiagram(controller, controller.createObject(Kind.DIAGRAM), Kind.DIAGRAM, "");
58         diag.installListeners();
59
60         final XcosFileType filetype = XcosFileType.findFileType(xcosFile);
61         filetype.load(xcosFile, diag);
62         final mxGraphComponent graphComponent = diag.getAsComponent();
63         final BufferedImage image = mxCellRenderer.createBufferedImage(diag, null, 1, null, graphComponent.isAntiAlias(), null, graphComponent.getCanvas());
64         ImageIO.write(image, "png", imageFile);
65
66         controller.deleteObject(diag.getUID());
67     }
68 }