@Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   fontId = sis.readUI16("fontId");
   if (swf.version >= 6) {
     fontName = sis.readNetString("fontName", Utf8Helper.charset);
   } else {
     fontName = sis.readNetString("fontName");
   }
   reserved = (int) sis.readUB(2, "reserved");
   fontFlagsSmallText = sis.readUB(1, "fontFlagsSmallText") == 1;
   fontFlagsShiftJIS = sis.readUB(1, "fontFlagsShiftJIS") == 1;
   fontFlagsANSI = sis.readUB(1, "fontFlagsANSI") == 1;
   fontFlagsItalic = sis.readUB(1, "fontFlagsItalic") == 1;
   fontFlagsBold = sis.readUB(1, "fontFlagsBold") == 1;
   fontFlagsWideCodes = sis.readUB(1, "fontFlagsWideCodes") == 1;
   codeTable = new ArrayList<>();
   while (sis.available() > 0) {
     if (fontFlagsWideCodes) {
       codeTable.add(sis.readUI16("code"));
     } else {
       codeTable.add(sis.readUI8("code"));
     }
   }
 }
Пример #2
0
  /**
   * Constructor
   *
   * @param sis
   * @param data
   * @throws IOException
   */
  public PlaceObject2Tag(SWFInputStream sis, ByteArrayRange data) throws IOException {
    super(sis.getSwf(), ID, "PlaceObject2", data);
    placeFlagHasClipActions = sis.readUB(1, "placeFlagHasClipActions") == 1;
    placeFlagHasClipDepth = sis.readUB(1, "placeFlagHasClipDepth") == 1;
    placeFlagHasName = sis.readUB(1, "placeFlagHasName") == 1;
    placeFlagHasRatio = sis.readUB(1, "placeFlagHasRatio") == 1;
    placeFlagHasColorTransform = sis.readUB(1, "placeFlagHasColorTransform") == 1;
    placeFlagHasMatrix = sis.readUB(1, "placeFlagHasMatrix") == 1;
    placeFlagHasCharacter = sis.readUB(1, "placeFlagHasCharacter") == 1;
    placeFlagMove = sis.readUB(1, "placeFlagMove") == 1;

    depth = sis.readUI16("depth");
    if (placeFlagHasCharacter) {
      characterId = sis.readUI16("characterId");
    }
    if (placeFlagHasMatrix) {
      matrix = sis.readMatrix("matrix");
    }
    if (placeFlagHasColorTransform) {
      colorTransform = sis.readCXFORMWITHALPHA("colorTransform");
    }
    if (placeFlagHasRatio) {
      ratio = sis.readUI16("ratio");
    }
    if (placeFlagHasName) {
      name = sis.readString("name");
    }
    if (placeFlagHasClipDepth) {
      clipDepth = sis.readUI16("clipDepth");
    }
    if (placeFlagHasClipActions) {
      clipActions = sis.readCLIPACTIONS(swf, this, "clipActions");
    }
  }
  @Override
  public final void readData(
      SWFInputStream sis,
      ByteArrayRange data,
      int level,
      boolean parallel,
      boolean skipUnusualTags,
      boolean lazy)
      throws IOException {
    fontId = sis.readUI16("fontId");
    glyphShapeTable = new ArrayList<>();

    if (sis.available() > 0) {
      long pos = sis.getPos();
      int firstOffset = sis.readUI16("firstOffset");
      int nGlyphs = firstOffset / 2;

      long[] offsetTable = new long[nGlyphs];
      offsetTable[0] = firstOffset;
      for (int i = 1; i < nGlyphs; i++) {
        offsetTable[i] = sis.readUI16("offset");
      }
      for (int i = 0; i < nGlyphs; i++) {
        sis.seek(pos + offsetTable[i]);
        glyphShapeTable.add(sis.readSHAPE(1, false, "shape"));
      }
    }
  }
 public ActionDefineFunction(int actionLength, SWFInputStream sis, int version)
     throws IOException {
   super(0x9B, actionLength);
   this.version = version;
   functionName = sis.readString("functionName");
   int numParams = sis.readUI16("numParams");
   for (int i = 0; i < numParams; i++) {
     paramNames.add(sis.readString("paramName"));
   }
   codeSize = sis.readUI16("codeSize");
 }
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   int numGradients = sis.readUI16("numGradients");
   indices = new int[numGradients];
   for (int i = 0; i < numGradients; i++) {
     indices[i] = sis.readUI16("index");
   }
 }
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException, InterruptedException {
   spriteId = sis.readUI16("spriteId");
   frameCount = sis.readUI16("frameCount");
   List<Tag> subTags = sis.readTagList(this, level + 1, parallel, skipUnusualTags, true, lazy);
   if (subTags.size() > 0 && subTags.get(subTags.size() - 1).getId() == EndTag.ID) {
     hasEndTag = true;
     subTags.remove(subTags.size() - 1);
   }
   this.subTags = subTags;
 }
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   characterId = sis.readUI32("characterId");
   bitmapFormat = sis.readUI16("bitmapFormat");
   targetWidth = sis.readUI16("targetWidth");
   targetHeight = sis.readUI16("targetHeight");
   exportName = sis.readNetString("exportName");
   fileName = sis.readNetString("fileName");
   if (sis.available() > 0) { // there is usually one zero byte, bod knows why
     extraData = sis.readBytesEx(sis.available(), "extraData");
   }
 }
