first commit
This commit is contained in:
79
hrmsEjb/jxl/biff/Fonts.java
Normal file
79
hrmsEjb/jxl/biff/Fonts.java
Normal file
@@ -0,0 +1,79 @@
|
||||
package jxl.biff;
|
||||
|
||||
import common.Assert;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import jxl.write.biff.File;
|
||||
|
||||
public class Fonts {
|
||||
private ArrayList fonts = new ArrayList();
|
||||
|
||||
private static final int numDefaultFonts = 4;
|
||||
|
||||
public void addFont(FontRecord f) {
|
||||
if (!f.isInitialized()) {
|
||||
int pos = this.fonts.size();
|
||||
if (pos >= 4)
|
||||
pos++;
|
||||
f.initialize(pos);
|
||||
this.fonts.add(f);
|
||||
}
|
||||
}
|
||||
|
||||
public FontRecord getFont(int index) {
|
||||
if (index > 4)
|
||||
index--;
|
||||
return this.fonts.get(index);
|
||||
}
|
||||
|
||||
public void write(File outputFile) throws IOException {
|
||||
Iterator i = this.fonts.iterator();
|
||||
FontRecord font = null;
|
||||
while (i.hasNext()) {
|
||||
font = i.next();
|
||||
outputFile.write(font);
|
||||
}
|
||||
}
|
||||
|
||||
IndexMapping rationalize() {
|
||||
IndexMapping mapping = new IndexMapping(this.fonts.size() + 1);
|
||||
ArrayList newfonts = new ArrayList();
|
||||
FontRecord fr = null;
|
||||
int numremoved = 0;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
fr = this.fonts.get(i);
|
||||
newfonts.add(fr);
|
||||
mapping.setMapping(fr.getFontIndex(), fr.getFontIndex());
|
||||
}
|
||||
Iterator it = null;
|
||||
FontRecord fr2 = null;
|
||||
boolean duplicate = false;
|
||||
for (int j = 4; j < this.fonts.size(); j++) {
|
||||
fr = this.fonts.get(j);
|
||||
duplicate = false;
|
||||
it = newfonts.iterator();
|
||||
while (it.hasNext() && !duplicate) {
|
||||
fr2 = it.next();
|
||||
if (fr.equals(fr2)) {
|
||||
duplicate = true;
|
||||
mapping.setMapping(fr.getFontIndex(), mapping.getNewIndex(fr2.getFontIndex()));
|
||||
numremoved++;
|
||||
}
|
||||
}
|
||||
if (!duplicate) {
|
||||
newfonts.add(fr);
|
||||
int newindex = fr.getFontIndex() - numremoved;
|
||||
Assert.verify((newindex > 4));
|
||||
mapping.setMapping(fr.getFontIndex(), newindex);
|
||||
}
|
||||
}
|
||||
it = newfonts.iterator();
|
||||
while (it.hasNext()) {
|
||||
fr = it.next();
|
||||
fr.initialize(mapping.getNewIndex(fr.getFontIndex()));
|
||||
}
|
||||
this.fonts = newfonts;
|
||||
return mapping;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user