From 2bec5a83f6b3af0ae479bf8cf136be1d603e611c Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Sat, 30 Jul 2016 13:04:55 +1000 Subject: [PATCH] replaced retina test with one that works --- .../diskbrowser/gui/DiskLayoutImage.java | 20 +++++++++----- .../diskbrowser/gui/DiskLayoutPanel.java | 20 +++++++------- .../diskbrowser/gui/DiskLegendPanel.java | 24 ++++++++++++----- .../bytezone/diskbrowser/gui/MenuHandler.java | 4 +-- .../diskbrowser/gui/RetinaAction.java | 27 ------------------- .../diskbrowser/utilities/Utility.java | 9 +++++++ .../bytezone/diskbrowser/visicalc/Cell.java | 2 +- 7 files changed, 52 insertions(+), 54 deletions(-) delete mode 100644 src/com/bytezone/diskbrowser/gui/RetinaAction.java diff --git a/src/com/bytezone/diskbrowser/gui/DiskLayoutImage.java b/src/com/bytezone/diskbrowser/gui/DiskLayoutImage.java index e284a46..876b321 100644 --- a/src/com/bytezone/diskbrowser/gui/DiskLayoutImage.java +++ b/src/com/bytezone/diskbrowser/gui/DiskLayoutImage.java @@ -6,6 +6,7 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.geom.AffineTransform; import java.util.List; import javax.swing.JPanel; @@ -31,6 +32,7 @@ class DiskLayoutImage extends JPanel implements Scrollable, RedoListener private boolean showFreeSectors; private final DiskLayoutSelection selectionHandler = new DiskLayoutSelection (); private boolean redo; + private boolean retinaTest; // set defaults (used until a real disk is set) private int bw = 30; @@ -38,7 +40,7 @@ class DiskLayoutImage extends JPanel implements Scrollable, RedoListener private int gw = 8; private int gh = 35; - private boolean retina; + // private boolean retina; public DiskLayoutImage () { @@ -64,6 +66,10 @@ class DiskLayoutImage extends JPanel implements Scrollable, RedoListener setPreferredSize (new Dimension (gw * bw + 1, gh * bh + 1)); selectionHandler.setSelection (null); + Graphics2D g = (Graphics2D) this.getGraphics (); + retinaTest = g.getFontRenderContext ().getTransform () + .equals (AffineTransform.getScaleInstance (2.0, 2.0)); + repaint (); } @@ -78,11 +84,11 @@ class DiskLayoutImage extends JPanel implements Scrollable, RedoListener repaint (); } - public void setRetina (boolean value) - { - retina = value; - repaint (); - } + // public void setRetina (boolean value) + // { + // retina = value; + // repaint (); + // } void setSelection (List sectors) { @@ -155,7 +161,7 @@ class DiskLayoutImage extends JPanel implements Scrollable, RedoListener g.setColor (type.colour); // this is weird, the retina OSX screen needs the second fillRect // see also DiskLegendPanel.paint() - if (retina) + if (retinaTest) g.fillRect (rect.x + 1, rect.y + 1, rect.width - 2, rect.height - 2); else g.fillRect (rect.x + 2, rect.y + 2, rect.width - 3, rect.height - 3); diff --git a/src/com/bytezone/diskbrowser/gui/DiskLayoutPanel.java b/src/com/bytezone/diskbrowser/gui/DiskLayoutPanel.java index ea5d915..04493ef 100644 --- a/src/com/bytezone/diskbrowser/gui/DiskLayoutPanel.java +++ b/src/com/bytezone/diskbrowser/gui/DiskLayoutPanel.java @@ -31,7 +31,7 @@ class DiskLayoutPanel extends JPanel //, FontChangeListener { private static final int SIZE = 15; // basic unit of a display block - private static final String PREFS_RETINA = "retina"; + // private static final String PREFS_RETINA = "retina"; private final Preferences prefs; private final MenuHandler mh; @@ -73,7 +73,7 @@ class DiskLayoutPanel extends JPanel add (sp, BorderLayout.CENTER); add (legendPanel, BorderLayout.SOUTH); - mh.retinaItem.setAction (new RetinaAction (this)); + // mh.retinaItem.setAction (new RetinaAction (this)); } // public DiskLayoutPanel (FormattedDisk disk) @@ -122,11 +122,11 @@ class DiskLayoutPanel extends JPanel repaint (); } - public void setRetina (boolean value) - { - image.setRetina (value); - legendPanel.setRetina (value); - } + // public void setRetina (boolean value) + // { + // image.setRetina (value); + // legendPanel.setRetina (value); + // } public void setHex (boolean hex) { @@ -257,14 +257,14 @@ class DiskLayoutPanel extends JPanel @Override public void quit (Preferences arg0) { - prefs.putBoolean (PREFS_RETINA, mh.retinaItem.isSelected ()); + // prefs.putBoolean (PREFS_RETINA, mh.retinaItem.isSelected ()); } @Override public void restore (Preferences arg0) { - mh.retinaItem.setSelected (prefs.getBoolean (PREFS_RETINA, false)); - setRetina (mh.retinaItem.isSelected ()); + // mh.retinaItem.setSelected (prefs.getBoolean (PREFS_RETINA, false)); + // setRetina (mh.retinaItem.isSelected ()); } // @Override diff --git a/src/com/bytezone/diskbrowser/gui/DiskLegendPanel.java b/src/com/bytezone/diskbrowser/gui/DiskLegendPanel.java index 9fdcfa5..6a7f9c8 100644 --- a/src/com/bytezone/diskbrowser/gui/DiskLegendPanel.java +++ b/src/com/bytezone/diskbrowser/gui/DiskLegendPanel.java @@ -4,6 +4,8 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.geom.AffineTransform; import javax.swing.JPanel; @@ -13,6 +15,7 @@ import com.bytezone.common.Platform.FontType; import com.bytezone.diskbrowser.disk.FormattedDisk; import com.bytezone.diskbrowser.disk.SectorType; import com.bytezone.diskbrowser.gui.DiskLayoutPanel.LayoutDetails; +import com.bytezone.diskbrowser.utilities.Utility; class DiskLegendPanel extends JPanel { @@ -22,7 +25,8 @@ class DiskLegendPanel extends JPanel private FormattedDisk disk; private LayoutDetails layoutDetails; private final Font font; - private boolean retina; + // private boolean retina; + private boolean retinaTest; public DiskLegendPanel () { @@ -34,14 +38,19 @@ class DiskLegendPanel extends JPanel { this.disk = disk; layoutDetails = details; + + Graphics2D g = (Graphics2D) this.getGraphics (); + retinaTest = g.getFontRenderContext ().getTransform () + .equals (AffineTransform.getScaleInstance (2.0, 2.0)); + repaint (); } - public void setRetina (boolean value) - { - retina = value; - repaint (); - } + // public void setRetina (boolean value) + // { + // retina = value; + // repaint (); + // } @Override public Dimension getPreferredSize () @@ -61,6 +70,7 @@ class DiskLegendPanel extends JPanel int count = 0; int lineHeight = 20; + System.out.println (Utility.test ((Graphics2D) g)); for (SectorType type : disk.getSectorTypeList ()) { @@ -73,7 +83,7 @@ class DiskLegendPanel extends JPanel // draw the colour g.setColor (type.colour); - if (retina) + if (retinaTest) g.fillRect (x + 1, y + 1, layoutDetails.block.width - 2, layoutDetails.block.height - 2); else diff --git a/src/com/bytezone/diskbrowser/gui/MenuHandler.java b/src/com/bytezone/diskbrowser/gui/MenuHandler.java index 36f4b55..8c64c05 100755 --- a/src/com/bytezone/diskbrowser/gui/MenuHandler.java +++ b/src/com/bytezone/diskbrowser/gui/MenuHandler.java @@ -64,7 +64,7 @@ public class MenuHandler JMenuItem colourQuirksItem = new JCheckBoxMenuItem ("Colour quirks"); JMenuItem monochromeItem = new JCheckBoxMenuItem ("Monochrome"); JMenuItem debuggingItem = new JCheckBoxMenuItem ("Debugging"); - JMenuItem retinaItem = new JCheckBoxMenuItem ("Retina display"); + // JMenuItem retinaItem = new JCheckBoxMenuItem ("Retina display"); public MenuHandler (Preferences prefs) { @@ -123,7 +123,7 @@ public class MenuHandler formatMenu.add (colourQuirksItem); formatMenu.add (monochromeItem); formatMenu.add (debuggingItem); - formatMenu.add (retinaItem); + // formatMenu.add (retinaItem); helpMenu.add (new JMenuItem (new EnvironmentAction ())); diff --git a/src/com/bytezone/diskbrowser/gui/RetinaAction.java b/src/com/bytezone/diskbrowser/gui/RetinaAction.java deleted file mode 100644 index 6584efd..0000000 --- a/src/com/bytezone/diskbrowser/gui/RetinaAction.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.bytezone.diskbrowser.gui; - -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JMenuItem; - -public class RetinaAction extends AbstractAction -{ - private final DiskLayoutPanel owner; - - public RetinaAction (DiskLayoutPanel owner) - { - super ("Retina display"); - putValue (Action.SHORT_DESCRIPTION, "use hi resolution graphics"); - // putValue (Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke ("alt G")); - // putValue (Action.MNEMONIC_KEY, KeyEvent.VK_G); - this.owner = owner; - } - - @Override - public void actionPerformed (ActionEvent e) - { - owner.setRetina (((JMenuItem) e.getSource ()).isSelected ()); - } -} \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/utilities/Utility.java b/src/com/bytezone/diskbrowser/utilities/Utility.java index c59a655..f38cb47 100644 --- a/src/com/bytezone/diskbrowser/utilities/Utility.java +++ b/src/com/bytezone/diskbrowser/utilities/Utility.java @@ -1,9 +1,12 @@ package com.bytezone.diskbrowser.utilities; +import java.awt.Graphics2D; import java.awt.Toolkit; +import java.awt.geom.AffineTransform; public class Utility { + // not used - it doesn't work with Oracle's JDK public static boolean hasRetinaDisplay () { Object obj = @@ -16,4 +19,10 @@ public class Utility } return false; } + + public static boolean test (Graphics2D g) + { + return g.getFontRenderContext ().getTransform () + .equals (AffineTransform.getScaleInstance (2.0, 2.0)); + } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Cell.java b/src/com/bytezone/diskbrowser/visicalc/Cell.java index 0c5a899..79d4e47 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Cell.java +++ b/src/com/bytezone/diskbrowser/visicalc/Cell.java @@ -117,7 +117,7 @@ class Cell implements Comparable, Value switch (type) { case LABEL: - return justify (label, colWidth, format); + return justify (label, colWidth, cellFormat); case REPEATING_CHARACTER: return justify (repeat, colWidth, format);