Package tv.porst.splib.binaryparser

Examples of tv.porst.splib.binaryparser.UINT16


   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DoInitActionTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 spriteId = parseUINT16(parser, 0x00006, "DoInitAction::SpriteId");

    final List<Action> actions = ActionRecordParser.parse(parser, header.getNormalizedLength() - 2, "DoInitAction::Actions");

    return new DoInitActionTag(header, spriteId, new ActionList(actions));
  }
View Full Code Here


   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DefineFontNameTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 fontId = parseUINT16(parser, 0x00006, "DefineFontName::FontId");
    final AsciiString fontName = parseString(parser, 0x00006, "DefineFontName::FontName");
    final AsciiString fontCopyright = parseString(parser, 0x00006, "DefineFontName::FontCopyright");

    return new DefineFontNameTag(header, fontId, fontName, fontCopyright);
  }
View Full Code Here

   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DefineFontTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 fontId = parseUINT16(parser, 0x00006, "DefineFont::FontId");

    final int numberOfGlyphs = parser.peekUInt16().value() / 2;

    final List<UINT16> offsetTable = new ArrayList<UINT16>();

View Full Code Here

  public static ImportAssets2Tag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final AsciiString url = parseString(parser, 0x00006, "ImportAssets2::URL");
    final UINT8 reserved = parseUINT8(parser, 0x00006, "ImportAssets2::Reserved");
    final UINT8 reserved2 = parseUINT8(parser, 0x00006, "ImportAssets2::Reserved2");
    final UINT16 count = parseUINT16(parser, 0x00006, "ImportAssets2::Count");

    final List<Symbol> symbols = new ArrayList<Symbol>();

    for (int i=0;i<count.value();i++) {
      symbols.add(SymbolParser.parse(parser, String.format("ImportAssets2::SymbolList[%d]", i)));
    }

    return new ImportAssets2Tag(header, url, reserved, reserved2, count, new SymbolList(symbols));
  }
View Full Code Here

   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static SymbolClassTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 numSymbols = parseUINT16(parser, 0x00006, "SymbolClass::NumSymbols");

    final List<Symbol> symbols = new ArrayList<Symbol>();

    for (int i=0;i<numSymbols.value();i++) {
      symbols.add(SymbolParser.parse(parser, String.format("SymbolClass::Symbols[%d]", i)));
    }

    return new SymbolClassTag(header, numSymbols, new SymbolList(symbols));
  }
