diff --git a/MekHQ/src/mekhq/gui/view/PersonViewPanel.java b/MekHQ/src/mekhq/gui/view/PersonViewPanel.java index c073ddb140..865eb4bc47 100644 --- a/MekHQ/src/mekhq/gui/view/PersonViewPanel.java +++ b/MekHQ/src/mekhq/gui/view/PersonViewPanel.java @@ -66,6 +66,7 @@ import megamek.common.icons.Portrait; import megamek.common.options.IOption; import megamek.logging.MMLogger; +import megamek.utilities.ImageUtilities; import mekhq.MHQStaticDirectoryManager; import mekhq.MekHQ; import mekhq.Utilities; @@ -103,7 +104,7 @@ public class PersonViewPanel extends JScrollablePanel { private static final MMLogger logger = MMLogger.create(PersonViewPanel.class); - private static final int MAX_NUMBER_OF_RIBBON_AWARDS_PER_ROW = 4; + private static final int MAX_NUMBER_OF_RIBBON_AWARDS_PER_ROW = 3; private final CampaignGUI gui; @@ -407,13 +408,18 @@ private Box drawRibbons() { int awardTierCount = getAwardTierCount(award, maximumTiers); String ribbonFileName = award.getRibbonFileName(awardTierCount); + String directory = award.getSet() + "/ribbons/"; - ribbon = (Image) MHQStaticDirectoryManager.getAwardIcons() - .getItem(award.getSet() + "/ribbons/", ribbonFileName); + ribbon = (Image) MHQStaticDirectoryManager.getAwardIcons().getItem(directory, ribbonFileName); if (ribbon == null) { + logger.warn("No ribbon icon found for award: {}", directory + ribbonFileName); continue; } - ribbon = ribbon.getScaledInstance(25, 8, Image.SCALE_DEFAULT); + + ImageIcon ribbonAsImageIcon = new ImageIcon(ribbon); + ribbonAsImageIcon = ImageUtilities.scaleImageIcon(ribbonAsImageIcon, 8, false); + ribbon = ribbonAsImageIcon.getImage(); + ribbonLabel.setIcon(new ImageIcon(ribbon)); ribbonLabel.setToolTipText(award.getTooltip(campaign.getCampaignOptions(), person)); rowRibbonsBox.add(ribbonLabel, 0); @@ -480,23 +486,17 @@ private JPanel drawMedals() { int awardTierCount = getAwardTierCount(award, maximumTiers); String medalFileName = award.getMedalFileName(awardTierCount); + String directory = award.getSet() + "/medals/"; - medal = (Image) MHQStaticDirectoryManager.getAwardIcons() - .getItem(award.getSet() + "/medals/", medalFileName); + medal = (Image) MHQStaticDirectoryManager.getAwardIcons().getItem(directory, medalFileName); if (medal == null) { + logger.warn("No medal icon found for award: {}", directory + medalFileName); continue; } - int width = medal.getWidth(null); - int height = medal.getHeight(null); - - if (width == height) { - medal = medal.getScaledInstance(40, 40, Image.SCALE_FAST); - } else if (width < height) { - medal = medal.getScaledInstance(20, 40, Image.SCALE_FAST); - } else { - medal = medal.getScaledInstance(40, 20, Image.SCALE_FAST); - } + ImageIcon medalAsImageIcon = new ImageIcon(medal); + medalAsImageIcon = ImageUtilities.scaleImageIcon(medalAsImageIcon, 40, false); + medal = medalAsImageIcon.getImage(); medalLabel.setIcon(new ImageIcon(medal)); medalLabel.setToolTipText(award.getTooltip(campaign.getCampaignOptions(), person)); @@ -528,27 +528,21 @@ private JPanel drawMiscAwards() { Image misc; try { - int maximumTiers = award.getNumberOfMedalFiles(); + int maximumTiers = award.getNumberOfMiscFiles(); int awardTierCount = getAwardTierCount(award, maximumTiers); String miscFileName = award.getMiscFileName(awardTierCount); + String directory = award.getSet() + "/misc/"; - misc = (Image) MHQStaticDirectoryManager.getAwardIcons() - .getItem(award.getSet() + "/misc/", miscFileName); + misc = (Image) MHQStaticDirectoryManager.getAwardIcons().getItem(directory, miscFileName); if (misc == null) { + logger.warn("No misc icon found for award: {}", directory + miscFileName); continue; } - int width = misc.getWidth(null); - int height = misc.getHeight(null); - - if (width == height) { - misc = misc.getScaledInstance(40, 40, Image.SCALE_FAST); - } else if (width < height) { - misc = misc.getScaledInstance(20, 40, Image.SCALE_FAST); - } else { - misc = misc.getScaledInstance(40, 20, Image.SCALE_FAST); - } + ImageIcon miscAsImageIcon = new ImageIcon(misc); + miscAsImageIcon = ImageUtilities.scaleImageIcon(miscAsImageIcon, 40, false); + misc = miscAsImageIcon.getImage(); miscLabel.setIcon(new ImageIcon(misc)); miscLabel.setToolTipText(award.getTooltip(campaign.getCampaignOptions(), person)); diff --git a/MekHQ/src/mekhq/utilities/ImageUtilities.java b/MekHQ/src/mekhq/utilities/ImageUtilities.java new file mode 100644 index 0000000000..e69de29bb2