Only add the tooltip when building the online help
[scilab.git] / scilab / modules / helptools / src / java / org / scilab / modules / helptools / image / LaTeXImageConverter.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.BufferedReader;
16 import java.io.File;
17 import java.io.FileReader;
18 import java.io.StringReader;
19 import java.io.IOException;
20 import java.util.Map;
21
22 import javax.swing.JLabel;
23
24 import org.scilab.forge.jlatexmath.TeXConstants;
25 import org.scilab.forge.jlatexmath.TeXFormula;
26 import org.scilab.forge.jlatexmath.TeXIcon;
27 import org.scilab.forge.jlatexmath.ParseException;
28
29 import org.scilab.modules.helptools.HTMLDocbookTagConverter;
30
31 /**
32  * A LaTeX to PNG converter
33  * @author Calixte DENIZET
34  */
35 public class LaTeXImageConverter implements ExternalImageConverter {
36
37     private static LaTeXImageConverter instance;
38     private final HTMLDocbookTagConverter.GenerationType type;
39
40     private LaTeXImageConverter(HTMLDocbookTagConverter.GenerationType type) {
41         this.type = type;
42     }
43
44     /**
45      * {@inheritDoc}
46      */
47     public String getMimeType() {
48         return "image/latex";
49     }
50
51     /**
52      * {@inheritDoc}
53      */
54     public boolean mustRegenerate() {
55         return true;
56     }
57
58     /**
59      * Since it is a singleton class...
60      * @return this
61      */
62     public static ExternalImageConverter getInstance(HTMLDocbookTagConverter.GenerationType type) {
63         if (instance == null) {
64             instance = new LaTeXImageConverter(type);
65         }
66         return instance;
67     }
68
69     /**
70      * {@inheritDoc}
71      */
72     public String convertToImage(String currentFile, String latex, Map<String, String> attributes, File imageFile, String imageName) {
73         TeXIcon icon = null;
74         try {
75             TeXFormula formula = new TeXFormula(latex);
76             String display = attributes.get("style");
77             int style = TeXConstants.STYLE_DISPLAY;
78             if (display != null && display.equals("text")) {
79                 style = TeXConstants.STYLE_TEXT;
80             }
81
82             icon = formula.createTeXIcon(style, Integer.parseInt(attributes.get("fontsize")));
83
84             Image img = new Image(icon, icon.getIconWidth(), icon.getIconHeight(), icon.getIconHeight() - icon.getIconDepth(), icon.getIconDepth());
85             if (img != null && ImageConverter.convertIconToPNG(img.icon, imageFile)) {
86                 return ImageConverter.generateCode(img, imageName, attributes);
87             }
88
89             return null;
90
91         } catch (ParseException e) {
92             System.err.println(e);
93         }
94
95         return null;
96     }
97
98     /**
99      * {@inheritDoc}
100      */
101     public String convertToImage(File latex, Map<String, String> attributes, File imageFile, String imageName) {
102         BufferedReader input = null;
103         StringBuilder buffer = new StringBuilder();
104         boolean ok = false;
105         try {
106             input = new BufferedReader(new FileReader(latex));
107             String line = null;
108             while ((line = input.readLine()) != null) {
109                 buffer.append(line);
110                 buffer.append("\n");
111             }
112             ok = true;
113         } catch (IOException e) {
114             System.err.println(e);
115         }
116         if (input != null) {
117             try {
118                 input.close();
119             } catch (IOException e) {
120                 System.err.println(e);
121             }
122         }
123
124         if (ok) {
125             return convertToImage(latex.getName(), buffer.toString(), attributes, imageFile, imageName);
126         }
127
128         return null;
129     }
130 }