diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java index fefed34a9e4..29d747645d6 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java @@ -463,7 +463,7 @@ public class FSkin { } private void updateColor() { - tempCoords = skinProp.getCoords(); + int[] tempCoords = skinProp.getCoords(); x0 = tempCoords[0]; y0 = tempCoords[1]; @@ -549,7 +549,7 @@ public class FSkin { * @param s0   An address in the hashmap, derived from FSkinProp enum */ private static void setImage(final FSkinProp s0, final boolean scale) { - tempCoords = s0.getCoords(); + int[] tempCoords = s0.getCoords(); x0 = tempCoords[0]; y0 = tempCoords[1]; w0 = tempCoords[2]; @@ -560,7 +560,7 @@ public class FSkin { final BufferedImage bi0 = img.getSubimage(x0, y0, w0, h0); if (scale && newW != 0) { - setImage(s0, bi0.getScaledInstance(newW, newH, Image.SCALE_AREA_AVERAGING)); + setImage(s0, bi0.getScaledInstance(newW, newH, Image.SCALE_SMOOTH)); } else { setImage(s0, bi0); @@ -569,8 +569,8 @@ public class FSkin { protected Image image; protected ImageIcon imageIcon; - protected HashMap scaledImages; - private HashMap cursors; + protected HashMap scaledImages = new HashMap<>(); + private HashMap cursors = new HashMap<>(); private SkinImage(final Image image0) { this.image = image0; @@ -589,9 +589,6 @@ public class FSkin { } public SkinImage resize(final int w, final int h) { - if (this.scaledImages == null) { - this.scaledImages = new HashMap<>(); - } final String key = w + "x" + h; SkinImage scaledImage = this.scaledImages.get(key); if (scaledImage == null) { @@ -603,11 +600,13 @@ public class FSkin { } public boolean save(final String path, final int w, final int h) { + final Image scaledImage = this.image.getScaledInstance(w, h, Image.SCALE_SMOOTH); + final BufferedImage resizedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); final Graphics2D g2d = resizedImage.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); - g2d.drawImage(this.image, 0, 0, w, h, 0, 0, this.getWidth(), this.getHeight(), null); + g2d.drawImage(scaledImage, 0, 0, null); g2d.dispose(); final File outputfile = new File(path); @@ -624,9 +623,6 @@ public class FSkin { return scale(scale, scale); } public SkinImage scale(final double scaleX, final double scaleY) { - if (this.scaledImages == null) { - this.scaledImages = new HashMap<>(); - } final String key = scaleX + "|" + scaleY; SkinImage scaledImage = this.scaledImages.get(key); if (scaledImage == null) { @@ -638,8 +634,6 @@ public class FSkin { } protected void updateScaledImages() { - if (this.scaledImages == null) { return; } - for (final Entry i : this.scaledImages.entrySet()) { String[] dims = i.getKey().split("x"); if (dims.length == 2) { //static scale @@ -653,14 +647,7 @@ public class FSkin { } protected void createResizedImage(final SkinImage baseImage, final int w, final int h) { - final BufferedImage resizedImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); - - final Graphics2D g2d = resizedImage.createGraphics(); - g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); - g2d.drawImage(baseImage.image, 0, 0, w, h, 0, 0, baseImage.getWidth(), baseImage.getHeight(), null); - g2d.dispose(); - - this.changeImage(resizedImage, null); + this.changeImage(baseImage.image.getScaledInstance(w, h, Image.SCALE_SMOOTH), null); } private void createScaledImage(final SkinImage baseImage, final double scaleX, final double scaleY) { @@ -668,9 +655,6 @@ public class FSkin { } private SkinCursor toCursor(final int hotSpotX, final int hotSpotY, final String name) { - if (this.cursors == null) { - this.cursors = new HashMap<>(); - } final String key = hotSpotX + "|" + hotSpotY + "|" + name; SkinCursor cursor = this.cursors.get(key); if (cursor == null) { @@ -682,8 +666,6 @@ public class FSkin { } private void updateCursors() { - if (this.cursors == null) { return; } - for (final SkinCursor cursor : this.cursors.values()) { cursor.updateCursor(this.image); } @@ -778,7 +760,7 @@ public class FSkin { } private static void setIcon(final FSkinProp s0) { - tempCoords = s0.getCoords(); + int[] tempCoords = s0.getCoords(); x0 = tempCoords[0]; y0 = tempCoords[1]; w0 = tempCoords[2]; @@ -1111,7 +1093,6 @@ public class FSkin { bimDefaultAvatars, bimPreferredAvatars, bimTrophies, bimAbilities, bimManaIcons, bimPhyrexian, bimDefaultSleeve, bimDefaultSleeve2, bimDefaultDeckbox, bimPrefferedSetLogo, bimDefaultWatermark, bimDefaultDraftRank; private static int x0, y0, w0, h0, newW, newH, preferredW, preferredH; - private static int[] tempCoords; private static int defaultFontSize = 12; private static boolean loaded = false; @@ -1288,7 +1269,7 @@ public class FSkin { bimQuestDraftDeck = ImageIO.read(f8); FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimFavIcon = ImageIO.read(f9); - + FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); if (f5.exists()) { bimPreferredAvatars = ImageIO.read(f5); } FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); @@ -1538,7 +1519,7 @@ public class FSkin { } private static BufferedImage testPreferredSprite(final FSkinProp s0) { - tempCoords = s0.getCoords(); + int[] tempCoords = s0.getCoords(); x0 = tempCoords[0]; y0 = tempCoords[1]; w0 = tempCoords[2]; @@ -1653,7 +1634,7 @@ public class FSkin { } private static void setImage(final FSkinProp s0, final BufferedImage bim) { - tempCoords = s0.getCoords(); + int[] tempCoords = s0.getCoords(); x0 = tempCoords[0]; y0 = tempCoords[1]; w0 = tempCoords[2]; diff --git a/forge-gui-desktop/src/main/java/forge/view/FNavigationBar.java b/forge-gui-desktop/src/main/java/forge/view/FNavigationBar.java index 1a542bc3ed7..dd5ffc7c6aa 100644 --- a/forge-gui-desktop/src/main/java/forge/view/FNavigationBar.java +++ b/forge-gui-desktop/src/main/java/forge/view/FNavigationBar.java @@ -445,7 +445,7 @@ public class FNavigationBar extends FTitleBarBase { public void setIcon(final Icon icon) { final ImageIcon imageIcon = ReflectionUtil.safeCast(icon, ImageIcon.class); if (imageIcon != null) { - super.setIcon(new ImageIcon(imageIcon.getImage().getScaledInstance(20, 20, Image.SCALE_AREA_AVERAGING))); + super.setIcon(new ImageIcon(imageIcon.getImage().getScaledInstance(20, 20, Image.SCALE_SMOOTH))); } else { super.setIcon((Icon)null); diff --git a/forge-gui-desktop/src/main/java/forge/view/FTitleBar.java b/forge-gui-desktop/src/main/java/forge/view/FTitleBar.java index 3579e6f022c..1f6eb2e0381 100644 --- a/forge-gui-desktop/src/main/java/forge/view/FTitleBar.java +++ b/forge-gui-desktop/src/main/java/forge/view/FTitleBar.java @@ -44,7 +44,7 @@ public class FTitleBar extends FTitleBarBase { @Override public void setIconImage(Image image) { if (image != null) { - this.lblTitle.setIcon(new ImageIcon(image.getScaledInstance(16, 16, Image.SCALE_AREA_AVERAGING))); + this.lblTitle.setIcon(new ImageIcon(image.getScaledInstance(16, 16, Image.SCALE_SMOOTH))); } else { this.lblTitle.setIcon((ImageIcon)null);