New feedback panel (supports mana symbols).

This commit is contained in:
magenoxx 2010-12-25 22:52:16 +03:00
parent faa09b45b7
commit b9eba43ccf
9 changed files with 429 additions and 12 deletions

View file

@ -1,76 +0,0 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.client.util;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public final class Constants {
private Constants() {
throw new AssertionError();
}
public static final int FRAME_MAX_HEIGHT = 367;
public static final int FRAME_MAX_WIDTH = 256;
public static final int ART_MAX_HEIGHT = 168;
public static final int ART_MAX_WIDTH = 227;
public static final int SYMBOL_MAX_HEIGHT = 14;
public static final int SYMBOL_MAX_WIDTH = 14;
public static final int SYMBOL_MAX_XOFFSET = 27;
public static final int SYMBOL_MAX_YOFFSET = 15;
public static final int SYMBOL_MAX_SPACE = 14;
public static final int CONTENT_MAX_XOFFSET = 15;
public static final int ART_MAX_YOFFSET = 37;
public static final int NAME_MAX_YOFFSET = 28;
public static final int TYPE_MAX_YOFFSET = 223;
public static final int ICON_MAX_HEIGHT = 16;
public static final int ICON_MAX_WIDTH = 16;
public static final int ICON_MAX_XOFFSET = 238;
public static final int ICON_MAX_YOFFSET = 210;
public static final int TEXT_MAX_YOFFSET = 232;
public static final int TEXT_MAX_WIDTH = 227;
public static final int TEXT_MAX_HEIGHT = 105;
public static final int NAME_FONT_MAX_SIZE = 13;
public static final int TEXT_FONT_MAX_SIZE = 11;
public static final int POWBOX_MAX_TOP = 336;
public static final int POWBOX_MAX_LEFT = 202;
public static final int POWBOX_TEXT_MAX_TOP = 352;
public static final int POWBOX_TEXT_MAX_LEFT = 212;
public static final int DAMAGE_MAX_LEFT = 180;
public static final Border EMPTY_BORDER = BorderFactory.createEmptyBorder(2,2,2,2);
public static final double SCALE_FACTOR = 0.5;
public static final String PLUGINS_DIRECTORY = "plugins/";
}

View file

@ -0,0 +1,58 @@
package mage.client.util.gui;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
public class BufferedImageBuilder {
private static final int DEFAULT_IMAGE_TYPE = BufferedImage.TYPE_INT_RGB;
public BufferedImage bufferImage(Image image) {
return bufferImage(image, DEFAULT_IMAGE_TYPE);
}
public BufferedImage bufferImage(Image image, int type) {
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, null, null);
//waitForImage(bufferedImage);
return bufferedImage;
}
private void waitForImage(BufferedImage bufferedImage) {
final ImageLoadStatus imageLoadStatus = new ImageLoadStatus();
bufferedImage.getHeight(new ImageObserver() {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
if (infoflags == ALLBITS) {
imageLoadStatus.heightDone = true;
return true;
}
return false;
}
});
bufferedImage.getWidth(new ImageObserver() {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
if (infoflags == ALLBITS) {
imageLoadStatus.widthDone = true;
return true;
}
return false;
}
});
while (!imageLoadStatus.widthDone && !imageLoadStatus.heightDone) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
}
}
}
class ImageLoadStatus {
public boolean widthDone = false;
public boolean heightDone = false;
}
}

View file

@ -1,10 +1,8 @@
package mage.client.util.gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.util.ArrayList;
import java.util.List;
@ -17,8 +15,8 @@ import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import mage.client.constants.Constants;
import mage.client.plugins.impl.Plugins;
import mage.client.util.Constants;
public class ColorsChooser extends JComboBox implements ListCellRenderer {

View file

@ -0,0 +1,18 @@
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;
}
}