diff --git a/res/images/skins/default/sprite.png b/res/images/skins/default/sprite.png index 0492e8ce5cf..9d09dc325bb 100644 Binary files a/res/images/skins/default/sprite.png and b/res/images/skins/default/sprite.png differ diff --git a/res/images/skins/rebel/sprite.png b/res/images/skins/rebel/sprite.png index 6b8f9a8567a..8d972c8f9aa 100644 Binary files a/res/images/skins/rebel/sprite.png and b/res/images/skins/rebel/sprite.png differ diff --git a/res/images/skins/smith/sprite.png b/res/images/skins/smith/sprite.png index f416c63e65f..065d5b64542 100644 Binary files a/res/images/skins/smith/sprite.png and b/res/images/skins/smith/sprite.png differ diff --git a/src/main/java/forge/view/match/ViewField.java b/src/main/java/forge/view/match/ViewField.java index 7a7c43d3841..e65a959bfa3 100644 --- a/src/main/java/forge/view/match/ViewField.java +++ b/src/main/java/forge/view/match/ViewField.java @@ -242,53 +242,52 @@ public class ViewField extends FRoundedPanel { final String constraintsR = "w 47%!, h 12.5%!, growy, gapright 3%"; // Hand, library, graveyard, exile, flashback, poison labels - ViewField.this.lblHand = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_hand.png"), "99"); + ViewField.this.lblHand = new DetailLabel("zone.hand", "99"); ViewField.this.lblHand.setToolTipText("Cards in hand"); poolArea.add(ViewField.this.lblHand, constraintsL); - ViewField.this.lblLibrary = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_library.png"), "99"); + ViewField.this.lblLibrary = new DetailLabel("zone.library", "99"); ViewField.this.lblLibrary.setToolTipText("Cards in library"); poolArea.add(ViewField.this.lblLibrary, constraintsR); - ViewField.this.lblGraveyard = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_grave.png"), "99"); + ViewField.this.lblGraveyard = new DetailLabel("zone.graveyard", "99"); ViewField.this.lblGraveyard.setToolTipText("Cards in graveyard"); poolArea.add(ViewField.this.lblGraveyard, constraintsL); - ViewField.this.lblExile = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_exile.png"), "99"); + ViewField.this.lblExile = new DetailLabel("zone.exile", "99"); ViewField.this.lblExile.setToolTipText("Exiled cards"); poolArea.add(ViewField.this.lblExile, constraintsR); - ViewField.this.lblFlashback = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_flashback.png"), - "99"); + ViewField.this.lblFlashback = new DetailLabel("zone.flashback", "99"); ViewField.this.lblFlashback.setToolTipText("Flashback cards"); poolArea.add(ViewField.this.lblFlashback, constraintsL); - ViewField.this.lblPoison = new DetailLabel(new ImageIcon("res/images/symbols-13/detail_poison.png"), "99"); + ViewField.this.lblPoison = new DetailLabel("zone.poison", "99"); ViewField.this.lblPoison.setToolTipText("Poison counters"); poolArea.add(ViewField.this.lblPoison, constraintsR); // Black, Blue, Colorless, Green, Red, White mana labels - ViewField.this.lblBlack = new DetailLabel(new ImageIcon("res/images/symbols-13/B.png"), "99"); + ViewField.this.lblBlack = new DetailLabel("mana.black", "99"); ViewField.this.lblBlack.setToolTipText("Black mana"); poolArea.add(ViewField.this.lblBlack, constraintsL); - ViewField.this.lblBlue = new DetailLabel(new ImageIcon("res/images/symbols-13/U.png"), "99"); + ViewField.this.lblBlue = new DetailLabel("mana.blue", "99"); ViewField.this.lblBlue.setToolTipText("Blue mana"); poolArea.add(ViewField.this.lblBlue, constraintsR); - ViewField.this.lblGreen = new DetailLabel(new ImageIcon("res/images/symbols-13/G.png"), "99"); + ViewField.this.lblGreen = new DetailLabel("mana.green", "99"); ViewField.this.lblGreen.setToolTipText("Green mana"); poolArea.add(ViewField.this.lblGreen, constraintsL); - ViewField.this.lblRed = new DetailLabel(new ImageIcon("res/images/symbols-13/R.png"), "99"); + ViewField.this.lblRed = new DetailLabel("mana.red", "99"); ViewField.this.lblRed.setToolTipText("Red mana"); poolArea.add(ViewField.this.lblRed, constraintsR); - ViewField.this.lblWhite = new DetailLabel(new ImageIcon("res/images/symbols-13/W.png"), "99"); + ViewField.this.lblWhite = new DetailLabel("mana.white", "99"); ViewField.this.lblWhite.setToolTipText("White mana"); poolArea.add(ViewField.this.lblWhite, constraintsL); - ViewField.this.lblColorless = new DetailLabel(new ImageIcon("res/images/symbols-13/X.png"), "99"); + ViewField.this.lblColorless = new DetailLabel("mana.colorless", "99"); ViewField.this.lblColorless.setToolTipText("Colorless mana"); poolArea.add(ViewField.this.lblColorless, constraintsR); } @@ -628,21 +627,25 @@ public class ViewField extends FRoundedPanel { private final Color hoverBG; private Color clrBorders; private final MouseAdapter madHover; - private int w, h; + private int w, h, padding; + private String iconAddress; /** * Instance of JLabel detailing info about field: has icon and optional * hover effect. * - * @param icon - *   Label's icon - * @param txt + * @param s0 + *   Label's icon address + * @param txt0 *   Label's text */ - public DetailLabel(final ImageIcon icon, final String txt) { + public DetailLabel(final String s0, final String txt0) { super(); - this.setIcon(icon); - this.setText(txt); + padding = 6; + iconAddress = s0; + + this.setIcon(skin.getIcon(iconAddress, h - 2 * padding, h - 2 * padding)); + this.setText(txt0); this.setOpaque(false); this.setForeground(ViewField.this.skin.getClrText()); this.setPreferredSize(this.labelSize); @@ -668,6 +671,7 @@ public class ViewField extends FRoundedPanel { @Override public void componentResized(ComponentEvent e) { setFont(ViewField.this.skin.getFont1().deriveFont(Font.PLAIN, (getHeight() / 2))); + setIcon(skin.getIcon(iconAddress, h - 2 * padding, h - 2 * padding)); } }); diff --git a/src/main/java/forge/view/toolbox/FSkin.java b/src/main/java/forge/view/toolbox/FSkin.java index ce79af96cbe..b730b3ae1a9 100644 --- a/src/main/java/forge/view/toolbox/FSkin.java +++ b/src/main/java/forge/view/toolbox/FSkin.java @@ -19,9 +19,13 @@ package forge.view.toolbox; import java.awt.Color; import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import javax.imageio.ImageIO; import javax.swing.ImageIcon; @@ -35,6 +39,8 @@ import forge.gui.GuiUtils; */ public class FSkin { + private Map icons; + // ===== Public fields /** Primary font used in titles and buttons and most text output. */ private Font font1 = null; @@ -126,7 +132,7 @@ public class FSkin { // ===== Private fields private final String spriteFile = "sprite.png"; private final String font1file = "font1.ttf"; - private final String texture1file = "texture1.jpg"; + private final String texture1file = "bg_texture.jpg"; private final String btnLupfile = "btnLup.png"; private final String btnMupfile = "btnMup.png"; private final String btnRupfile = "btnRup.png"; @@ -174,6 +180,7 @@ public class FSkin { */ private void loadFontAndImages(final String skinName) { final String dirName = "res/images/skins/" + skinName + "/"; + icons = new HashMap(); // Fonts this.setFont1(this.retrieveFont(dirName + this.font1file)); @@ -218,6 +225,22 @@ public class FSkin { this.setIconViewDeckList(image.getSubimage(60, 140, 20, 20)); this.setIconSettings(image.getSubimage(80, 0, 80, 80)); this.setIconConcede(image.getSubimage(80, 80, 80, 80)); + + // All icons should eventually be set and retrieved using this method. + // Doublestrike 6-12-11 + this.setIcon("zone.hand", image.getSubimage(280, 40, 40, 40)); + this.setIcon("zone.library", image.getSubimage(280, 0, 40, 40)); + this.setIcon("zone.graveyard", image.getSubimage(320, 0, 40, 40)); + this.setIcon("zone.exile", image.getSubimage(320, 40, 40, 40)); + this.setIcon("zone.flashback", image.getSubimage(320, 120, 40, 40)); + this.setIcon("zone.poison", image.getSubimage(320, 80, 40, 40)); + + this.setIcon("mana.black", image.getSubimage(240, 0, 40, 40)); + this.setIcon("mana.blue", image.getSubimage(240, 40, 40, 40)); + this.setIcon("mana.green", image.getSubimage(240, 120, 40, 40)); + this.setIcon("mana.red", image.getSubimage(240, 80, 40, 40)); + this.setIcon("mana.white", image.getSubimage(280, 120, 40, 40)); + this.setIcon("mana.colorless", image.getSubimage(280, 80, 40, 40)); } catch (final IOException e) { System.err.println(this.notfound + this.spriteFile); } @@ -929,4 +952,43 @@ public class FSkin { public ImageIcon getIconViewDeckList() { return this.icoViewDeckList; } + + /** + * @param s0   String address + * @return ImageIcon + */ + public ImageIcon getIcon(String s0) { + return new ImageIcon(icons.get(s0)); + } + + /** + * Gets a scaled version of an icon from this skin's icon map. + * + * @param s0 String icon address + * @param w0 int new width + * @param h0 int new height + * @return ImageIcon + */ + public ImageIcon getIcon(String s0, int w0, int h0) { + w0 = (w0 < 1) ? 1 : w0; + h0 = (h0 < 1) ? 1 : h0; + + BufferedImage original = icons.get(s0); + BufferedImage scaled = new BufferedImage(w0, h0, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g2d = scaled.createGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + g2d.drawImage(original, 0, 0, w0, h0, 0, 0, original.getWidth(), original.getHeight(), null); + g2d.dispose(); + + return new ImageIcon(scaled); + } + + /** + * @param s0   String address + * @param bi0   BufferedImage + */ + public void setIcon(String s0, BufferedImage bi0) { + icons.put(s0, bi0); + } }