mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 04:20:51 +00:00
internal renderer - animating subsprites
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user