/* ******************************************************************************* * Copyright (C) 1998-2004, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* * * Created on Dec 3, 2003 * ******************************************************************************* */ package com.ibm.icu.dev.tool.layout; public class FeatureList { private Feature[] features; private int featureCount; public FeatureList() { features = new Feature[10]; featureCount = 0; } public void addFeature(Feature feature) { if (featureCount >= features.length) { Feature[] newFeatures = new Feature[features.length + 5]; System.arraycopy(features, 0, newFeatures, 0, features.length); features = newFeatures; } features[featureCount++] = feature; } public void finalizeFeatureList() { TaggedRecord.sort(features, featureCount); for (int i = 0; i < featureCount; i += 1) { features[i].setFeatureIndex(i); } } public void writeFeaturetList(OpenTypeTableWriter writer) { System.out.print("writing feature list..."); int featureListBase = writer.getOutputIndex(); writer.writeData(featureCount); int featureRecordOffset = writer.getOutputIndex(); for (int i = 0; i < featureCount; i += 1) { String tag = features[i].getTag(); System.out.print(" '" + tag + "'"); writer.writeTag(tag); writer.writeData(0); } for (int i = 0; i < featureCount; i += 1) { // fix the offset in the featureRecordArray. // The "+2" skips over the tag and the "+3" // skips to the next featureRecord entry writer.fixOffset(featureRecordOffset + 2, featureListBase); featureRecordOffset += 3; features[i].writeFeature(writer); } System.out.println(); } }