From 682357b5841f7853212e354199d1a46589663364 Mon Sep 17 00:00:00 2001 From: Ida Massow Date: Mon, 6 Jun 2011 19:53:45 +0200 Subject: Double ist das neue float git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@377 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/impl/AbstractStonePanel.java | 2 +- src/jrummikub/view/impl/StonePainter.java | 117 +++++++++++++----------- src/jrummikub/view/impl/TablePanel.java | 88 +++++++++--------- 3 files changed, 110 insertions(+), 97 deletions(-) (limited to 'src/jrummikub/view') diff --git a/src/jrummikub/view/impl/AbstractStonePanel.java b/src/jrummikub/view/impl/AbstractStonePanel.java index 765f6bc..ba3013c 100644 --- a/src/jrummikub/view/impl/AbstractStonePanel.java +++ b/src/jrummikub/view/impl/AbstractStonePanel.java @@ -174,7 +174,7 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel, for (Pair entry : stones) { Stone stone = entry.getFirst(); Position p = entry.getSecond(); - Rectangle2D rect = new Rectangle2D.Float(p.getX(), p.getY(), 1, 1); + Rectangle2D rect = new Rectangle2D.Double(p.getX(), p.getY(), 1, 1); if (rect.contains(pos.getX(), pos.getY())) return stone; diff --git a/src/jrummikub/view/impl/StonePainter.java b/src/jrummikub/view/impl/StonePainter.java index 09b6dcc..ea52387 100644 --- a/src/jrummikub/view/impl/StonePainter.java +++ b/src/jrummikub/view/impl/StonePainter.java @@ -23,17 +23,17 @@ import jrummikub.model.StoneColor; * coordinates */ class StonePainter { - private static final float ASPECT_RATIO = 0.75f; - private static final float DEFAULT_WIDTH = 40; - private static final float TEXT_POS = 0.275f; - private static final float FACE_WIDTH = 0.475f; - private static final float CIRCLE_POS = 0.725f; - private static final float CIRCLE_WIDTH = 0.45f; + private static final double ASPECT_RATIO = 0.75f; + private static final double DEFAULT_WIDTH = 40; + private static final double TEXT_POS = 0.275f; + private static final double FACE_WIDTH = 0.475f; + private static final double CIRCLE_POS = 0.725f; + private static final double CIRCLE_WIDTH = 0.45f; private static final Color BACKGROUND_COLOR = new Color(0.9f, 0.9f, 0.6f); - private static final float BRIGHTER_SCALE = 1.15f; - private static final float HOVER_RATIO = 0.7f; + private static final double BRIGHTER_SCALE = 1.15f; + private static final double HOVER_RATIO = 0.7f; private Map> defaultStones; private Map> selectedStones; @@ -43,15 +43,15 @@ class StonePainter { /** * The width of one pixel in the scale of 1.0 */ - public static final float WIDTH_SCALE = 1 / DEFAULT_WIDTH; + public static final double WIDTH_SCALE = 1 / DEFAULT_WIDTH; /** * The height of one pixel in the scale of 1.0 */ - public static final float HEIGHT_SCALE = ASPECT_RATIO / DEFAULT_WIDTH; + public static final double HEIGHT_SCALE = ASPECT_RATIO / DEFAULT_WIDTH; - private float scale; + private double scale; - private static int even(float f) { + private static int even(double f) { return 2 * (int) (f / 2); } @@ -60,7 +60,8 @@ class StonePainter { int g = (int) (color.getGreen() * BRIGHTER_SCALE); int b = (int) (color.getBlue() * BRIGHTER_SCALE); - return new Color(r > 255 ? 255 : r, g > 255 ? 255 : g, b > 255 ? 255 : b); + return new Color(r > 255 ? 255 : r, g > 255 ? 255 : g, b > 255 ? 255 + : b); } private static Color hover(Color color) { @@ -68,27 +69,28 @@ class StonePainter { int g = (int) (color.getGreen() * HOVER_RATIO + 255 * (1 - HOVER_RATIO)); int b = (int) (color.getBlue() * HOVER_RATIO + 255 * (1 - HOVER_RATIO)); - return new Color(r > 255 ? 255 : r, g > 255 ? 255 : g, b > 255 ? 255 : b); + return new Color(r > 255 ? 255 : r, g > 255 ? 255 : g, b > 255 ? 255 + : b); } public static Color getColor(StoneColor color) { switch (color) { - case BLACK: - return new Color(0.0f, 0.0f, 0.0f); - case BLUE: - return new Color(0.0f, 0.0f, 1.0f); - case ORANGE: - return new Color(1.0f, 0.4f, 0.0f); - case RED: - return new Color(0.9f, 0.0f, 0.25f); - case AQUA: - return new Color(0.0f, 0.85f, 0.75f); - case GREEN: - return new Color(0.0f, 0.65f, 0.0f); - case VIOLET: - return new Color(0.75f, 0.325f, 0.75f); - case GRAY: - return new Color(0.5f, 0.5f, 0.5f); + case BLACK: + return new Color(0.0f, 0.0f, 0.0f); + case BLUE: + return new Color(0.0f, 0.0f, 1.0f); + case ORANGE: + return new Color(1.0f, 0.4f, 0.0f); + case RED: + return new Color(0.9f, 0.0f, 0.25f); + case AQUA: + return new Color(0.0f, 0.85f, 0.75f); + case GREEN: + return new Color(0.0f, 0.65f, 0.0f); + case VIOLET: + return new Color(0.75f, 0.325f, 0.75f); + case GRAY: + return new Color(0.5f, 0.5f, 0.5f); } return null; @@ -98,9 +100,9 @@ class StonePainter { * Sets the new grid scale * * @param scale - * the new scale + * the new scale */ - public void setScale(float scale) { + public void setScale(double scale) { this.scale = scale; if (this.scale == 0) { @@ -112,14 +114,14 @@ class StonePainter { /** * @param x - * x position in screen coordinates + * x position in screen coordinates * @param y - * y position in screen coordinates + * y position in screen coordinates * @return position in grid coordinates */ public Position calculatePosition(int x, int y) { - float width = getStoneWidth(); - float height = getStoneHeight(); + double width = getStoneWidth(); + double height = getStoneHeight(); return new Position(x / width, y / height); } @@ -209,19 +211,21 @@ class StonePainter { defaultStones.put(color, new HashMap()); selectedStones.put(color, new HashMap()); hoveredStones.put(color, new HashMap()); - hoveredSelectedStones.put(color, new HashMap()); + hoveredSelectedStones.put(color, + new HashMap()); } } /** * @param scale - * the scaling factor for the grid coordinates + * the scaling factor for the grid coordinates */ - StonePainter(float scale) { + StonePainter(double scale) { setScale(scale); } - private void paintStoneBackground(Graphics2D g, Rectangle r, Color background) { + private void paintStoneBackground(Graphics2D g, Rectangle r, + Color background) { // Paint background g.setColor(background); g.fillRect(r.x, r.y, r.width, r.height); @@ -322,8 +326,9 @@ class StonePainter { pos + (fm.getAscent() - fm.getDescent()) / 2 + 1); } g.setColor(color); - g.drawString(value, (int) (r.x + r.width / 2 - stringRect.getWidth() / 2), - pos + (fm.getAscent() - fm.getDescent()) / 2); + g.drawString(value, + (int) (r.x + r.width / 2 - stringRect.getWidth() / 2), pos + + (fm.getAscent() - fm.getDescent()) / 2); } private void paintCircle(Graphics2D g, Rectangle r, Color background) { @@ -332,40 +337,42 @@ class StonePainter { // Paint circle g.setColor(background.darker()); - g.drawArc(r.x + r.width / 2 - size / 2, pos - size / 2, size, size, 50, 170); + g.drawArc(r.x + r.width / 2 - size / 2, pos - size / 2, size, size, 50, + 170); g.setColor(brighter(background)); - g.drawArc((int) (r.x + r.width / 2 - size / 2), pos - size / 2, size, size, - -130, 170); + g.drawArc((int) (r.x + r.width / 2 - size / 2), pos - size / 2, size, + size, -130, 170); } /** * Paints a stone * * @param g - * the graphics context to paint the stone on + * the graphics context to paint the stone on * @param stone - * the stone to paint + * the stone to paint * @param p - * the position of the stone + * the position of the stone * @param selected - * if selected is true the stone will be painted darker + * if selected is true the stone will be painted darker * @param hovered - * if hovered is true the stone will be painted brighter + * if hovered is true the stone will be painted brighter */ public void paintStone(Graphics2D g, Stone stone, Position p, boolean selected, boolean hovered) { int width = getStoneWidth(); int height = getStoneHeight(); - int x = Math.round(p.getX() * width), y = Math.round(p.getY() * height); + int x = (int) Math.round(p.getX() * width), y = (int) Math.round(p + .getY() * height); if (stone.isJoker()) { - g.drawImage(getStoneImage(stone.getColor(), 0, selected, hovered), x, y, - null); + g.drawImage(getStoneImage(stone.getColor(), 0, selected, hovered), + x, y, null); } else { g.drawImage( - getStoneImage(stone.getColor(), stone.getValue(), selected, hovered), - x, y, null); + getStoneImage(stone.getColor(), stone.getValue(), selected, + hovered), x, y, null); } } } diff --git a/src/jrummikub/view/impl/TablePanel.java b/src/jrummikub/view/impl/TablePanel.java index 7c53d28..93509a6 100644 --- a/src/jrummikub/view/impl/TablePanel.java +++ b/src/jrummikub/view/impl/TablePanel.java @@ -39,17 +39,18 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { private final static ImageIcon BRIGHT_BACKGROUND = new ImageIcon( HandPanel.class.getResource("/jrummikub/resource/bright_felt.png")); - private final static float MIN_VISIBLE_WIDTH = 15; - private final static float MIN_VISIBLE_HEIGHT = 7.5f; - private final static float HORIZONTAL_MARGIN = 1; - private final static float VERTICAL_MARGIN = 0.7f; - private final static float CONNECTOR_WIDTH = 0.25f; - private final float COLLECTION_RATIO = 0.12f; + private final static double MIN_VISIBLE_WIDTH = 15; + private final static double MIN_VISIBLE_HEIGHT = 7.5f; + private final static double HORIZONTAL_MARGIN = 1; + private final static double VERTICAL_MARGIN = 0.7f; + private final static double CONNECTOR_WIDTH = 0.25f; + private final double COLLECTION_RATIO = 0.12f; private final int COLLECTION_GAP = 5; private StoneCollectionPanel stoneCollection; - private Iterable> stoneSets = Collections.emptySet(); + private Iterable> stoneSets = Collections + .emptySet(); private Collection selectedStones = Collections.emptyList(); private Event1 leftConnectorClickEvent = new Event1(); @@ -73,7 +74,7 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { List> stones = new ArrayList>(); for (Pair entry : stoneSets) { - float x = entry.getSecond().getX(), y = entry.getSecond().getY(); + double x = entry.getSecond().getX(), y = entry.getSecond().getY(); for (Stone stone : entry.getFirst()) { stones.add(new Pair(stone, new Position(x, y))); @@ -98,7 +99,7 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { * Sets the currently selected stones * * @param stones - * the selected stones + * the selected stones */ void setSelectedStones(Collection stones) { selectedStones = stones; @@ -134,8 +135,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { } private Rectangle2D calculateTableExtent() { - float minx = -MIN_VISIBLE_WIDTH / 2, maxx = MIN_VISIBLE_WIDTH / 2; - float miny = -MIN_VISIBLE_HEIGHT / 2, maxy = MIN_VISIBLE_HEIGHT / 2; + double minx = -MIN_VISIBLE_WIDTH / 2, maxx = MIN_VISIBLE_WIDTH / 2; + double miny = -MIN_VISIBLE_HEIGHT / 2, maxy = MIN_VISIBLE_HEIGHT / 2; for (Pair entry : stoneSets) { Position p = entry.getSecond(); @@ -154,20 +155,20 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { maxy = p.getY() + 1; } - return new Rectangle2D.Float(minx - HORIZONTAL_MARGIN, miny - - VERTICAL_MARGIN, maxx - minx + 2 * HORIZONTAL_MARGIN, maxy - miny + 2 - * VERTICAL_MARGIN); + return new Rectangle2D.Double(minx - HORIZONTAL_MARGIN, miny + - VERTICAL_MARGIN, maxx - minx + 2 * HORIZONTAL_MARGIN, maxy + - miny + 2 * VERTICAL_MARGIN); } private void rescale() { Insets insets = getInsets(); int x = insets.left, y = insets.top, width = getWidth() - insets.left - - insets.right, height = getHeight() - insets.top - insets.bottom; + - insets.right, height = getHeight() - insets.top + - insets.bottom; int collectionHeight = (int) (height * COLLECTION_RATIO); - stoneCollection - .setBounds(x, y + height - collectionHeight - COLLECTION_GAP, width, - collectionHeight); + stoneCollection.setBounds(x, y + height - collectionHeight + - COLLECTION_GAP, width, collectionHeight); setScale(); @@ -180,10 +181,10 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { - insets.top - insets.bottom; Rectangle2D extent = calculateTableExtent(); - float widthScale = width / (float) extent.getWidth() + double widthScale = width / (double) extent.getWidth() * StonePainter.WIDTH_SCALE; - float heightScale = height * (1 - COLLECTION_RATIO) - / (float) extent.getHeight() * StonePainter.HEIGHT_SCALE; + double heightScale = height * (1 - COLLECTION_RATIO) + / (double) extent.getHeight() * StonePainter.HEIGHT_SCALE; getStonePainter().setScale(Math.min(widthScale, heightScale)); } @@ -193,10 +194,10 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { for (Pair entry : stoneSets) { Position p = entry.getSecond(); StoneSet stoneSet = entry.getFirst(); - float x = p.getX(), y = p.getY(); + double x = p.getX(), y = p.getY(); // left connector - Rectangle2D rect = new Rectangle2D.Float(x - CONNECTOR_WIDTH, y, + Rectangle2D rect = new Rectangle2D.Double(x - CONNECTOR_WIDTH, y, CONNECTOR_WIDTH, 1); if (rect.contains(pos.getX(), pos.getY())) { leftConnectorClickEvent.emit(stoneSet); @@ -204,7 +205,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { } // right connector - rect = new Rectangle2D.Float(x + stoneSet.getSize(), y, CONNECTOR_WIDTH, 1); + rect = new Rectangle2D.Double(x + stoneSet.getSize(), y, + CONNECTOR_WIDTH, 1); if (rect.contains(pos.getX(), pos.getY())) { rightConnectorClickEvent.emit(stoneSet); return true; @@ -224,10 +226,10 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { for (Pair entry : stoneSets) { Position p = entry.getSecond(); StoneSet stoneSet = entry.getFirst(); - float x = p.getX(), y = p.getY(); + double x = p.getX(), y = p.getY(); // left connector - Rectangle2D rect = new Rectangle2D.Float(x - CONNECTOR_WIDTH, y, + Rectangle2D rect = new Rectangle2D.Double(x - CONNECTOR_WIDTH, y, CONNECTOR_WIDTH, 1); if (rect.contains(pos.getX(), pos.getY())) { leftHoveredConnector = stoneSet; @@ -235,7 +237,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { } // right connector - rect = new Rectangle2D.Float(x + stoneSet.getSize(), y, CONNECTOR_WIDTH, 1); + rect = new Rectangle2D.Double(x + stoneSet.getSize(), y, + CONNECTOR_WIDTH, 1); if (rect.contains(pos.getX(), pos.getY())) { rightHoveredConnector = stoneSet; break; @@ -257,15 +260,15 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { .getStoneHeight(); Rectangle2D extent = calculateTableExtent(); - return new Pair((int) (width / 2 - extent.getCenterX() - * stoneWidth), - (int) ((height * (1 - COLLECTION_RATIO)) / 2 - extent.getCenterY() - * stoneHeight)); + return new Pair( + (int) (width / 2 - extent.getCenterX() * stoneWidth), + (int) ((height * (1 - COLLECTION_RATIO)) / 2 - extent + .getCenterY() * stoneHeight)); } private void paintStoneSet(Graphics2D g, StoneSet stoneSet, Position pos, Area connectorArea, Area hoveredConnectorArea) { - float x = pos.getX(); + double x = pos.getX(); int width = getStonePainter().getStoneWidth(), height = getStonePainter() .getStoneHeight(); Area leftConnectorArea = (stoneSet == leftHoveredConnector ? hoveredConnectorArea @@ -275,9 +278,10 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { // Left connector - leftConnectorArea.add(new Area(new Rectangle2D.Float(Math.round(x * width) - - (int) width * CONNECTOR_WIDTH + 1, Math.round(pos.getY() * height), - (int) (width * CONNECTOR_WIDTH), height))); + leftConnectorArea.add(new Area(new Rectangle2D.Double(Math.round(x + * width) + - (int) width * CONNECTOR_WIDTH + 1, Math.round(pos.getY() + * height), (int) (width * CONNECTOR_WIDTH), height))); for (Stone stone : stoneSet) { getStonePainter().paintStone(g, stone, new Position(x, pos.getY()), @@ -286,8 +290,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { } // Right connector - rightConnectorArea.add(new Area(new Rectangle2D.Float( - Math.round(x * width), Math.round(pos.getY() * height), + rightConnectorArea.add(new Area(new Rectangle2D.Double(Math.round(x + * width), Math.round(pos.getY() * height), (int) (width * CONNECTOR_WIDTH), height))); } @@ -311,15 +315,16 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { Area hoveredConnectorArea = new Area(); for (Pair entry : stoneSets) { - paintStoneSet(g, entry.getFirst(), entry.getSecond(), connectorArea, - hoveredConnectorArea); + paintStoneSet(g, entry.getFirst(), entry.getSecond(), + connectorArea, hoveredConnectorArea); } g.setClip(connectorArea); g.setTransform(oldTransform); for (int x = 0; x < getWidth(); x += DARK_BACKGROUND.getIconWidth()) { - for (int y = 0; y < getHeight(); y += DARK_BACKGROUND.getIconHeight()) { + for (int y = 0; y < getHeight(); y += DARK_BACKGROUND + .getIconHeight()) { DARK_BACKGROUND.paintIcon(this, g, x, y); } } @@ -335,7 +340,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { g.setTransform(oldTransform); for (int x = 0; x < getWidth(); x += BRIGHT_BACKGROUND.getIconWidth()) { - for (int y = 0; y < getHeight(); y += BRIGHT_BACKGROUND.getIconHeight()) { + for (int y = 0; y < getHeight(); y += BRIGHT_BACKGROUND + .getIconHeight()) { BRIGHT_BACKGROUND.paintIcon(this, g, x, y); } } -- cgit v1.2.3