From 11d0b583afd19e5b2755c0cfc466d3aebcc582d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Tue, 10 Sep 2013 22:33:03 +0200 Subject: [PATCH] improved internal viewer timeline --- .../jpexs/decompiler/flash/gui/ImagePanel.java | 16 +++++++++++++--- .../flash/gui/player/PlayerControls.java | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index fd41b0509..59fdf9027 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -46,6 +46,7 @@ public class ImagePanel extends JPanel implements ActionListener, FlashDisplay { private SWF swf; private HashMap characters; private int frameRate; + private boolean loaded; @Override public void setBackground(Color bg) { @@ -97,15 +98,18 @@ public class ImagePanel extends JPanel implements ActionListener, FlashDisplay { if (timer != null) { timer.cancel(); } + drawable = null; + loaded = true; ImageIcon icon = new ImageIcon(data); label.setIcon(icon); } public void setDrawable(final DrawableTag drawable, final SWF swf, final HashMap characters, int frameRate) { - pause(); + pause(); this.drawable = drawable; this.swf = swf; this.characters = characters; + loaded = true; if (drawable.getNumFrames() == 0) { label.setIcon(null); @@ -124,6 +128,8 @@ public class ImagePanel extends JPanel implements ActionListener, FlashDisplay { if (timer != null) { timer.cancel(); } + drawable = null; + loaded = true; ImageIcon icon = new ImageIcon(image); label.setIcon(icon); } @@ -133,7 +139,11 @@ public class ImagePanel extends JPanel implements ActionListener, FlashDisplay { if (drawable == null) { return 0; } - return percent * drawable.getNumFrames() / 100; + int ret=(int)Math.ceil(percent * drawable.getNumFrames() / 100.0); + if(ret==0){ + ret = 1; + } + return ret; } @Override @@ -218,6 +228,6 @@ public class ImagePanel extends JPanel implements ActionListener, FlashDisplay { @Override public boolean isLoaded() { - return drawable != null; + return loaded; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/player/PlayerControls.java b/trunk/src/com/jpexs/decompiler/flash/gui/player/PlayerControls.java index c7a3d1b3b..24f3f682e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/player/PlayerControls.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/player/PlayerControls.java @@ -81,7 +81,7 @@ public class PlayerControls extends JPanel implements ActionListener { progress.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { - int frame = e.getX() * display.getTotalFrames() / progress.getWidth(); + int frame = 1+(int)Math.floor(e.getX() * display.getTotalFrames() / (double)progress.getWidth()); boolean p = paused; display.gotoFrame(frame); if (!p) { @@ -132,7 +132,7 @@ public class PlayerControls extends JPanel implements ActionListener { progress.setIndeterminate(true); } else { progress.setMaximum(totalFrames); - progress.setMinimum(0); + progress.setMinimum(1); progress.setValue(currentFrame); progress.setIndeterminate(false); }