// Copyright 2001, FreeHEP.
package org.freehep.graphicsio.swf;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* SWF FillStyleArray.
*
* @author Mark Donszelmann
* @author Charles Loomis
* @version $Id: FillStyleArray.java 9979 2006-11-27 22:51:07Z duns $
*/
public class FillStyleArray {
protected List /* FillStyle */fillStyles;
public FillStyleArray() {
this.fillStyles = new ArrayList();
}
public FillStyleArray(SWFInputStream swf, boolean isMorphStyle,
boolean hasAlpha) throws IOException {
this();
int fillStyleCount = swf.readUnsignedByte();
if (fillStyleCount == 0xFF) {
fillStyleCount = swf.readUnsignedShort();
}
for (int i = 0; i < fillStyleCount; i++) {
fillStyles.add(new FillStyle(swf, isMorphStyle, hasAlpha));
}
}
public void add(FillStyle fillStyle) {
this.fillStyles.add(fillStyle);
}
public FillStyle get(int index) {
return (FillStyle) fillStyles.get(index);
}
public void write(SWFOutputStream swf, boolean isMorphStyle, boolean hasAlpha) throws IOException {
if (fillStyles.size() >= 0xFF) {
swf.writeUnsignedByte(0xFF);
swf.writeUnsignedShort(fillStyles.size());
} else {
swf.writeUnsignedByte(fillStyles.size());
}
for (Iterator i = fillStyles.iterator(); i.hasNext();) {
((FillStyle) i.next()).write(swf, isMorphStyle, hasAlpha);
}
}
public String toString() {
StringBuffer s = new StringBuffer();
s.append(" fillStyles: " + fillStyles.size() + "\n");
int n = 0;
for (Iterator i = fillStyles.iterator(); i.hasNext();) {
s.append(" " + (n + 1) + " " + (i.next()) + "\n");
n++;
}
return s.toString();
}
}