From a8ac2a9f687c7844daeeaf25ec41e1137f36df39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Wed, 12 Mar 2014 19:24:57 +0100 Subject: [PATCH] Issue #533 Object under cursor fix --- trunk/src/com/jpexs/decompiler/flash/SWF.java | 14 ++++++++++++++ .../com/jpexs/decompiler/flash/gui/ImagePanel.java | 10 ++++++++++ .../com/jpexs/decompiler/flash/timeline/Frame.java | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/SWF.java b/trunk/src/com/jpexs/decompiler/flash/SWF.java index 76b8f044b..b02e7c783 100644 --- a/trunk/src/com/jpexs/decompiler/flash/SWF.java +++ b/trunk/src/com/jpexs/decompiler/flash/SWF.java @@ -117,6 +117,7 @@ import com.jpexs.decompiler.flash.types.MATRIX; import com.jpexs.decompiler.flash.types.RECT; import com.jpexs.decompiler.flash.types.filters.BlendComposite; import com.jpexs.decompiler.flash.types.filters.FILTER; +import com.jpexs.decompiler.flash.types.shaperecords.SHAPERECORD; import com.jpexs.decompiler.flash.types.sound.SoundFormat; import com.jpexs.decompiler.flash.xfl.FLAVersion; import com.jpexs.decompiler.flash.xfl.XFLConverter; @@ -132,7 +133,9 @@ import com.jpexs.helpers.ProgressListener; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; import java.awt.AlphaComposite; +import java.awt.BasicStroke; import java.awt.Color; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; @@ -2347,6 +2350,14 @@ public final class SWF implements TreeItem, Timelined { drawMatrix.translate(rect.xMin, rect.yMin); drawable.toImage(dframe, layer.ratio, stateUnderCursor, mouseButton, img, m, clrTrans); + //if(stateUnderCursor == layer){ + /* if(true){ + Graphics2D gg = (Graphics2D)img.getGraphics(); + gg.setStroke(new BasicStroke(3)); + gg.setPaint(Color.red); + gg.setTransform(AffineTransform.getTranslateInstance(0, 0)); + gg.draw(SHAPERECORD.twipToPixelShape(drawable.getOutline(frame, layer.ratio, stateUnderCursor, mouseButton, m))); + }*/ } else if (drawable instanceof FontTag) { // only DefineFont tags FontTag fontTag = (FontTag) drawable; @@ -2459,6 +2470,9 @@ public final class SWF implements TreeItem, Timelined { g.setComposite(AlphaComposite.Dst); } } + + + g.setTransform(AffineTransform.getScaleInstance(1, 1)); } diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index f6983922a..b024726ea 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -30,8 +30,10 @@ import com.jpexs.decompiler.flash.timeline.Timeline; import com.jpexs.decompiler.flash.timeline.Timelined; import com.jpexs.decompiler.flash.types.ColorTransform; import com.jpexs.decompiler.flash.types.RECT; +import com.jpexs.decompiler.flash.types.shaperecords.SHAPERECORD; import com.jpexs.helpers.SerializableImage; import java.awt.AlphaComposite; +import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; @@ -48,6 +50,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionListener; +import java.awt.geom.AffineTransform; import java.util.ArrayList; import java.util.List; import java.util.Timer; @@ -369,6 +372,13 @@ public final class ImagePanel extends JPanel implements ActionListener, MediaDis m.translate(-rect.Xmin, -rect.Ymin); m.scale(scale); drawable.getTimeline().toImage(frame, frame, stateUnderCursor, mouseButton, image, m, new ColorTransform()); + + /* Graphics2D gg = (Graphics2D)image.getGraphics(); + gg.setStroke(new BasicStroke(3)); + gg.setPaint(Color.green); + gg.setTransform(AffineTransform.getTranslateInstance(0, 0)); + gg.draw(SHAPERECORD.twipToPixelShape(drawable.getTimeline().getOutline(frame, frame, stateUnderCursor, mouseButton, m))); + */ img = image; } else if (drawable instanceof FontTag) { // only DefineFont tags diff --git a/trunk/src/com/jpexs/decompiler/flash/timeline/Frame.java b/trunk/src/com/jpexs/decompiler/flash/timeline/Frame.java index 3582d4808..681d0cd9a 100644 --- a/trunk/src/com/jpexs/decompiler/flash/timeline/Frame.java +++ b/trunk/src/com/jpexs/decompiler/flash/timeline/Frame.java @@ -89,7 +89,7 @@ public class Frame { } CharacterTag c = timeline.swf.characters.get(ds.characterId); if (c instanceof DrawableTag) { - Matrix m = new Matrix(ds.matrix).concatenate(transformation); + Matrix m = new Matrix(ds.matrix).preConcatenate(transformation); int frame = ds.time % ((DrawableTag) c).getNumFrames(); if (c instanceof ButtonTag) { frame = ButtonTag.FRAME_HITTEST;