2
* =========================================================================
3
* This file is part of the JMathTeX Library - http://jmathtex.sourceforge.net
5
* Copyright (C) 2004-2007 Universiteit Gent
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or (at
10
* your option) any later version.
12
* This program is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* General Public License for more details.
17
* A copy of the GNU General Public License can be found in the file
18
* LICENSE.txt provided with the source distribution of this program (see
19
* the META-INF directory in the source jar). This license can also be
20
* found on the GNU website at http://www.gnu.org/licenses/gpl.html.
22
* If you did not receive a copy of the GNU General Public License along
23
* with this program, contact the lead developer, or write to the Free
24
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
29
package be.ugent.caagt.jmathtex.mathml;
33
import be.ugent.caagt.jmathtex.TeXConstants;
34
import java.util.HashMap;
37
* Responsible for parsing attribute values that can have units.
41
public static final int NO_UNIT = -1;
44
private static Map<String,Integer> mathUnits = new HashMap<String,Integer> ();
50
private final int unit;
54
* supported MathML unit types
56
mathUnits.put("em", TeXConstants.UNIT_EM);
57
mathUnits.put("ex", TeXConstants.UNIT_EX);
58
mathUnits.put("px", TeXConstants.UNIT_PIXEL);
59
mathUnits.put("pt", TeXConstants.UNIT_POINT);
60
mathUnits.put("pc", TeXConstants.UNIT_PICA); // autoboxing
63
public NumberUnit(String value, boolean unitAllowed) throws MathMLException {
64
// remove surrounding whitespace
67
boolean noUnit = false;
68
if (value.length() >= 2) { // unit = 2 characters
69
Object u = mathUnits.get(value.substring(value.length() - 2)
76
unit = ((Integer) u).intValue();
77
// remove unit from the string
78
value = value.substring(0, value.length() - 2);
88
double val = Double.parseDouble(value);
89
// if the value is 0 then the unit doesn't have to be specified, even
90
// if unitAllowed=true
91
if (unitAllowed && noUnit && val != 0)
92
throw new MathMLException("Invalid unit in argument!");
96
} catch (NumberFormatException e) {
97
throw new MathMLException("Invalid number in argument : '" + value
102
public float getNumber() {
106
public int getUnit() {