blob: 12ad19f23c3cdc025fab10575974daa7c8abfa53 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Sybase, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.css2.property;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue;
import org.w3c.dom.css.CSSPrimitiveValue;
/**
* copied from wtp's internal code.
*
* @author mengbo
*/
public final class FloatInfo {
/**
*
*/
public FloatInfo(String text) {
parse(text);
}
/**
*
*/
void parse(String text) {
StringBuffer bufValue = new StringBuffer();
StringBuffer bufIdent = new StringBuffer();
boolean bNum = true;
int len = text.length();
for (int i = 0; i < len; i++) {
char c = text.charAt(i);
if (bNum) {
if ('0' <= c && c <= '9' || c == '.' || c == '+' || c == '-') {
bufValue.append(c);
} else {
bufIdent.append(c);
bNum = false;
}
} else {
bufIdent.append(c);
}
}
String valueStr = bufValue.toString();
_value = Float.valueOf(valueStr).floatValue();
_identifier = bufIdent.toString();
_type = getFloatValueType(valueStr, _identifier);
}
/**
*
*/
public float getValue() {
return _value;
}
/**
*
*/
String getIdentifier() {
return _identifier;
}
/**
*
*/
public short getValueType() {
return _type;
}
/**
*
*/
static short getFloatValueType(String value, String ident) {
ident = ident.toLowerCase();
short valueType;
if (ident.length() == 0) {
if (0 <= value.indexOf('.')) {
valueType = CSSPrimitiveValue.CSS_NUMBER;
} else {
valueType = ICSSPrimitiveValue.CSS_INTEGER;
}
} else if (ident.equals("%")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_PERCENTAGE;
} else if (ident.equalsIgnoreCase("em")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_EMS;
} else if (ident.equalsIgnoreCase("ex")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_EXS;
} else if (ident.equalsIgnoreCase("px")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_PX;
} else if (ident.equalsIgnoreCase("cm")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_CM;
} else if (ident.equalsIgnoreCase("mm")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_MM;
} else if (ident.equalsIgnoreCase("in")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_IN;
} else if (ident.equalsIgnoreCase("pt")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_PT;
} else if (ident.equalsIgnoreCase("pc")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_PC;
} else if (ident.equalsIgnoreCase("deg")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_DEG;
} else if (ident.equalsIgnoreCase("rad")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_RAD;
} else if (ident.equalsIgnoreCase("grad")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_GRAD;
} else if (ident.equalsIgnoreCase("ms")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_MS;
} else if (ident.equalsIgnoreCase("s")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_S;
} else if (ident.equalsIgnoreCase("hz")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_HZ;
} else if (ident.equalsIgnoreCase("khz")) {
//$NON-NLS-1$
valueType = CSSPrimitiveValue.CSS_KHZ;
} else {
valueType = CSSPrimitiveValue.CSS_DIMENSION;
}
return valueType;
}
private float _value = 0.0f;
private String _identifier = null;
private short _type = CSSPrimitiveValue.CSS_UNKNOWN;
}