Only add the tooltip when building the online help
[scilab.git] / scilab / modules / helptools / src / java / org / scilab / modules / helptools / image / SVGImageConverter.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.helptools.image;
14
15 import java.io.File;
16 import java.io.FileInputStream;
17 import java.io.FileNotFoundException;
18 import java.io.FileOutputStream;
19 import java.io.IOException;
20 import java.io.OutputStream;
21 import java.io.StringReader;
22 import java.util.Map;
23
24 import org.apache.batik.transcoder.TranscoderException;
25 import org.apache.batik.transcoder.TranscoderInput;
26 import org.apache.batik.transcoder.TranscoderOutput;
27 import org.apache.batik.transcoder.Transcoder;
28 import org.apache.batik.transcoder.image.ImageTranscoder;
29 import org.apache.batik.transcoder.image.PNGTranscoder;
30
31 import org.scilab.modules.helptools.HTMLDocbookTagConverter;
32
33 /**
34  * SVG to PNG converter
35  */
36 public class SVGImageConverter implements ExternalImageConverter {
37
38     private static SVGImageConverter instance;
39     private final HTMLDocbookTagConverter.GenerationType type;
40
41     private SVGImageConverter(HTMLDocbookTagConverter.GenerationType type) {
42         this.type = type;
43     }
44
45     /**
46      * {@inheritDoc}
47      */
48     public String getMimeType() {
49         return "image/svg";
50     }
51
52     /**
53      * {@inheritDoc}
54      */
55     public boolean mustRegenerate() {
56         return false;
57     }
58
59     /**
60      * Since this a singleton class...
61      * @return this
62      */
63     public static ExternalImageConverter getInstance(HTMLDocbookTagConverter.GenerationType type) {
64         if (instance == null) {
65             instance = new SVGImageConverter(type);
66         }
67
68         return instance;
69     }
70
71     /**
72      * {@inheritDoc}
73      */
74     public String convertToImage(String currentFile, String svg, Map<String, String> attributes, File imageFile, String imageName) {
75         return convertToPNG(new TranscoderInput(new StringReader(svg)), imageFile, imageName);
76     }
77
78     /**
79      * {@inheritDoc}
80      */
81     public String convertToImage(File svg, Map<String, String> attributes, File imageFile, String imageName) {
82         try {
83             return convertToPNG(new TranscoderInput(new FileInputStream(svg)), imageFile, imageName);
84         } catch (FileNotFoundException e) {
85             System.err.println("Problem when exporting SVG to " + imageFile + "!\n" + e.toString());
86         }
87
88         return null;
89     }
90
91     /**
92      * Make really the conversion from svg to png
93      */
94     private static String convertToPNG(TranscoderInput input, File imageFile, String imageName) {
95         Transcoder trans = new PNGTranscoder();
96         trans.addTranscodingHint(ImageTranscoder.KEY_FORCE_TRANSPARENT_WHITE, Boolean.TRUE);
97
98         try {
99             OutputStream os = new FileOutputStream(imageFile);
100             TranscoderOutput output = new TranscoderOutput(os);
101             trans.transcode(input, output);
102             os.flush();
103             os.close();
104             return "<img src=\'" + imageName + "\'/>";
105         } catch (Exception e) {
106             System.err.println("Problem when exporting SVG to " + imageFile + "!\n" + e.toString());
107         }
108
109         return null;
110     }
111 }