diff --git a/trunk/src/com/jpexs/decompiler/flash/Layer.java b/trunk/src/com/jpexs/decompiler/flash/Layer.java index b0abb0738..f1a30e683 100644 --- a/trunk/src/com/jpexs/decompiler/flash/Layer.java +++ b/trunk/src/com/jpexs/decompiler/flash/Layer.java @@ -21,13 +21,14 @@ import com.jpexs.decompiler.flash.types.CXFORMWITHALPHA; import com.jpexs.decompiler.flash.types.MATRIX; import com.jpexs.decompiler.flash.types.RGBA; import com.jpexs.decompiler.flash.types.filters.FILTER; +import java.io.Serializable; import java.util.List; /** * * @author JPEXS */ -public class Layer { +public class Layer implements Serializable { public MATRIX matrix; public String instanceName = null; @@ -40,7 +41,7 @@ public class Layer { public RGBA backGroundColor = null; public int characterId = -1; public int ratio = -1; - public int duration = 0; + public int time = 0; public boolean visible = true; - public int clipDepth = -1; + public int clipDepth = -1; } diff --git a/trunk/src/com/jpexs/decompiler/flash/SWF.java b/trunk/src/com/jpexs/decompiler/flash/SWF.java index 6e4ae46f7..d76078c28 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWF.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWF.java @@ -2239,6 +2239,7 @@ public final class SWF implements TreeItem { return image; } + @SuppressWarnings("unchecked") private static List getFrameInfo(int startFrame, int stopFrame, List allTags, List controlTags, int totalFrameCount) { List ret = new ArrayList<>(); if (startFrame > stopFrame) { @@ -2337,6 +2338,7 @@ public final class SWF implements TreeItem { layer.filters = po.getFilters(); layer.ratio = po.getRatio(); layer.clipDepth = po.getClipDepth(); + layer.time = 0; } } @@ -2345,10 +2347,10 @@ public final class SWF implements TreeItem { layers.remove(rt.getDepth()); } - for (Layer l : layers.values()) { - l.duration++; - } if (t instanceof ShowFrameTag) { + for (Layer l : layers.values()) { + l.time++; + } if ((f >= startFrame) && (f <= stopFrame)) { FrameInfo fi = new FrameInfo(); fi.maxDepth = maxDepth; @@ -2357,6 +2359,9 @@ public final class SWF implements TreeItem { fi.characters = characters; fi.frame = f; ret.add(fi); + if (f < stopFrame) { + layers = (Map) Helper.deepCopy(layers); + } } f++; if (f > stopFrame) { @@ -2439,6 +2444,7 @@ public final class SWF implements TreeItem { DrawableTag drawable = (DrawableTag) character; SerializableImage img; Matrix drawMatrix = new Matrix(); + int dframe = 1 + layer.time % drawable.getNumFrames(); if (drawable instanceof BoundedTag) { BoundedTag bounded = (BoundedTag) drawable; RECT boundRect = bounded.getRect(characters, new Stack()); @@ -2462,10 +2468,10 @@ public final class SWF implements TreeItem { gr.setComposite(AlphaComposite.Src); gr.setColor(new Color(0, 0, 0, 0f)); gr.fillRect(0, 0, img.getWidth(), image.getHeight()); - drawable.toImage(layer.ratio < 0 ? 0 : layer.ratio/*layer.duration*/, allTags, characters, visited, img, m); + drawable.toImage(dframe, layer.ratio, allTags, characters, visited, img, m); } else { // only DefineFont tags - img = drawable.toImage(layer.ratio < 0 ? 0 : layer.ratio/*layer.duration*/, allTags, characters, visited, transformation); + img = drawable.toImage(dframe, layer.ratio, allTags, characters, visited, transformation); } if (layer.filters != null) { for (FILTER filter : layer.filters) { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index ec8cf3d12..812568bfc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -149,10 +149,10 @@ public final class ImagePanel extends JPanel implements ActionListener, FlashDis g.fillRect(0, 0, image.getWidth(), image.getHeight()); Matrix m = new Matrix(); m.translate(-rect.Xmin, -rect.Ymin); - drawable.toImage(0, swf.tags, characters, new Stack(), image, m); + drawable.toImage(0, 0, swf.tags, characters, new Stack(), image, m); img = image; } else { - img = drawable.toImage(0, swf.tags, characters, new Stack(), Matrix.getScaleInstance(1 / SWF.unitDivisor)); + img = drawable.toImage(0, 0, swf.tags, characters, new Stack(), Matrix.getScaleInstance(1 / SWF.unitDivisor)); } SWF.putToCache(key, img); } @@ -227,11 +227,11 @@ public final class ImagePanel extends JPanel implements ActionListener, FlashDis g.fillRect(0, 0, image.getWidth(), image.getHeight()); Matrix m = new Matrix(); m.translate(-rect.Xmin, -rect.Ymin); - drawable.toImage(nframe, swf.tags, characters, new Stack(), image, m); + drawable.toImage(nframe, nframe, swf.tags, characters, new Stack(), image, m); img = image; } else { - img = drawable.toImage(nframe, swf.tags, characters, new Stack(), Matrix.getScaleInstance(1 / SWF.unitDivisor)); + img = drawable.toImage(nframe, nframe, swf.tags, characters, new Stack(), Matrix.getScaleInstance(1 / SWF.unitDivisor)); } SWF.putToCache(key, img); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineButton2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineButton2Tag.java index 43a5e9cbc..666e06772 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineButton2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineButton2Tag.java @@ -253,12 +253,12 @@ public class DefineButton2Tag extends CharacterTag implements Container, Bounded } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { if (visited.contains(buttonId)) { return; } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java index ff2bfaa20..3152c1970 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineButtonTag.java @@ -274,12 +274,12 @@ public class DefineButtonTag extends CharacterTag implements ASMSource, BoundedT } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { if (visited.contains(buttonId)) { return; } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java index 5afefef81..0441c2cb6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineEditTextTag.java @@ -618,12 +618,12 @@ public class DefineEditTextTag extends TextTag implements DrawableTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { FontTag font = null; for (Tag tag : tags) { if (tag instanceof FontTag) { diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShape2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShape2Tag.java index 84f9560e8..569e6e90f 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShape2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShape2Tag.java @@ -196,10 +196,10 @@ public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag, Mo return 2; } - private SHAPEWITHSTYLE getFrame(int frame) { + private SHAPEWITHSTYLE getShapeAtRatio(int ratio) { List finalRecords = new ArrayList<>(); - FILLSTYLEARRAY fillStyles = morphFillStyles.getFillStylesAt(frame); - LINESTYLEARRAY lineStyles = morphLineStyles.getLineStylesAt(getShapeNum(), frame); + FILLSTYLEARRAY fillStyles = morphFillStyles.getFillStylesAt(ratio); + LINESTYLEARRAY lineStyles = morphLineStyles.getLineStylesAt(getShapeNum(), ratio); int startPosX = 0, startPosY = 0; int endPosX = 0, endPosY = 0; @@ -236,8 +236,8 @@ public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag, Mo } StyleChangeRecord scr = (StyleChangeRecord) scr1.clone(); if (scr1.stateMoveTo || scr2.stateMoveTo) { - scr.moveDeltaX = startPosX + (endPosX - startPosX) * frame / 65535; - scr.moveDeltaY = startPosY + (endPosY - startPosY) * frame / 65535; + scr.moveDeltaX = startPosX + (endPosX - startPosX) * ratio / 65535; + scr.moveDeltaY = startPosY + (endPosY - startPosY) * ratio / 65535; scr.stateMoveTo = scr.moveDeltaX != posX || scr.moveDeltaY != posY; } finalRecords.add(scr); @@ -270,10 +270,10 @@ public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag, Mo continue; } CurvedEdgeRecord cer = new CurvedEdgeRecord(); - cer.controlDeltaX = cer1.controlDeltaX + (cer2.controlDeltaX - cer1.controlDeltaX) * frame / 65535; - cer.controlDeltaY = cer1.controlDeltaY + (cer2.controlDeltaY - cer1.controlDeltaY) * frame / 65535; - cer.anchorDeltaX = cer1.anchorDeltaX + (cer2.anchorDeltaX - cer1.anchorDeltaX) * frame / 65535; - cer.anchorDeltaY = cer1.anchorDeltaY + (cer2.anchorDeltaY - cer1.anchorDeltaY) * frame / 65535; + cer.controlDeltaX = cer1.controlDeltaX + (cer2.controlDeltaX - cer1.controlDeltaX) * ratio / 65535; + cer.controlDeltaY = cer1.controlDeltaY + (cer2.controlDeltaY - cer1.controlDeltaY) * ratio / 65535; + cer.anchorDeltaX = cer1.anchorDeltaX + (cer2.anchorDeltaX - cer1.anchorDeltaX) * ratio / 65535; + cer.anchorDeltaY = cer1.anchorDeltaY + (cer2.anchorDeltaY - cer1.anchorDeltaY) * ratio / 65535; startPosX += cer1.controlDeltaX + cer1.anchorDeltaX; startPosY += cer1.controlDeltaY + cer1.anchorDeltaY; endPosX += cer2.controlDeltaX + cer2.anchorDeltaX; @@ -296,8 +296,8 @@ public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag, Mo StraightEdgeRecord ser = new StraightEdgeRecord(); ser.generalLineFlag = true; ser.vertLineFlag = false; - ser.deltaX = ser1.deltaX + (ser2.deltaX - ser1.deltaX) * frame / 65535; - ser.deltaY = ser1.deltaY + (ser2.deltaY - ser1.deltaY) * frame / 65535; + ser.deltaX = ser1.deltaX + (ser2.deltaX - ser1.deltaX) * ratio / 65535; + ser.deltaY = ser1.deltaY + (ser2.deltaY - ser1.deltaY) * ratio / 65535; startPosX += ser1.deltaX; startPosY += ser1.deltaY; endPosX += ser2.deltaX; @@ -315,13 +315,13 @@ public class DefineMorphShape2Tag extends CharacterTag implements BoundedTag, Mo } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { - SHAPEWITHSTYLE shape = getFrame(frame); + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + SHAPEWITHSTYLE shape = getShapeAtRatio(ratio); // shapeNum: 4 // todo: Currently the generated image is not cached, because the cache // key contains the hashCode of the finalRecord object, and it is always diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShapeTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShapeTag.java index b0a2335b3..59bff25de 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShapeTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineMorphShapeTag.java @@ -179,10 +179,10 @@ public class DefineMorphShapeTag extends CharacterTag implements BoundedTag, Mor return 1; } - private SHAPEWITHSTYLE getFrame(int frame) { + private SHAPEWITHSTYLE getShapeAtRatio(int ratio) { List finalRecords = new ArrayList<>(); - FILLSTYLEARRAY fillStyles = morphFillStyles.getFillStylesAt(frame); - LINESTYLEARRAY lineStyles = morphLineStyles.getLineStylesAt(getShapeNum(), frame); + FILLSTYLEARRAY fillStyles = morphFillStyles.getFillStylesAt(ratio); + LINESTYLEARRAY lineStyles = morphLineStyles.getLineStylesAt(getShapeNum(), ratio); int startPosX = 0, startPosY = 0; int endPosX = 0, endPosY = 0; @@ -219,8 +219,8 @@ public class DefineMorphShapeTag extends CharacterTag implements BoundedTag, Mor } StyleChangeRecord scr = (StyleChangeRecord) scr1.clone(); if (scr1.stateMoveTo || scr2.stateMoveTo) { - scr.moveDeltaX = startPosX + (endPosX - startPosX) * frame / 65535; - scr.moveDeltaY = startPosY + (endPosY - startPosY) * frame / 65535; + scr.moveDeltaX = startPosX + (endPosX - startPosX) * ratio / 65535; + scr.moveDeltaY = startPosY + (endPosY - startPosY) * ratio / 65535; scr.stateMoveTo = scr.moveDeltaX != posX || scr.moveDeltaY != posY; } finalRecords.add(scr); @@ -253,10 +253,10 @@ public class DefineMorphShapeTag extends CharacterTag implements BoundedTag, Mor continue; } CurvedEdgeRecord cer = new CurvedEdgeRecord(); - cer.controlDeltaX = cer1.controlDeltaX + (cer2.controlDeltaX - cer1.controlDeltaX) * frame / 65535; - cer.controlDeltaY = cer1.controlDeltaY + (cer2.controlDeltaY - cer1.controlDeltaY) * frame / 65535; - cer.anchorDeltaX = cer1.anchorDeltaX + (cer2.anchorDeltaX - cer1.anchorDeltaX) * frame / 65535; - cer.anchorDeltaY = cer1.anchorDeltaY + (cer2.anchorDeltaY - cer1.anchorDeltaY) * frame / 65535; + cer.controlDeltaX = cer1.controlDeltaX + (cer2.controlDeltaX - cer1.controlDeltaX) * ratio / 65535; + cer.controlDeltaY = cer1.controlDeltaY + (cer2.controlDeltaY - cer1.controlDeltaY) * ratio / 65535; + cer.anchorDeltaX = cer1.anchorDeltaX + (cer2.anchorDeltaX - cer1.anchorDeltaX) * ratio / 65535; + cer.anchorDeltaY = cer1.anchorDeltaY + (cer2.anchorDeltaY - cer1.anchorDeltaY) * ratio / 65535; startPosX += cer1.controlDeltaX + cer1.anchorDeltaX; startPosY += cer1.controlDeltaY + cer1.anchorDeltaY; endPosX += cer2.controlDeltaX + cer2.anchorDeltaX; @@ -279,8 +279,8 @@ public class DefineMorphShapeTag extends CharacterTag implements BoundedTag, Mor StraightEdgeRecord ser = new StraightEdgeRecord(); ser.generalLineFlag = true; ser.vertLineFlag = false; - ser.deltaX = ser1.deltaX + (ser2.deltaX - ser1.deltaX) * frame / 65535; - ser.deltaY = ser1.deltaY + (ser2.deltaY - ser1.deltaY) * frame / 65535; + ser.deltaX = ser1.deltaX + (ser2.deltaX - ser1.deltaX) * ratio / 65535; + ser.deltaY = ser1.deltaY + (ser2.deltaY - ser1.deltaY) * ratio / 65535; startPosX += ser1.deltaX; startPosY += ser1.deltaY; endPosX += ser2.deltaX; @@ -298,13 +298,13 @@ public class DefineMorphShapeTag extends CharacterTag implements BoundedTag, Mor } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { - SHAPEWITHSTYLE shape = getFrame(frame); + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + SHAPEWITHSTYLE shape = getShapeAtRatio(ratio); // shapeNum: 3 // todo: Currently the generated image is not cached, because the cache // key contains the hashCode of the finalRecord object, and it is always diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape2Tag.java index 53a73bf52..24224a963 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape2Tag.java @@ -72,12 +72,12 @@ public class DefineShape2Tag extends CharacterTag implements ShapeTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { BitmapExporter.exportTo(swf, getShapes(), null, image, transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape3Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape3Tag.java index a7fdcd85f..ef90e0453 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape3Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape3Tag.java @@ -77,12 +77,12 @@ public class DefineShape3Tag extends CharacterTag implements ShapeTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { BitmapExporter.exportTo(swf, getShapes(), null, image, transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape4Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape4Tag.java index 7e551a11f..f0a226cb6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape4Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShape4Tag.java @@ -80,12 +80,12 @@ public class DefineShape4Tag extends CharacterTag implements ShapeTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { BitmapExporter.exportTo(swf, getShapes(), null, image, transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShapeTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShapeTag.java index fa771d47d..72859c16d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineShapeTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineShapeTag.java @@ -105,12 +105,12 @@ public class DefineShapeTag extends CharacterTag implements ShapeTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { BitmapExporter.exportTo(swf, getShapes(), null, image, transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java index 2b619f006..bc3f6cb09 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineSpriteTag.java @@ -277,22 +277,15 @@ public class DefineSpriteTag extends CharacterTag implements Container, BoundedT } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { if (visited.contains(spriteId)) { return; } - /* - rect.Xmax=displayRect.Xmin+rect.getWidth(); - rect.Ymax=displayRect.Ymin+rect.getWidth(); - rect.Xmin=displayRect.Xmin; - rect.Ymin=displayRect.Ymin; - RECT rect=getRect(characters); - SWF.fixRect(rect);*/ RECT rect = getRect(characters, visited); visited.push(spriteId); SWF.frameToImage(spriteId, frame, tags, subTags, rect, frameCount, visited, image, transformation); @@ -301,8 +294,7 @@ public class DefineSpriteTag extends CharacterTag implements Container, BoundedT @Override public Point getImagePos(int frame, Map characters, Stack visited) { - //RECT displayRect = getRect(characters, visited); //use visited - return new Point(0, 0); //displayRect.Xmin,displayRect.Ymin); + return new Point(0, 0); } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java index 439245294..f4b3ac48c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineText2Tag.java @@ -491,12 +491,12 @@ public class DefineText2Tag extends TextTag implements DrawableTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { staticTextToImage(swf, characters, textRecords, 2, image, getTextMatrix(), transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java index d60e3dea9..dbdfe9fd2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/DefineTextTag.java @@ -507,12 +507,12 @@ public class DefineTextTag extends TextTag implements DrawableTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { throw new Error("this overload of toImage call is not supported on BoundedTag"); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { staticTextToImage(swf, characters, textRecords, 1, image, getTextMatrix(), transformation); } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/DrawableTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/DrawableTag.java index 862554b60..fc1d2669d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/base/DrawableTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/DrawableTag.java @@ -30,9 +30,9 @@ import java.util.Stack; */ public interface DrawableTag { - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation); + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation); - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation); + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation); public Point getImagePos(int frame, Map characters, Stack visited); diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java b/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java index a2a62eb82..091f669d6 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/base/FontTag.java @@ -246,12 +246,12 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { return SHAPERECORD.shapeListToImage(swf, getGlyphShapeTable(), 500, 500, Color.black); } @Override - public void toImage(int frame, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { + public void toImage(int frame, int ratio, List tags, Map characters, Stack visited, SerializableImage image, Matrix transformation) { } diff --git a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java index cbe672d83..4b274d827 100644 --- a/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java +++ b/trunk/src/com/jpexs/decompiler/flash/tags/gfx/DefineCompactedFont.java @@ -115,7 +115,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag { } @Override - public SerializableImage toImage(int frame, List tags, Map characters, Stack visited, Matrix transformation) { + public SerializableImage toImage(int frame, int ratio, List tags, Map characters, Stack visited, Matrix transformation) { List shapes = new ArrayList<>(); for (int i = 0; i < shapeCache.size(); i++) { shapes.add(SHAPERECORD.resizeSHAPE(shapeCache.get(i), SWF.unitDivisor));