/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.reporting.engine.classic.core.testsupport.font.parser;
import org.pentaho.reporting.libraries.base.util.StringUtils;
import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
import org.pentaho.reporting.libraries.xmlns.parser.ParseException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
public class GlobalMetricsReadHandler extends AbstractXmlReadHandler {
private long ascent;
private long descent;
private long leading;
private long xheight;
private long overlinePosition;
private long underlinePosition;
private long strikethroughPosition;
private long maxAscent;
private long maxDescent;
private long maxHeight;
private long maxCharAdvance;
private long italicAngle;
private boolean uniformFontMetrics;
public GlobalMetricsReadHandler() {
}
protected void startParsing( final Attributes attrs ) throws SAXException {
ascent = parseLongOrDie( "ascent", attrs );
descent = parseLongOrDie( "descent", attrs );
leading = parseLongOrDie( "leading", attrs );
xheight = parseLongOrDie( "x-height", attrs );
overlinePosition = parseLongOrDie( "overline-position", attrs );
underlinePosition = parseLongOrDie( "underline-position", attrs );
strikethroughPosition = parseLongOrDie( "strike-through-position", attrs );
maxAscent = parseLongOrDie( "max-ascent", attrs );
maxDescent = parseLongOrDie( "max-descent", attrs );
maxHeight = parseLongOrDie( "max-height", attrs );
maxCharAdvance = parseLongOrDie( "max-char-advance", attrs );
italicAngle = parseLongOrDie( "italic-angle", attrs );
uniformFontMetrics = "true".equals( attrs.getValue( getUri(), "uniform" ) );
}
private long parseLongOrDie( final String attrName, final Attributes attrs ) throws ParseException {
final String value = attrs.getValue( getUri(), attrName );
if ( StringUtils.isEmpty( value ) ) {
throw new ParseException( "Attribute '" + attrName + "' is missing.", getLocator() );
}
try {
return Long.parseLong( value );
} catch ( Exception e ) {
throw new ParseException( "Attribute '" + attrName + "' with value '" + value + "'is invalid.", getLocator() );
}
}
public long getAscent() {
return ascent;
}
public long getDescent() {
return descent;
}
public long getItalicAngle() {
return italicAngle;
}
public long getLeading() {
return leading;
}
public long getMaxAscent() {
return maxAscent;
}
public long getMaxCharAdvance() {
return maxCharAdvance;
}
public long getMaxDescent() {
return maxDescent;
}
public long getMaxHeight() {
return maxHeight;
}
public long getOverlinePosition() {
return overlinePosition;
}
public long getStrikethroughPosition() {
return strikethroughPosition;
}
public long getUnderlinePosition() {
return underlinePosition;
}
public boolean isUniformFontMetrics() {
return uniformFontMetrics;
}
public long getXheight() {
return xheight;
}
public Object getObject() throws SAXException {
return null;
}
}