add watermark to card image to indicate card is transformable in CardViewer (closes #781).
parent
42c0b82067
commit
0ed79aa20d
Binary file not shown.
Before Width: | Height: | Size: 723 B After Width: | Height: | Size: 7.6 KiB |
|
@ -40,7 +40,7 @@ public enum MagicIcon {
|
|||
EDIT_ICON("w_edit.png"),
|
||||
HELP_ICON("w_help.png"),
|
||||
OPEN_ICON("w_open.png"),
|
||||
REFRESH2_ICON("w_cycle.png"),
|
||||
CYCLE_ICON("w_cycle.png"),
|
||||
RANDOM_ICON("w_random32.png"),
|
||||
CLEAR_ICON("w_clear28.png"),
|
||||
FILTER_ICON("w_filter24.png"),
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package magic.ui.duel.viewer;
|
||||
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
@ -14,6 +16,7 @@ import javax.swing.SwingConstants;
|
|||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.Timer;
|
||||
import magic.data.GeneralConfig;
|
||||
import magic.data.MagicIcon;
|
||||
import magic.model.MagicCardDefinition;
|
||||
import magic.ui.MagicImages;
|
||||
import magic.ui.cardtable.ICardSelectionListener;
|
||||
|
@ -28,11 +31,15 @@ import net.miginfocom.swing.MigLayout;
|
|||
@SuppressWarnings("serial")
|
||||
public class CardViewer extends JPanel implements ICardSelectionListener {
|
||||
|
||||
private static final Image TRANSFORM_ICON =
|
||||
MagicImages.getIcon(MagicIcon.CYCLE_ICON).getImage();
|
||||
|
||||
private final Dimension IMAGE_SIZE = getImageSize();
|
||||
|
||||
private Image thisImage;
|
||||
private Image gsImage;
|
||||
private boolean isMouseOver = false;
|
||||
private int defaultCursor = Cursor.DEFAULT_CURSOR;
|
||||
private MagicCardDefinition thisCard = MagicCardDefinition.UNKNOWN;
|
||||
private boolean isSwitchedAspect = false;
|
||||
private CardImageWorker worker;
|
||||
|
@ -62,7 +69,7 @@ public class CardViewer extends JPanel implements ICardSelectionListener {
|
|||
add(cardLabel, "w 100%");
|
||||
|
||||
setDefaultImage();
|
||||
setTransformCardListener();
|
||||
setMouseListener();
|
||||
}
|
||||
|
||||
private void setDefaultImage() {
|
||||
|
@ -79,28 +86,25 @@ public class CardViewer extends JPanel implements ICardSelectionListener {
|
|||
|
||||
private void showColorImageIfGreyscale(boolean b) {
|
||||
isMouseOver = b;
|
||||
if (thisCard.isInvalid()) {
|
||||
if (thisCard.isInvalid() || thisCard.hasMultipleAspects()) {
|
||||
repaint();
|
||||
}
|
||||
}
|
||||
|
||||
private void setTransformCardListener() {
|
||||
|
||||
private void setMouseListener() {
|
||||
addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (thisCard != null) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
switchCardAspect();
|
||||
});
|
||||
if (thisCard.hasMultipleAspects()) {
|
||||
switchCardAspect();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
if (thisCard.hasMultipleAspects() && thisCard.isValid()) {
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
} else {
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
defaultCursor = thisCard.hasMultipleAspects()
|
||||
? Cursor.HAND_CURSOR
|
||||
: Cursor.DEFAULT_CURSOR;
|
||||
setCursor(Cursor.getPredefinedCursor(defaultCursor));
|
||||
showColorImageIfGreyscale(true);
|
||||
}
|
||||
@Override
|
||||
|
@ -114,16 +118,14 @@ public class CardViewer extends JPanel implements ICardSelectionListener {
|
|||
}
|
||||
|
||||
private void switchCardAspect() {
|
||||
if (thisCard.hasMultipleAspects()) {
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
if (thisCard.isDoubleFaced()) {
|
||||
setCard(thisCard.getTransformedDefinition());
|
||||
} else if (thisCard.isFlipCard()) {
|
||||
setCard(thisCard.getFlippedDefinition());
|
||||
}
|
||||
isSwitchedAspect = !isSwitchedAspect;
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
if (thisCard.isDoubleFaced()) {
|
||||
setCard(thisCard.getTransformedDefinition());
|
||||
} else if (thisCard.isFlipCard()) {
|
||||
setCard(thisCard.getFlippedDefinition());
|
||||
}
|
||||
isSwitchedAspect = !isSwitchedAspect;
|
||||
setCursor(Cursor.getPredefinedCursor(defaultCursor));
|
||||
}
|
||||
|
||||
public final void setCard(final MagicCardDefinition aCard) {
|
||||
|
@ -181,7 +183,12 @@ public class CardViewer extends JPanel implements ICardSelectionListener {
|
|||
@Override
|
||||
public void paintComponent(final Graphics g) {
|
||||
if (thisImage != null) {
|
||||
g.drawImage(gsImage != null && !isMouseOver ? gsImage : thisImage, 0, 0, null);
|
||||
final Graphics2D g2d = (Graphics2D) g;
|
||||
g2d.drawImage(gsImage != null && !isMouseOver ? gsImage : thisImage, 0, 0, null);
|
||||
if (thisCard.hasMultipleAspects() && !isMouseOver) {
|
||||
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f));
|
||||
g2d.drawImage(TRANSFORM_ICON, (getWidth() - TRANSFORM_ICON.getWidth(null)) / 2, 60, null);
|
||||
}
|
||||
}
|
||||
if (isImagePending) {
|
||||
super.paintComponent(g);
|
||||
|
|
Loading…
Reference in New Issue