mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-17 03:31:53 +00:00
zoom fix
This commit is contained in:
@@ -2668,7 +2668,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static SerializableImage frameToImageGet(Timeline timeline, int frame, int time, Point cursorPosition, int mouseButton, RECT displayRect, Matrix transformation, Matrix absoluteTransformation, ColorTransform colorTransform, Color backGroundColor, double zoom) {
|
||||
public static SerializableImage frameToImageGet(Timeline timeline, int frame, int time, Point cursorPosition, int mouseButton, RECT displayRect, Matrix transformation, ColorTransform colorTransform, Color backGroundColor, double zoom) {
|
||||
if (timeline.getFrameCount() == 0) {
|
||||
return new SerializableImage(1, 1, SerializableImage.TYPE_INT_ARGB);
|
||||
}
|
||||
@@ -2691,7 +2691,7 @@ public final class SWF implements SWFContainerItem, Timelined {
|
||||
RenderContext renderContext = new RenderContext();
|
||||
renderContext.cursorPosition = cursorPosition;
|
||||
renderContext.mouseButton = mouseButton;
|
||||
timeline.toImage(frame, time, renderContext, image, false, m, transformation, absoluteTransformation, colorTransform);
|
||||
timeline.toImage(frame, time, renderContext, image, false, m, transformation, m, colorTransform);
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
@@ -360,7 +360,7 @@ public class FrameExporter {
|
||||
}
|
||||
|
||||
int fframe = fframes.get(pos++);
|
||||
BufferedImage result = SWF.frameToImageGet(ftim, fframe, fframe, null, 0, ftim.displayRect, new Matrix(), new Matrix(), null, fbackgroundColor, settings.zoom).getBufferedImage();
|
||||
BufferedImage result = SWF.frameToImageGet(ftim, fframe, fframe, null, 0, ftim.displayRect, new Matrix(), null, fbackgroundColor, settings.zoom).getBufferedImage();
|
||||
|
||||
if (evl != null) {
|
||||
evl.handleExportedEvent("frame", pos, fframes.size(), tagName);
|
||||
|
||||
@@ -638,7 +638,7 @@ public class Timeline {
|
||||
return;
|
||||
}
|
||||
|
||||
m.translate(-rect.xMin, -rect.yMin);
|
||||
m = m.preConcatenate(Matrix.getTranslateInstance(-rect.xMin, -rect.yMin));
|
||||
//strokeTransform = strokeTransform.clone();
|
||||
//strokeTransform.translate(-rect.xMin, -rect.yMin);
|
||||
drawMatrix.translate(rect.xMin, rect.yMin);
|
||||
@@ -760,8 +760,6 @@ public class Timeline {
|
||||
gm.drawImage(img.getBufferedImage(), 0, 0, null);
|
||||
Clip clip = new Clip(Helper.imageToShape(mask), clipDepth); // Maybe we can get current outline instead converting from image (?)
|
||||
clips.add(clip);
|
||||
g.setTransform(new AffineTransform());
|
||||
g.setClip(clip.shape);
|
||||
} else {
|
||||
if (renderContext.cursorPosition != null) {
|
||||
if (drawable instanceof DefineSpriteTag) {
|
||||
@@ -784,20 +782,8 @@ public class Timeline {
|
||||
g2.draw(shape);
|
||||
}
|
||||
|
||||
Shape prevClip = g.getClip();
|
||||
if (prevClip != null) {
|
||||
g.setTransform(new AffineTransform());
|
||||
g.setClip(prevClip);
|
||||
|
||||
// draw clip border
|
||||
// g.setPaint(Color.red);
|
||||
// g.setStroke(new BasicStroke(2));
|
||||
// g.draw(prevClip);
|
||||
}
|
||||
|
||||
g.setTransform(trans);
|
||||
g.drawImage(img.getBufferedImage(), 0, 0, null);
|
||||
g.setClip(prevClip);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -843,7 +829,13 @@ public class Timeline {
|
||||
}
|
||||
}
|
||||
|
||||
g.setTransform(new AffineTransform());
|
||||
g.setClip(clip);
|
||||
|
||||
// draw clip border
|
||||
//g.setPaint(Color.red);
|
||||
//g.setStroke(new BasicStroke(2));
|
||||
//g.draw(clip);
|
||||
} else {
|
||||
g.setClip(null);
|
||||
}
|
||||
@@ -901,7 +893,7 @@ public class Timeline {
|
||||
|
||||
Rectangle2D r = new Rectangle2D.Double(p1.xMin, p1.yMin, p1.getWidth(), p1.getHeight());
|
||||
g.setClip(r);
|
||||
drawDrawable(strokeTransformation.preConcatenate(layerMatrix), layer, transforms[s], g, colorTransform, layer.blendMode, clips, transformation.clone(), isClip, layer.clipDepth, absMat, time, layer.ratio, renderContext, image, (DrawableTag) character, layer.filters, unzoom, clrTrans);
|
||||
drawDrawable(strokeTransformation.preConcatenate(layerMatrix), layer, transforms[s], g, colorTransform, layer.blendMode, clips, transformation, isClip, layer.clipDepth, absMat, time, layer.ratio, renderContext, image, (DrawableTag) character, layer.filters, unzoom, clrTrans);
|
||||
|
||||
}
|
||||
g.setClip(c);
|
||||
@@ -919,7 +911,7 @@ public class Timeline {
|
||||
}*/
|
||||
g.setTransform(origTransform);
|
||||
} else {
|
||||
drawDrawable(strokeTransformation, layer, layerMatrix, g, colorTransform, layer.blendMode, clips, transformation.clone(), isClip, layer.clipDepth, absMat, time, layer.ratio, renderContext, image, (DrawableTag) character, layer.filters, unzoom, clrTrans);
|
||||
drawDrawable(strokeTransformation, layer, layerMatrix, g, colorTransform, layer.blendMode, clips, transformation, isClip, layer.clipDepth, absMat, time, layer.ratio, renderContext, image, (DrawableTag) character, layer.filters, unzoom, clrTrans);
|
||||
}
|
||||
} else if (character instanceof BoundedTag) {
|
||||
showPlaceholder = true;
|
||||
@@ -957,7 +949,7 @@ public class Timeline {
|
||||
}
|
||||
}
|
||||
|
||||
g.setTransform(AffineTransform.getScaleInstance(1, 1));
|
||||
g.setTransform(new AffineTransform());
|
||||
g.setClip(prevClip);
|
||||
}
|
||||
|
||||
|
||||
@@ -2040,11 +2040,7 @@ public class CommandLineArgumentParser {
|
||||
}
|
||||
System.out.print("Page " + page + "/" + totalPages + "...");
|
||||
RECT displayRect = new RECT(ds.getTimeline().displayRect);
|
||||
//displayRect.Xmax *= zoom;
|
||||
//displayRect.Ymax *= zoom;
|
||||
Matrix m = new Matrix();
|
||||
//m.scale(zoom);
|
||||
BufferedImage img = SWF.frameToImageGet(ds.getTimeline(), 0, 0, null, 0, displayRect, m, m, null, Color.white, zoom).getBufferedImage();
|
||||
BufferedImage img = SWF.frameToImageGet(ds.getTimeline(), 0, 0, null, 0, displayRect, new Matrix(), null, Color.white, zoom).getBufferedImage();
|
||||
PageFormat pf = new PageFormat();
|
||||
pf.setOrientation(PageFormat.PORTRAIT);
|
||||
Paper p = new Paper();
|
||||
|
||||
@@ -313,7 +313,7 @@ public class FolderPreviewPanel extends JPanel {
|
||||
String key = "frame_" + fn.frame + "_" + timeline.id + "_" + zoom;
|
||||
imgSrc = swf.getFromCache(key);
|
||||
if (imgSrc == null) {
|
||||
imgSrc = SWF.frameToImageGet(timeline, fn.frame, fn.frame, null, 0, rect, new Matrix(), new Matrix(), null, null, zoom);
|
||||
imgSrc = SWF.frameToImageGet(timeline, fn.frame, fn.frame, null, 0, rect, new Matrix(), null, null, zoom);
|
||||
swf.putToCache(key, imgSrc);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,6 @@ import java.awt.BasicStroke;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Point;
|
||||
@@ -418,8 +417,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
/*if (width > swf.displayRect.getWidth()) {
|
||||
scale = (double) swf.displayRect.getWidth() / (double) width;
|
||||
}*/
|
||||
Matrix m = new Matrix();
|
||||
m.translate(-rect.Xmin, -rect.Ymin);
|
||||
Matrix m = Matrix.getTranslateInstance(-rect.Xmin, -rect.Ymin);
|
||||
m.scale(scale);
|
||||
|
||||
Point p = lastMouseEvent == null ? null : lastMouseEvent.getPoint();
|
||||
@@ -736,8 +734,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
SerializableImage image = new SerializableImage((int) (width / SWF.unitDivisor) + 1,
|
||||
(int) (height / SWF.unitDivisor) + 1, SerializableImage.TYPE_INT_ARGB);
|
||||
image.fillTransparent();
|
||||
Matrix m = new Matrix();
|
||||
m.translate(-rect.Xmin * zoomDouble, -rect.Ymin * zoomDouble);
|
||||
Matrix m = Matrix.getTranslateInstance(-rect.Xmin * zoomDouble, -rect.Ymin * zoomDouble);
|
||||
m.scale(zoomDouble);
|
||||
textTag.toImage(0, 0, 0, new RenderContext(), image, false, m, m, m, new ConstantColorColorTransform(0xFFC0C0C0));
|
||||
|
||||
@@ -864,7 +861,7 @@ public final class ImagePanel extends JPanel implements MediaDisplay {
|
||||
Matrix m = new Matrix();
|
||||
m.translate(-rect.Xmin * zoom, -rect.Ymin * zoom);
|
||||
m.scale(zoom);
|
||||
timeline.toImage(frame, time, renderContext, image, false, m, new Matrix(), m, null);
|
||||
timeline.toImage(frame, time, renderContext, image, false, m, m, m, null);
|
||||
|
||||
Graphics2D gg = (Graphics2D) image.getGraphics();
|
||||
gg.setStroke(new BasicStroke(3));
|
||||
|
||||
Reference in New Issue
Block a user