2 *******************************************************************************
\r
3 * Copyright (C) 1998-2004, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 * Created on Dec 3, 2003
\r
9 *******************************************************************************
\r
11 package com.ibm.icu.dev.tool.layout;
\r
14 public class FeatureList
\r
17 private Feature[] features;
\r
18 private int featureCount;
\r
20 public FeatureList()
\r
22 features = new Feature[10];
\r
26 public void addFeature(Feature feature)
\r
28 if (featureCount >= features.length) {
\r
29 Feature[] newFeatures = new Feature[features.length + 5];
\r
31 System.arraycopy(features, 0, newFeatures, 0, features.length);
\r
32 features = newFeatures;
\r
35 features[featureCount++] = feature;
\r
38 public void finalizeFeatureList()
\r
40 TaggedRecord.sort(features, featureCount);
\r
42 for (int i = 0; i < featureCount; i += 1) {
\r
43 features[i].setFeatureIndex(i);
\r
47 public void writeFeaturetList(OpenTypeTableWriter writer)
\r
49 System.out.print("writing feature list...");
\r
51 int featureListBase = writer.getOutputIndex();
\r
53 writer.writeData(featureCount);
\r
55 int featureRecordOffset = writer.getOutputIndex();
\r
57 for (int i = 0; i < featureCount; i += 1) {
\r
58 String tag = features[i].getTag();
\r
60 System.out.print(" '" + tag + "'");
\r
61 writer.writeTag(tag);
\r
62 writer.writeData(0);
\r
65 for (int i = 0; i < featureCount; i += 1) {
\r
66 // fix the offset in the featureRecordArray.
\r
67 // The "+2" skips over the tag and the "+3"
\r
68 // skips to the next featureRecord entry
\r
69 writer.fixOffset(featureRecordOffset + 2, featureListBase);
\r
70 featureRecordOffset += 3;
\r
72 features[i].writeFeature(writer);
\r
75 System.out.println();
\r