[Pixelle-commit] SF.net SVN: pixelle: [110] trunk/pixelle/src/com/mebigfatguy/pixelle/ PixelleFrame
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-06-28 23:17:58
|
Revision: 110
http://pixelle.svn.sourceforge.net/pixelle/?rev=110&view=rev
Author: dbrosius
Date: 2008-06-28 16:18:02 -0700 (Sat, 28 Jun 2008)
Log Message:
-----------
finally! fix up in frame redraw (fit to window)
Modified Paths:
--------------
trunk/pixelle/src/com/mebigfatguy/pixelle/PixelleFrame.java
Modified: trunk/pixelle/src/com/mebigfatguy/pixelle/PixelleFrame.java
===================================================================
--- trunk/pixelle/src/com/mebigfatguy/pixelle/PixelleFrame.java 2008-06-28 22:59:46 UTC (rev 109)
+++ trunk/pixelle/src/com/mebigfatguy/pixelle/PixelleFrame.java 2008-06-28 23:18:02 UTC (rev 110)
@@ -26,7 +26,6 @@
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
-import java.util.ResourceBundle;
import javax.imageio.ImageIO;
import javax.swing.ButtonGroup;
@@ -180,8 +179,6 @@
setJMenuBar(mb);
- FrameMgr.getInstance().add(this);
-
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
@@ -191,6 +188,8 @@
setBounds(GuiUtils.getScreenBounds());
setZoom(ZoomLevel.FitToWindow);
+ FrameMgr.getInstance().add(this);
+
}
public boolean createNewWindow() {
@@ -248,53 +247,48 @@
}
public final void setZoom(final ZoomLevel zoom) {
- if (image == null)
- return;
-
- double zoomFactor = zoom.getZoom();
- final int h = (int)(image.getHeight() * zoomFactor);
- final int w = (int)(image.getWidth() * zoomFactor);
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- int width = w;
- int height = h;
- if ((h == 0) || (w == 0)) {
- Container cp = PixelleFrame.this.getContentPane();
- height = cp.getHeight();
- width = cp.getWidth();
- int imageH = image.getHeight();
- int imageW = image.getWidth();
- double divH = (double)height / (double)imageH;
- double divW = (double)width / (double)imageW;
- double div = Math.min(divH, divW);
- height = (int)(div * imageH);
- width = (int)(div * imageW);
- }
- panel.setSize(width, height);
- panel.setImageDim(new Dimension(width, height));
- invalidate();
- validate();
- repaint();
- }
- });
+ panel.setZoom(zoom);
+ panel.invalidate();
+ panel.validate();
+ panel.repaint();
}
public class ImagePanel extends JPanel {
private static final long serialVersionUID = -1572146409734928935L;
- Dimension dim = new Dimension(10, 10);
+ private ZoomLevel zoom;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
+
if (image != null) {
+ Dimension dim = getDimension();
image.draw(g, 0, 0, dim.width, dim.height);
}
}
-
- public void setImageDim(Dimension d) {
- dim = d;
+
+ public void setZoom(ZoomLevel zoomLevel) {
+ zoom = zoomLevel;
}
+ private Dimension getDimension() {
+ if (zoom == ZoomLevel.FitToWindow) {
+ Container cp = PixelleFrame.this.getContentPane();
+ int cHeight = cp.getHeight();
+ int cWidth = cp.getWidth();
+ int iHeight = image.getHeight();
+ int iWidth = image.getWidth();
+ double divH = (double)cHeight / (double)iHeight;
+ double divW = (double)cWidth / (double)iWidth;
+ double div = Math.min(divH, divW);
+ return new Dimension((int)(div * iHeight), (int)(div * iWidth));
+ }
+ else {
+ double zoomFactor = zoom.getZoom();
+ return new Dimension((int)(image.getHeight() * zoomFactor), (int)(image.getWidth() * zoomFactor));
+ }
+ }
+
@Override
public Dimension getPreferredSize() {
return getSize();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|