From ce711ae9a8eb1d478b54fee78cf272b3c7a82d90 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Tue, 4 Nov 2014 21:14:58 +0100 Subject: [PATCH] faster timeline construction --- .../decompiler/flash/timeline/Timeline.java | 17 +++++++++++------ .../flash/gui/tagtree/TagTreeModel.java | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java index 0873f514f..10547f5df 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java @@ -73,6 +73,7 @@ public class Timeline { private void ensureInitialized() { if (!initialized) { initialize(); + initialized = true; } } @@ -246,8 +247,11 @@ public class Timeline { frames.add(frame); } - detectTweens(); - for (int d = 1; d <= getMaxDepthInternal(); d++) { + // todo: enable again after TweenDetector.detectRanges implemented + //detectTweens(); + + int maxDepth = getMaxDepthInternal(); + for (int d = 1; d <= maxDepth; d++) { for (int f = frames.size() - 1; f >= 0; f--) { if (frames.get(f).layers.get(d) != null) { depthMaxFrame.put(d, f + 1); @@ -266,7 +270,8 @@ public class Timeline { } private void detectTweens() { - for (int d = 1; d <= getMaxDepthInternal(); d++) { + int maxDepth = getMaxDepthInternal(); + for (int d = 1; d <= maxDepth; d++) { int characterId = -1; int len = 0; for (int f = 0; f <= frames.size(); f++) { @@ -282,10 +287,10 @@ public class Timeline { } List ranges = TweenDetector.detectRanges(matrices); for (TweenRange r : ranges) { - System.out.println("" + r); for (int t = r.startPosition; t <= r.endPosition; t++) { - frames.get(f - len + t).layers.get(d).motionTween = true; - frames.get(f - len + t).layers.get(d).key = false; + DepthState layer = frames.get(f - len + t).layers.get(d); + layer.motionTween = true; + layer.key = false; } frames.get(r.startPosition).layers.get(d).key = true; } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java index 4e4e9f126..0bb17c8cd 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java @@ -161,7 +161,8 @@ public class TagTreeModel implements TreeModel { } Timeline timeline = swf.getTimeline(); - for (int i = 0; i < timeline.getFrameCount(); i++) { + int frameCount = timeline.getFrameCount(); + for (int i = 0; i < frameCount; i++) { frames.add(timeline.getFrames().get(i)); }