diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml
index bda587b21db..b8dbc9be252 100644
--- a/Mage.Client/pom.xml
+++ b/Mage.Client/pom.xml
@@ -43,7 +43,7 @@
com.mortennobel
java-image-scaling
- 0.8.4
+ 0.8.5
com.google.collections
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 db47c40bf12..985067c3cfc 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 1e613303b58..a2beed58220 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 colorMap = new HashMap();
+ private static final Map colorMap = new EnumMap(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 c6dc250b846..920145a68b8 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 d5c1a5dfab3..2e7c6496f52 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(), 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 0473c49e088..1f04aa03104 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 9cf54c1aec4..9a7798856ef 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 6f1a33b2469..2db4ae3dc5f 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 d12e5278aba..00000000000
--- 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 674697b73ed..9deb67e84f8 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 bdfc28c1700..5ce86480e70 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);