View Full Code Here

   */
  public static DefineFont3Tag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final int endPosition = parser.getBytePosition() + header.getNormalizedLength();

    final UINT16 fontId = parseUINT16(parser, 0x00006, "DefineFont3::FontId");
    final Flag fontFlagsHasLayout = parser.readFlag();
    final Flag fontFlagsShiftJIS = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsShiftJIS");
    final Flag fontFlagsSmallText = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsSmallText");
    final Flag fontFlagsANSI = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsANSI");
    final Flag fontFlagsWideOffsets = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsWideOffsets");
    final Flag fontFlagsWideCodes = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsWideCodes");
    final Flag fontFlagsItalic = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsItalic");
    final Flag fontFlagsBold = parseFlag(parser, 0x00006, "DefineFont3::FontFlagsBold");
    final UINT8 languageCode = parseUINT8(parser, 0x00006, "DefineFont3::LanguageCode");
    final UINT8 fontNameLen = parseUINT8(parser, 0x00006, "DefineFont3::FontNameLen");
    final AsciiString fontName = parseString(parser, fontNameLen.value(), 0x00006, "DefineFont3::FontName");
    final UINT16 numGlyphs = parseUINT16(parser, 0x00006, "DefineFont3::NumGlyphs");

    final List<IParsedINTElement> offsetTable = new ArrayList<IParsedINTElement>();

    for (int i=0;i<numGlyphs.value();i++) {
      if (fontFlagsWideOffsets.value()) {
        offsetTable.add(parseUINT32(parser, 0x00006, String.format("DefineFont3::OffsetTable[%d]", i)));
      }
      else {
        offsetTable.add(parseUINT16(parser, 0x00006, String.format("DefineFont3::OffsetTable[%d]", i)));
      }
    }

    // Reading the CodeTableOffset is tricky. I have seen valid tags with NumGlyphs=0 where
    // the CodeTableOffset was omitted and I have seen some that have it.
    final boolean parseCodeTableOffset = parser.getBytePosition() < endPosition;

    final IParsedINTElement codeTableOffset = parseCodeTableOffset ? (fontFlagsWideOffsets.value() ? parseUINT32(parser, 0x00006, "DefineFont3::CodeTableOffset") : parseUINT16(parser, 0x00006, "DefineFont3::CodeTableOffset")) : null;

    final List<Shape3> glyphShapeTable = new ArrayList<Shape3>();

    for (int i=0;i<numGlyphs.value();i++) {
      glyphShapeTable.add(Shape3Parser.parse(parser, String.format("GlyphShapeTable[%d]", i)));
    }

    final List<IParsedINTElement> codeTable = new ArrayList<IParsedINTElement>();

    for (int i=0;i<numGlyphs.value();i++) {
      if (fontFlagsWideCodes.value()) {
        offsetTable.add(parseUINT16(parser, 0x00006, String.format("DefineFont3::CodeTable[%d]", i)));
      }
      else {
        offsetTable.add(parseUINT8(parser, 0x00006, String.format("DefineFont3::CodeTable[%d]", i)));
      }
    }

    final boolean parseFont = parser.getBytePosition() < endPosition || (fontFlagsHasLayout != null && fontFlagsHasLayout.value());

    final INT16 fontAscent = parseINT16If(parser, 0x00006, parseFont, "DefineFont3::FontAscent");
    final INT16 fontDescent = parseINT16If(parser, 0x00006, parseFont, "DefineFont3::FontDescent");
    final INT16 fontLeading = parseINT16If(parser, 0x00006, parseFont, "DefineFont3::FontLeading");

    final List<INT16> fontAdvanceTable = new ArrayList<INT16>();
    final List<Rect> fontBoundsTable = new ArrayList<Rect>();

    if (parseFont) {
      for (int i=0;i<numGlyphs.value();i++) {
        fontAdvanceTable.add(parseINT16(parser, 0x00006, String.format("DefineFont3::FontAdvanceTable[%d]", i)));
      }

      for (int i=0;i<numGlyphs.value();i++) {
        fontBoundsTable.add(RectParser.parse(parser, String.format("DefineFont3::FontBoundsTable[%d]", i)));
      }
    }

    final UINT16 kerningCount = parseUINT16If(parser, 0x00006, parseFont, "DefineFont3::KerningCount");

    final List<KerningRecord> fontKerningTable = new ArrayList<KerningRecord>();

    if (parseFont) {
      for (int i=0;i<kerningCount.value();i++) {
        fontKerningTable.add(KerningRecordParser.parse(parser, fontFlagsWideCodes.value(), String.format("DefineFont3::FontKerningTable[%d]", i)));
      }
    }

    return new DefineFont3Tag(header, fontId, fontFlagsHasLayout, fontFlagsShiftJIS,
View Full Code Here

   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DefineFont2Tag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 fontId = parseUINT16(parser, 0x00006, "DefineFont2::FontId");
    final Flag fontFlagsHasLayout = parser.readFlag();
    final Flag fontFlagsShiftJIS = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsShiftJIS");
    final Flag fontFlagsSmallText = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsSmallText");
    final Flag fontFlagsANSI = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsANSI");
    final Flag fontFlagsWideOffsets = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsWideOffsets");
    final Flag fontFlagsWideCodes = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsWideCodes");
    final Flag fontFlagsItalic = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsItalic");
    final Flag fontFlagsBold = parseFlag(parser, 0x00006, "DefineFont2::FontFlagsBold");
    final UINT8 languageCode = parseUINT8(parser, 0x00006, "Define2::LanguageCode");
    final UINT8 fontNameLen = parseUINT8(parser, 0x00006, "DefineFont2::FontNameLen");
    final AsciiString fontName = parseString(parser, fontNameLen.value(), 0x00006, "DefineFont2::FontName");
    final UINT16 numGlyphs = parseUINT16(parser, 0x00006, "DefineFont2::NumGlyphs");

    final List<IParsedINTElement> offsetTable = new ArrayList<IParsedINTElement>();

    for (int i=0;i<numGlyphs.value();i++) {
      if (fontFlagsWideOffsets.value()) {
        offsetTable.add(parseUINT32(parser, 0x00006, String.format("DefineFont2::OffsetTable[%d]", i)));
      }
      else {
        offsetTable.add(parseUINT16(parser, 0x00006, String.format("DefineFont2::OffsetTable[%d]", i)));
      }
    }

    final IParsedINTElement codeTableOffset = fontFlagsWideOffsets.value() ? parseUINT32(parser, 0x00006, "DefineFont2::CodeTableOffset") : parseUINT16(parser, 0x00006, "DefineFont2::CodeTableOffset");

    final List<Shape> glyphShapeTable = new ArrayList<Shape>();

    for (int i=0;i<numGlyphs.value();i++) {
      glyphShapeTable.add(ShapeParser.parse(parser, String.format("GlyphShapeTable[%d]", i)));
    }

    final List<IParsedINTElement> codeTable = new ArrayList<IParsedINTElement>();

    for (int i=0;i<numGlyphs.value();i++) {
      if (fontFlagsWideCodes.value()) {
        offsetTable.add(parseUINT16(parser, 0x00006, String.format("DefineFont2::CodeTable[%d]", i)));
      }
      else {
        offsetTable.add(parseUINT8(parser, 0x00006, String.format("DefineFont2::CodeTable[%d]", i)));
      }
    }

    final INT16 fontAscent = parseINT16If(parser, 0x00006, fontFlagsHasLayout, "DefineFont2::FontAscent");
    final INT16 fontDescent = parseINT16If(parser, 0x00006, fontFlagsHasLayout, "DefineFont2::FontDescent");
    final INT16 fontLeading = parseINT16If(parser, 0x00006, fontFlagsHasLayout, "DefineFont2::FontLeading");

    final List<INT16> fontAdvanceTable = new ArrayList<INT16>();
    final List<Rect> fontBoundsTable = new ArrayList<Rect>();

    if (fontFlagsHasLayout.value()) {
      for (int i=0;i<numGlyphs.value();i++) {
        fontAdvanceTable.add(parseINT16(parser, 0x00006, String.format("DefineFont2::FontAdvanceTable[%d]", i)));
      }

      for (int i=0;i<numGlyphs.value();i++) {
        fontBoundsTable.add(RectParser.parse(parser, String.format("DefineFont2::FontBoundsTable[%d]", i)));
      }
    }

    final UINT16 kerningCount = parseUINT16If(parser, 0x00006, fontFlagsHasLayout, "DefineFont2::KerningCount");

    final List<KerningRecord> fontKerningTable = new ArrayList<KerningRecord>();

    if (fontFlagsHasLayout.value()) {
      for (int i=0;i<kerningCount.value();i++) {
        fontKerningTable.add(KerningRecordParser.parse(parser, fontFlagsWideCodes.value(), String.format("DefineFont2::FontKerningTable[%d]", i)));
      }
    }

    return new DefineFont2Tag(header, fontId, fontFlagsHasLayout, fontFlagsShiftJIS,
View Full Code Here

   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DefineSoundTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 soundId = parseUINT16(parser, 0x00006, "DefineSound::SoundId");
    final UBits soundFormat = parseUBits(parser, 4, 0x00006, "DefineSound::SoundFormat");
    final UBits soundRate = parseUBits(parser, 2, 0x00006, "DefineSound::SoundRate");
    final UBits soundSize = parseUBits(parser, 1, 0x00006, "DefineSound::SoundSize");
    final UBits soundType = parseUBits(parser, 1, 0x00006, "DefineSound::SoundType");
    final UINT32 soundSampleCount = parseUINT32(parser, 0x00006, "DefineSound::SoundSampleCount");
View Full Code Here

   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static ImportAssetsTag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final AsciiString url = parseString(parser, 0x00006, "ImportAssets::URL");
    final UINT16 count= parseUINT16(parser, 0x00006, "ImportAssets::Count");

    final List<Symbol> symbols = new ArrayList<Symbol>();

    for (int i=0;i<count.value();i++) {
      symbols.add(SymbolParser.parse(parser, String.format("ImportAssets::Symbols[%d]", i)));
    }

    return new ImportAssetsTag(header, url, count, new SymbolList(symbols));
  }
View Full Code Here

   *
   * @throws SWFParserException Thrown if parsing the tag failed.
   */
  public static DefineBitsJPEG3Tag parse(final RecordHeader header, final SWFBinaryParser parser) throws SWFParserException {

    final UINT16 characterId = parseUINT16(parser, 0x00006, "DefineBitsJPEG3::CharacterId");
    final UINT32 alphaDataOffset = parseUINT32(parser, 0x00006, "DefineBitsJPEG3::AlphaDataOffset");
    final ByteArray imageData = parseByteArray(parser, alphaDataOffset.value(), 0x00006, "DefineBitsJPEG3::ImageData");
    final ByteArray bitmapAlphaData = parseByteArray(parser, header.getNormalizedLength() - alphaDataOffset.value() - 4 - 2, 0x00006, "DefineBitsJPEG3::BitmapAlphaData");

    return new DefineBitsJPEG3Tag(header, characterId, alphaDataOffset, imageData, bitmapAlphaData);
View Full Code Here

TOP

Related Classes of tv.porst.splib.binaryparser.UINT16

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.