From 186232518912a1caf5aadb303e693b16b48fb8a2 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 17 Aug 2022 01:47:17 +0200 Subject: [PATCH] Scale down button icon size --- core/resources/pix/icons/sim-plot.png | Bin 1745 -> 1945 bytes .../openrocket/gui/main/SimulationPanel.java | 2 - .../FlightConfigurationPanel.java | 1 - .../src/net/sf/openrocket/gui/util/Icons.java | 32 ++++++++++++++++ .../sf/openrocket/gui/widgets/IconButton.java | 35 +++++++++++++++++- 5 files changed, 66 insertions(+), 4 deletions(-) diff --git a/core/resources/pix/icons/sim-plot.png b/core/resources/pix/icons/sim-plot.png index 32f27ca7b4890bd32c584e02b4e58a830ce500f6..268f75a7bfc127c05c0145afabef4ccb8d0ff83d 100644 GIT binary patch delta 407 zcmcb}JClEc1ryuEjaJ=ERu;O3<{<`#RwkxarsmoPMpgy}N(vRZ1y;VPC5b7CC5bMH zC8@SbMg~Skx&|nUC;w*(P%%qRGP6vxNYOPlH%!$vNis^)O)^LZ63G^ZX{pJH2B}6y zn~RxEm?qy~G4miswUR<{iECMjRe45g9#(sSj+{J`#d`8Y*8KWYZ(m+vU|?A1>Eak- z(K~n2M!`b{Jg)ZTIgXiP2~5*YvMu8>4cXA>p1|opfm6fy`0@^(ZJkpr{`>j*y}ud8 zGHF6ZPA7*AL*7&si>X?Lir>72O!bc3YhCee29xl*v#T|Y_g5YT)dBJTDndRxo}A+}Gw wYyUZA|Eyt~E~>uVX32lfNoS|7^B0o8le{qNQ2T#dyRf09Jq~#Xg!S`ERrhiiARPK+_%S)gtrcLB^+DVzD zOw$daGeAu+gPU&97H~zd2V4;(WdJ2*CFK}2t$npf3r>ascy{5}uUIU80xHf6+A=w^ Q-~a#s07*qoM6N<$g12yPlK=n! diff --git a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java index cda01919d..83fc2824e 100644 --- a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -10,7 +10,6 @@ import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -72,7 +71,6 @@ import net.sf.openrocket.startup.Application; import net.sf.openrocket.startup.Preferences; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.AlphanumComparator; -import net.sf.openrocket.gui.widgets.SelectColorButton; @SuppressWarnings("serial") public class SimulationPanel extends JPanel { diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java index 8da46e31b..e33335488 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java @@ -36,7 +36,6 @@ import net.sf.openrocket.rocketvisitors.ListComponents; import net.sf.openrocket.rocketvisitors.ListMotorMounts; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.StateChangeListener; -import net.sf.openrocket.gui.widgets.SelectColorButton; @SuppressWarnings("serial") public class FlightConfigurationPanel extends JPanel implements StateChangeListener { diff --git a/swing/src/net/sf/openrocket/gui/util/Icons.java b/swing/src/net/sf/openrocket/gui/util/Icons.java index fb315d0df..cf91c65b0 100644 --- a/swing/src/net/sf/openrocket/gui/util/Icons.java +++ b/swing/src/net/sf/openrocket/gui/util/Icons.java @@ -7,6 +7,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Image; import java.net.URL; import java.util.Collections; import java.util.HashMap; @@ -123,4 +126,33 @@ public class Icons { } return new ImageIcon(url, name); } + + /** + * Scales an ImageIcon to the specified scale. + * @param icon icon to scale + * @param scale the scale to scale to (1 = no scale, < 1 = smaller, > 1 = bigger) + * @return scaled down icon. If is not an ImageIcon, the original icon is returned. + */ + public static Icon getScaledIcon(Icon icon, final double scale) { + if (!(icon instanceof ImageIcon)) { + return icon; + } + final Image image = ((ImageIcon) icon).getImage(); + return new ImageIcon(image) { + @Override + public int getIconWidth() { + return (int)(image.getWidth(null) * scale); + } + + @Override + public int getIconHeight() { + return (int)(image.getHeight(null) * scale); + } + + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + g.drawImage(image, x, y, getIconWidth(), getIconHeight(), c); + } + }; + } } diff --git a/swing/src/net/sf/openrocket/gui/widgets/IconButton.java b/swing/src/net/sf/openrocket/gui/widgets/IconButton.java index 96a7d9f41..a48da582b 100644 --- a/swing/src/net/sf/openrocket/gui/widgets/IconButton.java +++ b/swing/src/net/sf/openrocket/gui/widgets/IconButton.java @@ -1,14 +1,18 @@ package net.sf.openrocket.gui.widgets; +import net.sf.openrocket.gui.util.Icons; + import javax.swing.Action; import javax.swing.Icon; /** * Button specifically for displaying an icon. + * + * @author Sibo Van Gool */ public class IconButton extends SelectColorButton { private static final int ICON_GAP = 10; - public static final double ICON_SCALE = 0.8; + private static final double ICON_SCALE = 0.9; public IconButton() { setIconTextGap(ICON_GAP); @@ -34,4 +38,33 @@ public class IconButton extends SelectColorButton { setIconTextGap(ICON_GAP); } + @Override + public Icon getIcon() { + return Icons.getScaledIcon(super.getIcon(), IconButton.ICON_SCALE); + } + + @Override + public Icon getSelectedIcon() { + return Icons.getScaledIcon(super.getSelectedIcon(), IconButton.ICON_SCALE); + } + + @Override + public Icon getDisabledIcon() { + return Icons.getScaledIcon(super.getDisabledIcon(), IconButton.ICON_SCALE); + } + + @Override + public Icon getDisabledSelectedIcon() { + return Icons.getScaledIcon(super.getDisabledSelectedIcon(), IconButton.ICON_SCALE); + } + + @Override + public Icon getRolloverIcon() { + return Icons.getScaledIcon(super.getRolloverIcon(), IconButton.ICON_SCALE); + } + + @Override + public Icon getRolloverSelectedIcon() { + return Icons.getScaledIcon(super.getRolloverSelectedIcon(), IconButton.ICON_SCALE); + } }