Пример #8
0
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   int numSymbols = sis.readUI16("numSymbols");
   tags = new ArrayList<>(numSymbols);
   names = new ArrayList<>(numSymbols);
   for (int i = 0; i < numSymbols; i++) {
     int tagID = sis.readUI16("tagID");
     String className = sis.readString("className");
     tags.add(tagID);
     names.add(className);
   }
 }
Пример #9
0
 /**
  * Constructor
  *
  * @param sis
  * @param data
  * @throws IOException
  */
 public ExporterInfoTag(SWFInputStream sis, ByteArrayRange data) throws IOException {
   super(sis.getSwf(), ID, "ExporterInfo", data);
   this.version = sis.readUI16("version");
   if (this.version >= 0x10a) {
     flags = sis.readUI32("flags");
   }
   bitmapFormat = sis.readUI16("bitmapFormat");
   int prefixLen = sis.readUI8("prefixLen");
   prefix = sis.readBytesEx(prefixLen, "prefix");
   int swfNameLen = sis.readUI8("swfNameLen");
   swfName = new String(sis.readBytesEx(swfNameLen, "swfName"));
   if (sis.available() > 0) // (version >= 0x401) //?
   {
     codeOffsets = new ArrayList<>();
     int numCodeOffsets = sis.readUI16("numCodeOffsets");
     for (int i = 0; i < numCodeOffsets; i++) {
       codeOffsets.add(sis.readUI32("codeOffset"));
     }
   }
 }
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   buttonId = sis.readUI16("buttonId");
   buttonColorTransform = sis.readCXFORM("buttonColorTransform");
 }
Пример #11
0
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   streamID = sis.readUI16("streamID");
   frameNum = sis.readUI16("frameNum");
   videoData = sis.readByteRangeEx(sis.available(), "videoData"); // TODO: Parse video packets
 }
 public ActionDefineFunction2(int actionLength, SWFInputStream sis, int version)
     throws IOException {
   super(0x8E, actionLength);
   this.version = version;
   functionName = sis.readString("functionName");
   int numParams = sis.readUI16("numParams");
   registerCount = sis.readUI8("registerCount");
   preloadParentFlag = sis.readUB(1, "preloadParentFlag") == 1;
   preloadRootFlag = sis.readUB(1, "preloadRootFlag") == 1;
   suppressSuperFlag = sis.readUB(1, "suppressSuperFlag") == 1;
   preloadSuperFlag = sis.readUB(1, "preloadSuperFlag") == 1;
   suppressArgumentsFlag = sis.readUB(1, "suppressArgumentsFlag") == 1;
   preloadArgumentsFlag = sis.readUB(1, "preloadArgumentsFlag") == 1;
   suppressThisFlag = sis.readUB(1, "suppressThisFlag") == 1;
   preloadThisFlag = sis.readUB(1, "preloadThisFlag") == 1;
   reserved = (int) sis.readUB(7, "reserved");
   preloadGlobalFlag = sis.readUB(1, "preloadGlobalFlag") == 1;
   for (int i = 0; i < numParams; i++) {
     paramRegisters.add(sis.readUI8("paramRegister"));
     paramNames.add(sis.readString("paramName"));
   }
   codeSize = sis.readUI16("codeSize");
 }
 @Override
 public final void readData(
     SWFInputStream sis,
     ByteArrayRange data,
     int level,
     boolean parallel,
     boolean skipUnusualTags,
     boolean lazy)
     throws IOException {
   if (sis.available() > 0) {
     reserved = sis.readUI16("reserved");
   } else {
     reserved = 0;
   }
   if (sis.available() > 0) {
     passwordHash = sis.readString("passwordHash");
   } else {
     passwordHash = null;
   }
 }
 public ActionWaitForFrame(int actionLength, SWFInputStream sis) throws IOException {
   super(0x8A, actionLength);
   frame = sis.readUI16("frame");
   skipCount = sis.readUI8("skipCount");
   skipped = new ArrayList<>();
 }
Пример #15
0
 public ActionWith(int actionLength, SWFInputStream sis, int version) throws IOException {
   super(0x94, actionLength);
   codeSize = sis.readUI16("codeSize");
   this.version = version;
 }