diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java b/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java index 1ff369bdb..5a69db3bc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/Graph.java @@ -45,6 +45,9 @@ public class Graph { } public void init() { + if(heads!=null){ + return; + } heads = makeGraph(code, new ArrayList(), alternateEntries); int time = 1; List ordered = new ArrayList<>(); diff --git a/trunk/src/com/jpexs/decompiler/flash/graph/GraphPart.java b/trunk/src/com/jpexs/decompiler/flash/graph/GraphPart.java index 280b111e9..d3ce6d45d 100644 --- a/trunk/src/com/jpexs/decompiler/flash/graph/GraphPart.java +++ b/trunk/src/com/jpexs/decompiler/flash/graph/GraphPart.java @@ -190,7 +190,7 @@ public class GraphPart { if (end < start) { return "<-> " + (start + 1) + "-" + (end + 1); } - return "" + (start + 1) + "-" + (end + 1) + (instanceCount > 1 ? "(" + instanceCount + " links)" : "") + " p" + path; + return "" + (start + 1) + "-" + (end + 1) + (instanceCount > 1 ? "(" + instanceCount + " links)" : "");// + " p" + path; } public boolean containsIP(int ip) { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/GraphFrame.java b/trunk/src/com/jpexs/decompiler/flash/gui/GraphFrame.java index d4759af64..55bfd25a4 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/GraphFrame.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/GraphFrame.java @@ -19,6 +19,11 @@ package com.jpexs.decompiler.flash.gui; import com.jpexs.decompiler.flash.graph.Graph; import com.jpexs.decompiler.flash.graph.GraphPart; import java.awt.*; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.WindowAdapter; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; import java.util.HashMap; @@ -48,6 +53,7 @@ public class GraphFrame extends JFrame { private GraphPart head; public GraphPanel(Graph graph) { + graph.init(); size = getPartPositions(head = graph.heads.get(0), SPACE_VERTICAL + SPACE_VERTICAL + BLOCK_HEIGHT / 2, getPartWidth(graph.heads.get(0), new HashSet()) * (BLOCK_WIDTH + SPACE_HORIZONTAL) / 2 - SPACE_HORIZONTAL, partPos, true); backLinksLeft = 1; backLinksRight = 1; @@ -68,6 +74,8 @@ public class GraphFrame extends JFrame { setPreferredSize(new Dimension(size.x, size.y)); } + + @Override protected void paintComponent(Graphics g) { super.paintComponent(g); @@ -242,7 +250,7 @@ public class GraphFrame extends JFrame { gp = new GraphPanel(graph); setTitle("Graph " + name); cnt.add(new JScrollPane(gp)); - + View.setWindowIcon(this); } @@ -281,16 +289,17 @@ public class GraphFrame extends JFrame { arrowHead.addPoint(3, -8); Line2D.Double line = new Line2D.Double(x1, y1, x2, y2); AffineTransform tx = new AffineTransform(); - tx.setToIdentity(); + tx.setToIdentity(); double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1); tx.translate(line.x2, line.y2); tx.rotate((angle - Math.PI / 2d)); - Graphics2D g2d = (Graphics2D) g; + Graphics2D g2d = (Graphics2D) g; + AffineTransform oldTransform = g2d.getTransform(); g2d.draw(line); - Graphics2D g2 = (Graphics2D) g2d.create(); - g2.setTransform(tx); - g2.fill(arrowHead); - g2.dispose(); + tx.preConcatenate(oldTransform); + g2d.setTransform(tx); + g2d.fill(arrowHead); + g2d.setTransform(oldTransform); } }