diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index bda587b21d..b8dbc9be25 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -43,7 +43,7 @@ <dependency> <groupId>com.mortennobel</groupId> <artifactId>java-image-scaling</artifactId> - <version>0.8.4</version> + <version>0.8.5</version> </dependency> <dependency> <groupId>com.google.collections</groupId> diff --git a/Mage.Client/src/main/java/mage/client/cards/BigCard.java b/Mage.Client/src/main/java/mage/client/cards/BigCard.java index db47c40bf1..985067c3cf 100644 --- a/Mage.Client/src/main/java/mage/client/cards/BigCard.java +++ b/Mage.Client/src/main/java/mage/client/cards/BigCard.java @@ -277,6 +277,7 @@ public class BigCard extends JComponent { public void setDefaultImage() { bigImage = ImageHelper.getImageFromResources("/empty.png"); + // XXX: scaled to fit width bigImage = ImageHelper.getResizedImage((BufferedImage) bigImage, getWidth(), getHeight()); } diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java index 1e613303b5..a2beed5822 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java @@ -42,10 +42,7 @@ import mage.client.MageFrame; import mage.client.components.ColorPane; import mage.remote.Session; import mage.view.ChatMessage.MessageColor; -import org.jdesktop.swingx.graphics.ColorUtilities; -import sun.plugin2.gluegen.runtime.CPU; -import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.table.AbstractTableModel; @@ -105,7 +102,7 @@ public class ChatPanel extends javax.swing.JPanel { /** * Maps message colors to {@link Color}. */ - private static final Map<MessageColor, Color> colorMap = new HashMap<MessageColor, Color>(); + private static final Map<MessageColor, Color> colorMap = new EnumMap<MessageColor, Color>(MessageColor.class); static { colorMap.put(MessageColor.BLACK, Color.black); diff --git a/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java b/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java index c6dc250b84..920145a68b 100644 --- a/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java +++ b/Mage.Client/src/main/java/mage/client/components/arcane/ManaSymbols.java @@ -3,20 +3,18 @@ package mage.client.components.arcane; import mage.client.cards.CardsStorage; import mage.client.constants.Constants; import mage.client.util.gui.BufferedImageBuilder; -import mage.client.util.gui.ImageResizeUtil; import org.apache.log4j.Logger; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; -import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileOutputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import java.util.regex.Pattern; +import mage.client.util.ImageHelper; public class ManaSymbols { private static final Logger log = Logger.getLogger(ManaSymbols.class); @@ -35,7 +33,7 @@ public class ManaSymbols { Rectangle r = new Rectangle(11, 11); try { Image image = UI.getImageIcon(file.getAbsolutePath()).getImage(); - BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); manaImages.put(symbol, resized); } catch (Exception e) { log.error("Error for symbol:" + symbol); @@ -59,7 +57,7 @@ public class ManaSymbols { int h = image.getHeight(null); if (h > 0) { Rectangle r = new Rectangle(21, (int) (h * 21.0f / width)); - BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); setImages.put(set, resized); } } else { @@ -90,7 +88,7 @@ public class ManaSymbols { dx = 6; } Rectangle r = new Rectangle(15 + dx, (int) (height * (15.0f + dx) / width)); - BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); File newFile = new File(Constants.RESOURCE_PATH_SET_SMALL + File.separator + _set + "-" + code + ".png"); ImageIO.write(resized, "png", newFile); } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java index d5c1a5dfab..2e7c6496f5 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java @@ -28,7 +28,6 @@ package mage.client.deckeditor.table; -import mage.cards.MageCard; import mage.client.cards.BigCard; import mage.client.cards.CardEventSource; import mage.client.cards.ICardGrid; @@ -248,8 +247,8 @@ public class TableModel extends AbstractTableModel implements ICardGrid { if (!card.getId().equals(bigCard.getCardId())) { Image image = Plugins.getInstance().getOriginalImage(card); if (image != null && image instanceof BufferedImage) { - image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth(), - bigCard.getHeight()); + // XXX: scaled to fit width + image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth()); bigCard.setCard(card.getId(), image, new ArrayList<String>(), false); } } diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index 0473c49e08..1f04aa0310 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -38,22 +38,18 @@ import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.components.HoverButton; import mage.client.components.MageRoundPane; -import mage.client.components.arcane.GlowText; import mage.client.components.arcane.ManaSymbols; -import mage.client.components.arcane.UI; import mage.client.dialog.ShowCardsDialog; import mage.remote.Session; import mage.client.util.Command; import mage.client.util.Config; import mage.client.util.ImageHelper; import mage.client.util.gui.BufferedImageBuilder; -import mage.client.util.gui.ImageResizeUtil; import mage.components.ImagePanel; import mage.sets.Sets; import mage.view.ManaPoolView; import mage.view.PlayerView; -import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.LineBorder; @@ -63,7 +59,6 @@ import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Random; @@ -162,7 +157,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { Image image = ImageHelper.getImageFromResources("/avatars/face" + index + ".jpg"); // Avatar - BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); avatar = new HoverButton("player", resized, resized, resized, r); avatar.setBounds(6, 6, r.width, r.height); panelBackground.add(avatar); @@ -219,7 +214,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { // Cheat button r = new Rectangle(25, 21); image = ImageHelper.getImageFromResources("/info/cheat.png"); - resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); cheat = new JButton(); cheat.setIcon(new ImageIcon(resized)); panelBackground.add(cheat); @@ -273,7 +268,7 @@ public class PlayerPanelExt extends javax.swing.JPanel { } Image image = ImageHelper.getImageFromResources(imagePath); - BufferedImage resized = ImageResizeUtil.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); JComponent component = null; if (isButton) { component = new HoverButton(null, resized, resized, resized, r); diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index 9cf54c1aec..9a7798856e 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -1,10 +1,8 @@ package mage.client.plugins.adapters; import java.awt.*; -import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; -import java.io.InterruptedIOException; import java.util.List; import java.util.UUID; @@ -18,7 +16,6 @@ import mage.cards.action.TransferData; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.components.MageComponents; -import mage.client.components.MageRoundPane; import mage.client.game.PlayAreaPanel; import mage.client.plugins.impl.Plugins; import mage.remote.Session; @@ -197,7 +194,8 @@ public class MageActionCallback implements ActionCallback { state = true; Image image = card.getImage(); if (image != null && image instanceof BufferedImage) { - image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth(), bigCard.getHeight()); + // XXX: scaled to fit width + image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth()); bigCard.setCard(card.getOriginal().getId(), image, card.getOriginal().getRules(), card.isFoil()); if (card.getOriginal().isAbility()) { bigCard.showTextComponent(); diff --git a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java index 6f1a33b246..2db4ae3dc5 100644 --- a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java @@ -49,6 +49,7 @@ import mage.client.components.arcane.UI; import mage.view.CardView; import com.mortennobel.imagescaling.ResampleOp; +import java.awt.Rectangle; /** * @@ -168,6 +169,29 @@ public class ImageHelper { return image; } + /** + * Returns an image scaled to fit width + * panel + */ + public static BufferedImage getResizedImage(BufferedImage original, int width) { + if (width != original.getWidth()) { + double ratio = width / (double) original.getWidth(); + int height = (int) (original.getHeight() * ratio); + return getResizedImage(original, width, height); + } else { + return original; + } + } + + /** + * Returns an image scaled to the needed size + */ + public static BufferedImage getResizedImage(BufferedImage original, Rectangle sizeNeed) { + ResampleOp resampleOp = new ResampleOp(sizeNeed.width, sizeNeed.height); + BufferedImage image = resampleOp.filter(original, null); + return image; + } + /** * Get image using relative path in resources. * @param path diff --git a/Mage.Client/src/main/java/mage/client/util/gui/ImageResizeUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/ImageResizeUtil.java deleted file mode 100644 index d12e5278ab..0000000000 --- a/Mage.Client/src/main/java/mage/client/util/gui/ImageResizeUtil.java +++ /dev/null @@ -1,18 +0,0 @@ -package mage.client.util.gui; - -import com.mortennobel.imagescaling.ResampleOp; - -import java.awt.*; -import java.awt.image.BufferedImage; - -/** - * @author nantuko - */ -public class ImageResizeUtil { - - public static BufferedImage getResizedImage(BufferedImage original, Rectangle sizeNeed) { - ResampleOp resampleOp = new ResampleOp(sizeNeed.width, sizeNeed.height); - BufferedImage image = resampleOp.filter(original, null); - return image; - } -} diff --git a/Mage.Common/src/mage/cards/MageCard.java b/Mage.Common/src/mage/cards/MageCard.java index 674697b73e..9deb67e84f 100644 --- a/Mage.Common/src/mage/cards/MageCard.java +++ b/Mage.Common/src/mage/cards/MageCard.java @@ -5,7 +5,6 @@ import java.awt.Image; import javax.swing.JPanel; import mage.view.CardView; -import mage.view.PermanentView; public abstract class MageCard extends JPanel { private static final long serialVersionUID = 6089945326434301879L; diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java index bdfc28c170..5ce86480e7 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -19,6 +19,7 @@ import com.google.common.base.Function; import com.google.common.collect.ComputationException; import com.google.common.collect.MapMaker; import com.mortennobel.imagescaling.ResampleOp; +import java.awt.Graphics2D; /** * This class stores ALL card images in a cache with soft values. this means @@ -80,12 +81,13 @@ public class ImageCache { return loadImage(thumbnailFile); } else { BufferedImage image = loadImage(file); + image = getWizardsCard(image); if (image == null) return null; //log.debug("creating thumbnail for " + key); return makeThumbnail(image, thumbnailPath); } } else { - return loadImage(file); + return getWizardsCard(loadImage(file)); } } else { throw new RuntimeException( @@ -101,6 +103,18 @@ public class ImageCache { }); } + public static BufferedImage getWizardsCard(BufferedImage image) { + if (image.getWidth() == 265 && image.getHeight() == 370) { + BufferedImage crop = new BufferedImage(256, 360, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics2D = crop.createGraphics(); + graphics2D.drawImage(image, 0, 0, 255, 360, 5, 5, 261, 365, null); + graphics2D.dispose(); + return crop; + } else { + return image; + } + } + public static BufferedImage getThumbnail(CardView card) { String key = getKey(card) + "#thumb"; //log.debug("#key: " + key);