summaryrefslogtreecommitdiff
path: root/libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java')
-rw-r--r--libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java1497
1 files changed, 0 insertions, 1497 deletions
diff --git a/libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java b/libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java
deleted file mode 100644
index 2df453581..000000000
--- a/libbuild/WebCat-swf/src/pt/tumba/parser/swf/ActionWriter.java
+++ /dev/null
@@ -1,1497 +0,0 @@
-package pt.tumba.parser.swf;
-
-import com.anotherbigidea.flash.SWFActionCodes;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Stack;
-
-/**
- * A writer that implements the SWFActions interface and writes action bytes to
- * an OutStream
- *
- *@author unknown
- *@created 15 de Setembro de 2002
- */
-public class ActionWriter implements SWFActions, SWFActionCodes {
-
- protected TagWriter tagWriter;
- protected OutStream out;
- protected ByteArrayOutputStream bout;
- protected int count;
- protected int flashVersion;
-
- protected List pushValues;
-
- protected HashMap labels;
- protected List jumps;
- protected List skips;
-
- //--for fixing up functions and WITH blocks..
- protected List blocks;
- protected Stack blockStack;
-
-
- /**
- * Constructor for the ActionWriter object
- *
- *@param tagWriter Description of the Parameter
- *@param flashVersion Description of the Parameter
- */
- public ActionWriter(TagWriter tagWriter, int flashVersion) {
- this.flashVersion = flashVersion;
- this.tagWriter = tagWriter;
- }
-
-
- /**
- *@param code Description of the Parameter
- *@return the code count
- *@exception IOException Description of the Exception
- */
- protected int writeCode(int code) throws IOException {
- if (pushValues.size() > 0) {
- flushPushValues();
- }
- out.writeUI8(code);
- count++;
- return count;
- }
-
-
- /**
- * SWFActions interface
- *
- *@param conditions Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void start(int conditions) throws IOException {
- //ignore conditions
-
- count = 0;
- bout = new ByteArrayOutputStream();
- out = new OutStream(bout);
- pushValues = new ArrayList();
- labels = null;
- jumps = null;
- skips = null;
- blocks = null;
- blockStack = null;
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void end() throws IOException {
- writeCode(0);
- out.flush();
- byte[] bytes = bout.toByteArray();
-
- //--Fix up jumps and skips
- if (labels != null) {
- if (jumps != null) {
- fixupJumps(bytes);
- }
- if (skips != null) {
- fixupSkips(bytes);
- }
- }
-
- if (blocks != null) {
- fixupBlocks(bytes);
- }
-
- writeBytes(bytes);
- }
-
-
- /**
- * Pass through a blob of actions
- *
- *@param blob Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void blob(byte[] blob) throws IOException {
- writeBytes(blob);
- }
-
-
- /**
- * Description of the Method
- *
- *@param bytes Description of the Parameter
- *@exception IOException Description of the Exception
- */
- protected void writeBytes(byte[] bytes) throws IOException {
- tagWriter.getOutStream().write(bytes);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void done() throws IOException {
- tagWriter.completeTag();
- }
-
-
- /**
- * Description of the Method
- *
- *@param bytes Description of the Parameter
- */
- protected void fixupBlocks(byte[] bytes2) {
- byte[] bytes = bytes2;
- for (Iterator enumerator = blocks.iterator(); enumerator.hasNext(); ) {
- int[] info = (int[]) enumerator.next();
-
- int codeSize = info[1];
- int offset = info[0];
- byte[] sizeBytes = OutStream.sintTo2Bytes(codeSize);
-
- bytes[offset] = sizeBytes[0];
- bytes[offset + 1] = sizeBytes[1];
- }
- }
-
-
- /**
- * Description of the Method
- *
- *@param bytes Description of the Parameter
- */
- protected void fixupJumps(byte[] bytes2) {
- byte[] bytes = bytes2;
- for (Iterator enumumerator = jumps.iterator(); enumumerator.hasNext(); ) {
- Object[] obja = (Object[]) enumumerator.next();
- String label = (String) obja[0];
- int target = ((Integer) obja[1]).intValue();
-
- int[] labelInfo = (int[]) labels.get(label);
-
- if (labelInfo == null) {
- System.out.println("Missing label '" + label + "' in action code");
- continue;
- }
-
- int absolute = labelInfo[0];
- //offset of the label
- int relative = absolute - (target + 2);
- //relative jump
-
- byte[] val = OutStream.sintTo2Bytes(relative);
- bytes[target] = val[0];
- bytes[target + 1] = val[1];
- }
- }
-
-
- /**
- * Description of the Method
- *
- *@param bytes Description of the Parameter
- */
- protected void fixupSkips(byte[] bytes2) {
- byte[] bytes = bytes2;
- for (Iterator enumerator = skips.iterator(); enumerator.hasNext(); ) {
- Object[] obja = (Object[]) enumerator.next();
- String label = (String) obja[0];
-
- int[] skipInfo = (int[]) obja[1];
- int skipIndex = skipInfo[0];
- int skipLoc = skipInfo[1];
-
- int[] labelInfo = (int[]) labels.get(label);
-
- if (labelInfo == null) {
- System.out.println("Missing label '" + label + "' in action code");
- continue;
- }
-
- int labelIndex = labelInfo[1];
- //index of the labelled action
- int skip = labelIndex - skipIndex - 1;
-
- byte val = OutStream.uintToByte(skip);
- bytes[skipLoc] = val;
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param comment Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void comment(String comment) throws IOException {
- //ignore comments
- }
-
-
- /**
- * SWFActions interface
- *
- *@param code Description of the Parameter
- *@param data Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void unknown(int code, byte[] data) throws IOException {
- writeCode(code);
-
- int length = (data != null) ? data.length : 0;
-
- if (code >= 0x80 || length > 0) {
- out.writeUI16(length);
- }
-
- if (length > 0) {
- out.write(data);
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void initArray() throws IOException {
- writeCode(INIT_ARRAY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param label Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void jumpLabel(String label) throws IOException {
- if (pushValues.size() > 0) {
- flushPushValues();
- }
-
- int offset = (int) out.getBytesWritten();
-
- if (labels == null) {
- labels = new HashMap();
- }
- labels.put(label, new int[]{offset, count + 1});
- }
-
-
- /**
- * SWFActions interface
- *
- *@param frameNumber Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void gotoFrame(int frameNumber) throws IOException {
- writeCode(GOTO_FRAME);
- out.writeUI16(2);
- out.writeUI16(frameNumber);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param label Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void gotoFrame(String label) throws IOException {
- writeCode(GOTO_LABEL);
- out.writeUI16(OutStream.getStringLength(label));
- out.writeString(label);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param url Description of the Parameter
- *@param target Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void getURL(String url, String target) throws IOException {
- writeCode(GET_URL);
- out.writeUI16(OutStream.getStringLength(url) + OutStream.getStringLength(target));
- out.writeString(url);
- out.writeString(target);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void nextFrame() throws IOException {
- writeCode(NEXT_FRAME);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void prevFrame() throws IOException {
- writeCode(PREVIOUS_FRAME);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void play() throws IOException {
- writeCode(PLAY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stop() throws IOException {
- writeCode(STOP);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void toggleQuality() throws IOException {
- writeCode(TOGGLE_QUALITY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stopSounds() throws IOException {
- writeCode(STOP_SOUNDS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param target The new target value
- *@exception IOException Description of the Exception
- */
- public void setTarget(String target) throws IOException {
- writeCode(SET_TARGET);
- out.writeUI16(OutStream.getStringLength(target));
- out.writeString(target);
- }
-
-
- /**
- * Description of the Method
- *
- *@param label Description of the Parameter
- *@param code Description of the Parameter
- *@exception IOException Description of the Exception
- */
- protected void writeJump(String label, int code) throws IOException {
- writeCode(code);
- out.writeUI16(2);
-
- int here = (int) out.getBytesWritten();
- out.writeUI16(0);
- //will be fixed up later
-
- //--save jump info for later fix-up logic
- if (jumps == null) {
- jumps = new ArrayList();
- }
- jumps.add(new Object[]{label, new Integer(here)});
- }
-
-
- /**
- * SWFActions interface
- *
- *@param jumpLabel Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void jump(String jumpLabel) throws IOException {
- writeJump(jumpLabel, JUMP);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param jumpLabel Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void ifJump(String jumpLabel) throws IOException {
- writeJump(jumpLabel, IF);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param frameNumber Description of the Parameter
- *@param jumpLabel Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void waitForFrame(int frameNumber, String jumpLabel) throws IOException {
- writeCode(WAIT_FOR_FRAME);
- out.writeUI16(3);
- out.writeUI16(frameNumber);
-
- int here = (int) out.getBytesWritten();
- out.writeUI8(0);
- //will be fixed up later
-
- //--save skip info for later fix-up logic
- if (skips == null) {
- skips = new ArrayList();
- }
- skips.add(new Object[]{jumpLabel, new int[]{count, here}});
- }
-
-
- /**
- * SWFActions interface
- *
- *@param jumpLabel Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void waitForFrame(String jumpLabel) throws IOException {
- writeCode(WAIT_FOR_FRAME_2);
- out.writeUI16(1);
-
- int here = (int) out.getBytesWritten();
- out.writeUI8(0);
- //will be fixed up later
-
- //--save skip info for later fix-up logic
- if (skips == null) {
- skips = new ArrayList();
- }
- skips.add(new Object[]{jumpLabel, new int[]{count, here}});
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void pop() throws IOException {
- writeCode(POP);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void add() throws IOException {
- writeCode(ADD);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void substract() throws IOException {
- writeCode(SUBTRACT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void multiply() throws IOException {
- writeCode(MULTIPLY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void divide() throws IOException {
- writeCode(DIVIDE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void equals() throws IOException {
- writeCode(EQUALS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void lessThan() throws IOException {
- writeCode(LESS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void and() throws IOException {
- writeCode(AND);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void or() throws IOException {
- writeCode(OR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void not() throws IOException {
- writeCode(NOT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stringEquals() throws IOException {
- writeCode(STRING_EQUALS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stringLength() throws IOException {
- writeCode(STRING_LENGTH);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void concat() throws IOException {
- writeCode(STRING_ADD);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void substring() throws IOException {
- writeCode(STRING_EXTRACT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stringLessThan() throws IOException {
- writeCode(STRING_LESS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void stringLengthMB() throws IOException {
- writeCode(MB_STRING_LENGTH);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void substringMB() throws IOException {
- writeCode(MB_STRING_EXTRACT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void toInteger() throws IOException {
- writeCode(TO_INTEGER);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void charToAscii() throws IOException {
- writeCode(CHAR_TO_ASCII);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void asciiToChar() throws IOException {
- writeCode(ASCII_TO_CHAR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void charMBToAscii() throws IOException {
- writeCode(MB_CHAR_TO_ASCII);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void asciiToCharMB() throws IOException {
- writeCode(MB_ASCII_TO_CHAR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void call() throws IOException {
- writeCode(CALL);
- out.writeUI16(0);
- //SWF File Format anomaly
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void getVariable() throws IOException {
- writeCode(GET_VARIABLE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void setVariable() throws IOException {
- writeCode(SET_VARIABLE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param sendVars Description of the Parameter
- *@param loadMode Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void getURL(int sendVars, int loadMode) throws IOException {
- writeCode(GET_URL_2);
- out.writeUI16(1);
-
- int flags = 0;
-
- //String sendVars_ = null;
- switch (sendVars) {
- case GET_URL_SEND_VARS_GET:
- flags = 1;
- break;
- case GET_URL_SEND_VARS_POST:
- flags = 2;
- break;
- case GET_URL_SEND_VARS_NONE:
- default:
- break;
- }
-
- //String mode = null;
- switch (loadMode) {
- case GET_URL_MODE_LOAD_MOVIE_INTO_LEVEL:
- break;
- case GET_URL_MODE_LOAD_MOVIE_INTO_SPRITE:
- flags |= 0x40;
- break;
- case GET_URL_MODE_LOAD_VARS_INTO_LEVEL:
- flags |= 0x80;
- break;
- case GET_URL_MODE_LOAD_VARS_INTO_SPRITE:
- flags |= 0xC0;
- break;
- default:
- break;
- }
-
- out.writeUI8(flags);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param play Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void gotoFrame(boolean play) throws IOException {
- writeCode(GOTO_FRAME_2);
- out.writeUI16(1);
- out.writeUI8(play ? 1 : 0);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void setTarget() throws IOException {
- writeCode(SET_TARGET_2);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void getProperty() throws IOException {
- writeCode(GET_PROPERTY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void setProperty() throws IOException {
- writeCode(SET_PROPERTY);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void cloneSprite() throws IOException {
- writeCode(CLONE_SPRITE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void removeSprite() throws IOException {
- writeCode(REMOVE_SPRITE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void startDrag() throws IOException {
- writeCode(START_DRAG);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void endDrag() throws IOException {
- writeCode(END_DRAG);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void trace() throws IOException {
- writeCode(TRACE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void getTime() throws IOException {
- writeCode(GET_TIME);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void randomNumber() throws IOException {
- writeCode(RANDOM_NUMBER);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param values Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void lookupTable(String[] values) throws IOException {
- writeCode(LOOKUP_TABLE);
-
- ByteArrayOutputStream baout = new ByteArrayOutputStream();
- OutStream bout = new OutStream(baout);
-
- bout.writeUI16(values.length);
-
- for (int i = 0; i < values.length; i++) {
- bout.writeString(values[i]);
- }
-
- bout.flush();
- byte[] data = baout.toByteArray();
- out.writeUI16(data.length);
- out.write(data);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void callFunction() throws IOException {
- writeCode(CALL_FUNCTION);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void callMethod() throws IOException {
- writeCode(CALL_METHOD);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param name Description of the Parameter
- *@param paramNames Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void startFunction(String name, String[] paramNames) throws IOException {
- if (blockStack == null) {
- blockStack = new Stack();
- }
-
- writeCode(DEFINE_FUNCTION);
-
- ByteArrayOutputStream baout = new ByteArrayOutputStream();
- OutStream bout = new OutStream(baout);
-
- bout.writeString(name);
- bout.writeUI16(paramNames.length);
-
- for (int i = 0; i < paramNames.length; i++) {
- bout.writeString(paramNames[i]);
- }
-
- bout.writeUI16(0);
- //code size - will be fixed up later
-
- bout.flush();
- byte[] data = baout.toByteArray();
- out.writeUI16(data.length);
- out.write(data);
-
- blockStack.push(new int[]{(int) out.getBytesWritten(), 0});
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void endBlock() throws IOException {
- if (blockStack == null || blockStack.isEmpty()) {
- return;
- }
- //nothing to do
- int[] blockInfo = (int[]) blockStack.pop();
-
- if (blocks == null) {
- blocks = new ArrayList();
- }
-
- int offset = blockInfo[0];
- int codeSize = ((int) out.getBytesWritten()) - offset;
-
- //--store this info for later fix-up
- blockInfo[0] = offset - 2;
- blockInfo[1] = codeSize;
- blocks.add(blockInfo);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void defineLocalValue() throws IOException {
- writeCode(DEFINE_LOCAL_VAL);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void defineLocal() throws IOException {
- writeCode(DEFINE_LOCAL);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void deleteProperty() throws IOException {
- writeCode(DEL_VAR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void deleteThreadVars() throws IOException {
- writeCode(DEL_THREAD_VARS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void enumerate() throws IOException {
- writeCode(ENUMERATE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void typedEquals() throws IOException {
- writeCode(TYPED_EQUALS);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void getMember() throws IOException {
- writeCode(GET_MEMBER);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void initObject() throws IOException {
- writeCode(INIT_OBJECT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void newMethod() throws IOException {
- writeCode(CALL_NEW_METHOD);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void newObject() throws IOException {
- writeCode(NEW_OBJECT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void setMember() throws IOException {
- writeCode(SET_MEMBER);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void getTargetPath() throws IOException {
- writeCode(GET_TARGET_PATH);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void startWith() throws IOException {
- writeCode(WITH);
- out.writeUI16(2);
- out.writeUI16(0);
- //codeSize - will be fixed up later
-
- //--push the block start info
- if (blockStack == null) {
- blockStack = new Stack();
- }
- blockStack.push(new int[]{(int) out.getBytesWritten(), 0});
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void duplicate() throws IOException {
- writeCode(DUPLICATE);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void returnValue() throws IOException {
- writeCode(RETURN);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void swap() throws IOException {
- writeCode(SWAP);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param registerNumber Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void storeInRegister(int registerNumber) throws IOException {
- writeCode(REGISTER);
- out.writeUI16(1);
- out.writeUI8(registerNumber);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void convertToNumber() throws IOException {
- writeCode(CONVERT_TO_NUMBER);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void convertToString() throws IOException {
- writeCode(CONVERT_TO_STRING);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void typeOf() throws IOException {
- writeCode(TYPEOF);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void typedAdd() throws IOException {
- writeCode(TYPED_ADD);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void typedLessThan() throws IOException {
- writeCode(TYPED_LESS_THAN);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void modulo() throws IOException {
- writeCode(MODULO);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void bitAnd() throws IOException {
- writeCode(BIT_AND);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void bitOr() throws IOException {
- writeCode(BIT_OR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void bitXor() throws IOException {
- writeCode(BIT_XOR);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void shiftLeft() throws IOException {
- writeCode(SHIFT_LEFT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void shiftRight() throws IOException {
- writeCode(SHIFT_RIGHT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void shiftRightUnsigned() throws IOException {
- writeCode(SHIFT_UNSIGNED);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void decrement() throws IOException {
- writeCode(DECREMENT);
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void increment() throws IOException {
- writeCode(INCREMENT);
- }
-
-
- /**
- * Description of the Method
- *
- *@exception IOException Description of the Exception
- */
- protected void flushPushValues() throws IOException {
- out.writeUI8(PUSH);
- count++;
-
- ByteArrayOutputStream baout = new ByteArrayOutputStream();
- OutStream bout = new OutStream(baout);
-
- for (Iterator enumerator = pushValues.iterator(); enumerator.hasNext(); ) {
- Object value = enumerator.next();
-
- if (value instanceof String) {
- bout.writeUI8(PUSHTYPE_STRING);
- bout.writeString(value.toString());
- } else if (value instanceof Boolean) {
- bout.writeUI8(PUSHTYPE_BOOLEAN);
- bout.writeUI8(((Boolean) value).booleanValue() ? 1 : 0);
- } else if (value instanceof Integer) {
- bout.writeUI8(PUSHTYPE_INTEGER);
- bout.writeSI32(((Integer) value).intValue());
- } else if (value instanceof Short) {
- bout.writeUI8(PUSHTYPE_LOOKUP);
- bout.writeUI8(((Short) value).intValue());
- } else if (value instanceof Byte) {
- bout.writeUI8(SWFActionCodes.PUSHTYPE_REGISTER);
- bout.writeUI8(((Byte) value).intValue());
- } else if (value instanceof Float) {
- bout.writeUI8(PUSHTYPE_FLOAT);
- bout.writeFloat(((Float) value).floatValue());
- } else if (value instanceof Double) {
- bout.writeUI8(PUSHTYPE_DOUBLE);
- bout.writeDouble(((Double) value).doubleValue());
- } else {
- bout.writeUI8(PUSHTYPE_NULL);
- }
- }
-
- pushValues.clear();
-
- bout.flush();
- byte[] data = baout.toByteArray();
- out.writeUI16(data.length);
- out.write(data);
- }
-
-
- /**
- * SWFActions interface
- *
- *@param value Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void push(String value) throws IOException {
- pushValues.add(value);
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param value Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void push(float value) throws IOException {
- pushValues.add(Float.valueOf(value));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param value Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void push(double value) throws IOException {
- pushValues.add(new Double(value));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@exception IOException Description of the Exception
- */
- public void pushNull() throws IOException {
- pushValues.add(new Object());
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param registerNumber Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void pushRegister(int registerNumber) throws IOException {
- pushValues.add(new Byte((byte) registerNumber));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param value Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void push(boolean value) throws IOException {
- pushValues.add(Boolean.valueOf(value));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param value Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void push(int value) throws IOException {
- pushValues.add(new Integer(value));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-
-
- /**
- * SWFActions interface
- *
- *@param dictionaryIndex Description of the Parameter
- *@exception IOException Description of the Exception
- */
- public void lookup(int dictionaryIndex) throws IOException {
- pushValues.add(new Short((short) dictionaryIndex));
- if (flashVersion < 5) {
- flushPushValues();
- }
- }
-}