/*
* $Id: VheaTable.java,v 1.1 2007-01-31 01:17:40 davidsch Exp $
*
* Typecast - The Font Development Environment
*
* Copyright (c) 2004-2007 David Schweinsberg
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jogamp.graph.font.typecast.ot.table;
import java.io.DataInput;
import java.io.IOException;
import jogamp.graph.font.typecast.ot.Fixed;
/**
* Vertical Header Table
* @version $Id: VheaTable.java,v 1.1 2007-01-31 01:17:40 davidsch Exp $
* @author <a href="mailto:davidsch@dev.java.net">David Schweinsberg</a>
*/
public class VheaTable implements Table {
private final DirectoryEntry _de;
private final int _version;
private final short _ascent;
private final short _descent;
private final short _lineGap;
private final short _advanceHeightMax;
private final short _minTopSideBearing;
private final short _minBottomSideBearing;
private final short _yMaxExtent;
private final short _caretSlopeRise;
private final short _caretSlopeRun;
private final short _metricDataFormat;
private final int _numberOfLongVerMetrics;
protected VheaTable(final DirectoryEntry de, final DataInput di) throws IOException {
_de = (DirectoryEntry) de.clone();
_version = di.readInt();
_ascent = di.readShort();
_descent = di.readShort();
_lineGap = di.readShort();
_advanceHeightMax = di.readShort();
_minTopSideBearing = di.readShort();
_minBottomSideBearing = di.readShort();
_yMaxExtent = di.readShort();
_caretSlopeRise = di.readShort();
_caretSlopeRun = di.readShort();
for (int i = 0; i < 5; ++i) {
di.readShort();
}
_metricDataFormat = di.readShort();
_numberOfLongVerMetrics = di.readUnsignedShort();
}
public short getAdvanceHeightMax() {
return _advanceHeightMax;
}
public short getAscent() {
return _ascent;
}
public short getCaretSlopeRise() {
return _caretSlopeRise;
}
public short getCaretSlopeRun() {
return _caretSlopeRun;
}
public short getDescent() {
return _descent;
}
public short getLineGap() {
return _lineGap;
}
public short getMetricDataFormat() {
return _metricDataFormat;
}
public short getMinTopSideBearing() {
return _minTopSideBearing;
}
public short getMinBottomSideBearing() {
return _minBottomSideBearing;
}
public int getNumberOfLongVerMetrics() {
return _numberOfLongVerMetrics;
}
@Override
public int getType() {
return vhea;
}
public short getYMaxExtent() {
return _yMaxExtent;
}
@Override
public String toString() {
return new StringBuilder()
.append("'vhea' Table - Vertical Header\n------------------------------")
.append("\n 'vhea' version: ").append(Fixed.floatValue(_version))
.append("\n xAscender: ").append(_ascent)
.append("\n xDescender: ").append(_descent)
.append("\n xLineGap: ").append(_lineGap)
.append("\n advanceHeightMax: ").append(_advanceHeightMax)
.append("\n minTopSideBearing: ").append(_minTopSideBearing)
.append("\n minBottomSideBearing: ").append(_minBottomSideBearing)
.append("\n yMaxExtent: ").append(_yMaxExtent)
.append("\n horizCaretSlopeNum: ").append(_caretSlopeRise)
.append("\n horizCaretSlopeDenom: ").append(_caretSlopeRun)
.append("\n reserved0: 0")
.append("\n reserved1: 0")
.append("\n reserved2: 0")
.append("\n reserved3: 0")
.append("\n reserved4: 0")
.append("\n metricDataFormat: ").append(_metricDataFormat)
.append("\n numOf_LongVerMetrics: ").append(_numberOfLongVerMetrics)
.toString();
}
/**
* Get a directory entry for this table. This uniquely identifies the
* table in collections where there may be more than one instance of a
* particular table.
* @return A directory entry
*/
@Override
public DirectoryEntry getDirectoryEntry() {
return _de;
}
}