// Copyright 2001, FreeHEP.
package org.freehep.graphicsio.swf;
import java.io.IOException;
import java.util.Vector;
/**
* DefineSprite TAG.
*
* @author Mark Donszelmann
* @author Charles Loomis
* @version $Id: freehep-graphicsio-swf/src/main/java/org/freehep/graphicsio/swf/DefineSprite.java db861da05344 2005/12/05 00:59:43 duns $
*/
public class DefineSprite extends DefinitionTag {
private int character;
private int frameCount;
private Vector<SWFTag> tags;
public DefineSprite(int id, int frameCount, Vector<SWFTag> tags) {
this();
character = id;
this.frameCount = frameCount;
this.tags = tags;
}
public DefineSprite() {
super(39, 3);
}
public SWFTag read(int tagID, SWFInputStream swf, int len)
throws IOException {
DefineSprite tag = new DefineSprite();
tag.character = swf.readUnsignedShort();
swf.getDictionary().put(tag.character, tag);
tag.frameCount = swf.readUnsignedShort();
int version = swf.getVersion();
SWFInputStream sprite = new SWFInputStream(swf, new SWFSpriteTagSet(
version), new SWFActionSet(version));
tag.tags = new Vector<SWFTag>();
SWFTag miniTag;
do {
miniTag = (SWFTag) sprite.readTag();
tag.tags.add(miniTag);
} while (!(miniTag instanceof End));
return tag;
}
public void write(int tagID, SWFOutputStream swf) throws IOException {
swf.writeUnsignedShort(character);
swf.writeUnsignedShort(frameCount);
for (int i = 0; i < tags.size(); i++) {
swf.writeTag(tags.get(i));
}
}
public String toString() {
StringBuffer s = new StringBuffer();
s.append(super.toString() + "\n");
s.append(" character: " + character + "\n");
s.append(" frameCount: " + frameCount + "\n");
s.append(" tags: " + tags.size() + "\n");
return s.toString();
}
}