*
* @return The composite.
*/
private Composite parseComposite() throws IOException
{
Composite result = new Composite();
String partData = readLine();
StringTokenizer tokenizer = new StringTokenizer( partData, " ;" );
String cc = tokenizer.nextToken();
if( !cc.equals( CC ) )
{
throw new IOException( "Expected '" + CC + "' actual='" + cc + "'" );
}
String name = tokenizer.nextToken();
result.setName( name );
int partCount;
try
{
partCount = Integer.parseInt( tokenizer.nextToken() );
}
catch( NumberFormatException e )
{
throw new IOException( "Error parsing AFM document:" + e );
}
for( int i=0; i<partCount; i++ )
{
CompositePart part = new CompositePart();
String pcc = tokenizer.nextToken();
if( !pcc.equals( PCC ) )
{
throw new IOException( "Expected '" + PCC + "' actual='" + pcc + "'" );
}
String partName = tokenizer.nextToken();
try
{
int x = Integer.parseInt( tokenizer.nextToken() );
int y = Integer.parseInt( tokenizer.nextToken() );
part.setName( partName );
part.setXDisplacement( x );
part.setYDisplacement( y );
result.addPart( part );
}
catch( NumberFormatException e )
{
throw new IOException( "Error parsing AFM document:" + e );
}