internal renderer - animating subsprites

This commit is contained in:
Jindra Pet��k
2014-03-01 12:23:24 +01:00
parent 5f10ec4a8f
commit 7024cdb61f
18 changed files with 73 additions and 74 deletions
@@ -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;
}
+11 -5
View File
@@ -2239,6 +2239,7 @@ public final class SWF implements TreeItem {
return image;
}
@SuppressWarnings("unchecked")
private static List<FrameInfo> getFrameInfo(int startFrame, int stopFrame, List<Tag> allTags, List<Tag> controlTags, int totalFrameCount) {
List<FrameInfo> 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<Integer, Layer>) 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<Integer>());
@@ -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) {
@@ -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<Integer>(), image, m);
drawable.toImage(0, 0, swf.tags, characters, new Stack<Integer>(), image, m);
img = image;
} else {
img = drawable.toImage(0, swf.tags, characters, new Stack<Integer>(), Matrix.getScaleInstance(1 / SWF.unitDivisor));
img = drawable.toImage(0, 0, swf.tags, characters, new Stack<Integer>(), 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<Integer>(), image, m);
drawable.toImage(nframe, nframe, swf.tags, characters, new Stack<Integer>(), image, m);
img = image;
} else {
img = drawable.toImage(nframe, swf.tags, characters, new Stack<Integer>(), Matrix.getScaleInstance(1 / SWF.unitDivisor));
img = drawable.toImage(nframe, nframe, swf.tags, characters, new Stack<Integer>(), Matrix.getScaleInstance(1 / SWF.unitDivisor));
}
SWF.putToCache(key, img);
}
@@ -253,12 +253,12 @@ public class DefineButton2Tag extends CharacterTag implements Container, Bounded
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
if (visited.contains(buttonId)) {
return;
}
@@ -274,12 +274,12 @@ public class DefineButtonTag extends CharacterTag implements ASMSource, BoundedT
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
if (visited.contains(buttonId)) {
return;
}
@@ -618,12 +618,12 @@ public class DefineEditTextTag extends TextTag implements DrawableTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
FontTag font = null;
for (Tag tag : tags) {
if (tag instanceof FontTag) {
@@ -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<SHAPERECORD> 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<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
SHAPEWITHSTYLE shape = getFrame(frame);
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> 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
@@ -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<SHAPERECORD> 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<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
SHAPEWITHSTYLE shape = getFrame(frame);
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> 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
@@ -72,12 +72,12 @@ public class DefineShape2Tag extends CharacterTag implements ShapeTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
BitmapExporter.exportTo(swf, getShapes(), null, image, transformation);
}
@@ -77,12 +77,12 @@ public class DefineShape3Tag extends CharacterTag implements ShapeTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
BitmapExporter.exportTo(swf, getShapes(), null, image, transformation);
}
@@ -80,12 +80,12 @@ public class DefineShape4Tag extends CharacterTag implements ShapeTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
BitmapExporter.exportTo(swf, getShapes(), null, image, transformation);
}
@@ -105,12 +105,12 @@ public class DefineShapeTag extends CharacterTag implements ShapeTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
BitmapExporter.exportTo(swf, getShapes(), null, image, transformation);
}
@@ -277,22 +277,15 @@ public class DefineSpriteTag extends CharacterTag implements Container, BoundedT
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> 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<Integer, CharacterTag> characters, Stack<Integer> visited) {
//RECT displayRect = getRect(characters, visited); //use visited
return new Point(0, 0); //displayRect.Xmin,displayRect.Ymin);
return new Point(0, 0);
}
@Override
@@ -491,12 +491,12 @@ public class DefineText2Tag extends TextTag implements DrawableTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
staticTextToImage(swf, characters, textRecords, 2, image, getTextMatrix(), transformation);
}
@@ -507,12 +507,12 @@ public class DefineTextTag extends TextTag implements DrawableTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
throw new Error("this overload of toImage call is not supported on BoundedTag");
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
staticTextToImage(swf, characters, textRecords, 1, image, getTextMatrix(), transformation);
}
@@ -30,9 +30,9 @@ import java.util.Stack;
*/
public interface DrawableTag {
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation);
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation);
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation);
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation);
public Point getImagePos(int frame, Map<Integer, CharacterTag> characters, Stack<Integer> visited);
@@ -246,12 +246,12 @@ public abstract class FontTag extends CharacterTag implements AloneTag, Drawable
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
return SHAPERECORD.shapeListToImage(swf, getGlyphShapeTable(), 500, 500, Color.black);
}
@Override
public void toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
public void toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, SerializableImage image, Matrix transformation) {
}
@@ -115,7 +115,7 @@ public final class DefineCompactedFont extends FontTag implements DrawableTag {
}
@Override
public SerializableImage toImage(int frame, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
public SerializableImage toImage(int frame, int ratio, List<Tag> tags, Map<Integer, CharacterTag> characters, Stack<Integer> visited, Matrix transformation) {
List<SHAPE> shapes = new ArrayList<>();
for (int i = 0; i < shapeCache.size(); i++) {
shapes.add(SHAPERECORD.resizeSHAPE(shapeCache.get(i), SWF.unitDivisor));