From ea067127811474a439f54c10536efb4868a60a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 4 May 2013 11:52:06 +0200 Subject: [PATCH] MORPHGRADIENT fix --- trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java | 4 ++-- trunk/src/com/jpexs/decompiler/flash/SWFOutputStream.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java index 5286bac64..a6e936796 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -2635,8 +2635,8 @@ public class SWFInputStream extends InputStream { public MORPHGRADIENT readMORPHGRADIENT() throws IOException { MORPHGRADIENT ret = new MORPHGRADIENT(); int numGradients = (int) readUI8(); - numGradients = numGradients % 8; //there should be 1 to 8 but sometimes there is more. This modulo seems to be OK. - + ret.numGradientsExtra = numGradients & 0xf8; //some extra data. Are these the same as in GRADIENT or just obfuscator junk??? + numGradients = numGradients & 0x7; ret.gradientRecords = new MORPHGRADRECORD[numGradients]; for (int i = 0; i < numGradients; i++) { ret.gradientRecords[i] = readMORPHGRADRECORD(); diff --git a/trunk/src/com/jpexs/decompiler/flash/SWFOutputStream.java b/trunk/src/com/jpexs/decompiler/flash/SWFOutputStream.java index d8099a5ad..c12292f3a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWFOutputStream.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWFOutputStream.java @@ -1453,7 +1453,7 @@ public class SWFOutputStream extends OutputStream { * @throws IOException */ public void writeMORPHGRADIENT(MORPHGRADIENT value, int shapeNum) throws IOException { - writeUB(4, value.gradientRecords.length); + writeUI8(value.gradientRecords.length + value.numGradientsExtra); for (int i = 0; i < value.gradientRecords.length; i++) { writeMORPHGRADRECORD(value.gradientRecords[i]); } @@ -1603,7 +1603,7 @@ public class SWFOutputStream extends OutputStream { } public void writeBytesZlib(byte data[]) throws IOException { - DeflaterOutputStream deflater = new DeflaterOutputStream(this,new Deflater(9)); + DeflaterOutputStream deflater = new DeflaterOutputStream(this, new Deflater(9)); deflater.write(data); deflater.finish(); }