📄 textdump.java
字号:
coder.beginObject("envelope", "Envelope");
coder.readWord("mark", 4, false);
coder.readWord("leftSoundLevel", 2, false);
coder.readWord("rightSoundLevel", 2, false);
coder.endObject();
}
void decodeCurve(SWFDecoder coder)
{
coder.beginObject("curve", "Curve");
coder.readBits("type", 2, false);
int fieldSize = coder.readBits("size", 4, false) + 2;
coder.readBits("cx", fieldSize, true);
coder.readBits("cy", fieldSize, true);
coder.readBits("ax", fieldSize, true);
coder.readBits("ay", fieldSize, true);
coder.endObject();
}
void decodeLine(SWFDecoder coder)
{
coder.beginObject("line", "Line");
coder.readBits("type", 2, false);
int fieldSize = coder.readBits("size", 4, false)+2;
if (coder.readBool("hasXY"))
{
coder.readBits("x", fieldSize, true);
coder.readBits("y", fieldSize, true);
}
else
{
if (coder.readBool("hasY"))
{
coder.readBits("y", fieldSize, true);
}
else // horizontal line
{
coder.readBits("x", fieldSize, true);
}
}
coder.endObject();
}
void decodeShapeStyle(SWFDecoder coder)
{
int numberOfFillBits = coder.context[SWFDecoder.NumberOfFillBits];
int numberOfLineBits = coder.context[SWFDecoder.NumberOfLineBits];
coder.beginObject("shapeStyle", "ShapeStyle");
coder.readBits("type", 1, false);
boolean containsStyles = coder.readBool("hasStyles");
boolean containsLineStyle = coder.readBool("hasLineStyle");
boolean containsAltFillStyle = coder.readBool("hasAltFillStyle");
boolean containsFillStyle = coder.readBool("hasFillStyle");
boolean containsMove = coder.readBool("hasMove");
if (containsMove)
{
int moveFieldSize = coder.readBits("size", 5, false);
coder.readBits("x", moveFieldSize, true);
coder.readBits("y", moveFieldSize, true);
}
if (containsFillStyle)
coder.readBits("fillStyle", numberOfFillBits, false);
if (containsAltFillStyle)
coder.readBits("altFillStyle", numberOfFillBits, false);
if (containsLineStyle)
coder.readBits("lineStyle", numberOfLineBits, false);
if (containsStyles)
{
coder.alignToByte();
int fillStyleCount = coder.readWord("fillStyleCount", 1, false);
if (coder.context[SWFDecoder.ArrayCountExtended] != 0 && fillStyleCount == 0xFF)
fillStyleCount = coder.readWord("fillStyleCountExtended", 2, false);
coder.beginArray("fillStyles");
for (int i=0; i<fillStyleCount; i++)
{
switch (coder.scanWord(1, false))
{
case Solid:
decodeSolidFill(coder);
break;
case Linear:
case Radial:
decodeGradientFill(coder);
break;
case Tiled:
case Clipped:
case Unsmoothed_Tiled:
case Unsmoothed_Clipped:
decodeBitmapFill(coder);
break;
}
}
coder.endObject();
int lineStyleCount = coder.readWord("lineStyleCount", 1, false);
if (coder.context[SWFDecoder.ArrayCountExtended] != 0 && lineStyleCount == 0xFF)
lineStyleCount = coder.readWord("lineStyleCountExtended", 2, false);
coder.beginArray("lineStyles");
for (int i=0; i<lineStyleCount; i++)
decodeSolidLine(coder);
coder.endObject();
numberOfFillBits = coder.readBits("numberOfFillBits", 4, false);
numberOfLineBits = coder.readBits("numberOfLineBits", 4, false);
coder.context[SWFDecoder.NumberOfFillBits] = numberOfFillBits;
coder.context[SWFDecoder.NumberOfLineBits] = numberOfLineBits;
}
coder.endObject();
}
void decodeSolidLine(SWFDecoder coder)
{
coder.beginObject("solidLine", "SolidLine");
coder.readWord("width", 2, false);
decodeColor("color", coder);
coder.endObject();
}
void decodeSolidFill(SWFDecoder coder)
{
coder.beginObject("solidFill", "SolidFill");
coder.readWord("type", 1, false);
decodeColor("color", coder);
coder.endObject();
}
void decodeGradientFill(SWFDecoder coder)
{
coder.beginObject("gradientFill", "GradientFill");
coder.readWord("type", 1, false);
decodeCoordTransform("coordTransform", coder);
int count = coder.readWord("gradientCount", 1, false);
coder.beginArray("gradients");
for (int i=0; i<count; i++)
decodeGradient(coder);
coder.endObject();
coder.endObject();
}
void decodeGradient(SWFDecoder coder)
{
coder.beginObject("gradient", "Gradient");
coder.readWord("ratio", 1, false);
decodeColor("color", coder);
coder.endObject();
}
void decodeBitmapFill(SWFDecoder coder)
{
coder.beginObject("bitmapFill", "BitmapFill");
coder.readWord("type", 1, false);
coder.readWord("identifier", 2, false);
decodeCoordTransform("coordTransform", coder);
coder.endObject();
}
void decodeShape(SWFDecoder coder)
{
coder.beginObject("shape", "Shape");
coder.context[SWFDecoder.NumberOfFillBits] = coder.readBits("numberOfFillBits", 4, false);
coder.context[SWFDecoder.NumberOfLineBits] = coder.readBits("numberOfLineBits", 4, false);
coder.beginArray("path");
while (coder.scanBits(6, false) > 0)
{
if ((coder.scanBits(6, false) & 0x20) > 0)
{
if ((coder.scanBits(6, false) & 0x10) > 0)
decodeLine(coder);
else
decodeCurve(coder);
}
else
{
decodeShapeStyle(coder);
}
}
coder.readBits("endOfShape", 6, false);
coder.alignToByte();
coder.endObject();
coder.endObject();
}
int decodeMovieObject(SWFDecoder coder)
{
int type = coder.scanWord(2, false) >> 6;
int length = coder.scanWord(2, false) & 0x3F;
coder.context[SWFDecoder.Type] = type;
coder.logValue("type", new Integer(type), coder.getPointer(), 16);
coder.logValue("length", new Integer(length), coder.getPointer(), 16);
coder.setPointer(coder.getPointer()+16);
if (length == 0x3F)
length = coder.readWord("lengthExtended", 4, false);
return length;
}
void decodeSetBackgroundColor(SWFDecoder coder)
{
coder.beginObject("background", "SetBackgroundColor");
int type = coder.scanWord(2, false) >> 6;
int length = coder.scanWord(2, false) & 0x3F;
coder.context[SWFDecoder.Type] = type;
coder.logValue("type", new Integer(type), coder.getPointer(), 16);
coder.logValue("length", new Integer(length), coder.getPointer(), 16);
coder.setPointer(coder.getPointer()+16);
if (length == 0x3F)
length = coder.readWord("lengthExtended", 4, false);
decodeColor("color", coder);
coder.endObject();
}
void decodeShowFrame(SWFDecoder coder)
{
coder.beginObject("showFrame", "ShowFrame");
decodeMovieObject(coder);
coder.endObject();
}
void decodeDoAction(SWFDecoder coder)
{
coder.beginObject("doAction", "DoAction");
decodeMovieObject(coder);
coder.beginArray("actions");
while (decodeAction(coder) != 0);
coder.endObject();
coder.endObject();
}
void decodeFontInfo(SWFDecoder coder)
{
coder.beginObject("fontInfo", "FontInfo");
int length = decodeMovieObject(coder);
coder.readWord("identifier", 2, false);
int nameLength = coder.readWord("nameLength", 1, false);
coder.readString("name", nameLength);
coder.readBits("reserved", 2, false);
coder.readBool("isSmall");
coder.readBool("isShiftJIS");
coder.readBool("isANSI");
coder.readBool("isItalic");
coder.readBool("isBold");
boolean containsWideCodes = coder.readBool("hasWideCodes");
int bytesRead = 3 + nameLength + 1;
coder.beginArray("codes");
while (bytesRead < length)
{
coder.readWord("code", containsWideCodes ? 2 : 1, false);
bytesRead += (containsWideCodes) ? 2 : 1;
}
coder.endObject();
coder.endObject();
}
void decodeJPEGEncodingTable(SWFDecoder coder)
{
coder.beginObject("JPEGEncodingTable", "JPEGEncodingTable");
int length = decodeMovieObject(coder);
coder.readBytes("encodingTable", length);
coder.endObject();
}
void decodePlaceObject(SWFDecoder coder)
{
int lengthRead = coder.getPointer();
coder.beginObject("placeObject", "PlaceObject");
int length = decodeMovieObject(coder);
coder.readWord("identifier", 2, false);
coder.readWord("layer", 2, false);
decodeCoordTransform("coordTransform", coder);
lengthRead = (coder.getPointer() - lengthRead) >> 3;
if (length > lengthRead)
decodeColorTransform("colorTransform", coder);
coder.endObject();
}
void decodeRemoveObject(SWFDecoder coder)
{
coder.beginObject("removeObject", "RemoveObject");
decodeMovieObject(coder);
coder.readWord("identifier", 2, false);
coder.readWord("layer", 2, false);
coder.endObject();
}
void decodeSoundStreamBlock(SWFDecoder coder)
{
coder.beginObject("soundStreamBlock", "SoundStreamBlock");
int length = decodeMovieObject(coder);
coder.readBytes("soundData", length); //
coder.endObject();
}
void decodeSoundStreamHead(SWFDecoder coder)
{
coder.beginObject("soundStreamHead", "SoundStreamHead");
decodeMovieObject(coder);
coder.readBits("reserved", 4, false);
coder.readBits("playbackRate", 2, false);
coder.readBits("playbackSampleSize", 1, false);
coder.readBits("playbackChannels", 1, false);
int format = coder.readBits("format", 4, false);
coder.readBits("streamRate", 2, false);
coder.readBits("streamSampleSize", 1, false);
coder.readBits("streamChannels", 1, false);
coder.readWord("streamSampleCount", 2, false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -