diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-05-02 03:40:24 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-05-02 03:40:24 +0200 |
commit | 6d406adc6d04589e757a68d158d005e4bf949215 (patch) | |
tree | 761120442cad6cb64937febf56d434fcc405106a /src/jrummikub/view/impl/StonePainter.java | |
parent | 15a41ec38eaf5baca7c4266de52d1ae86ee9488b (diff) | |
download | JRummikub-6d406adc6d04589e757a68d158d005e4bf949215.tar JRummikub-6d406adc6d04589e757a68d158d005e4bf949215.zip |
Fixed some metrics in the view
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@61 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/view/impl/StonePainter.java')
-rw-r--r-- | src/jrummikub/view/impl/StonePainter.java | 111 |
1 files changed, 55 insertions, 56 deletions
diff --git a/src/jrummikub/view/impl/StonePainter.java b/src/jrummikub/view/impl/StonePainter.java index f873f2d..ab523a7 100644 --- a/src/jrummikub/view/impl/StonePainter.java +++ b/src/jrummikub/view/impl/StonePainter.java @@ -5,6 +5,7 @@ import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; +import java.awt.Rectangle; import java.awt.Stroke; import java.awt.geom.GeneralPath; import java.awt.geom.Rectangle2D; @@ -26,6 +27,7 @@ class StonePainter { private static final float BRIGHTER_SCALE = 1.15f; + public static final float WIDTH_SCALE = 1 / DEFAULT_WIDTH; public static final float HEIGHT_SCALE = ASPECT_RATIO / DEFAULT_WIDTH; private float scale; @@ -91,121 +93,118 @@ class StonePainter { this.scale = scale; } - private void paintStoneBackground(Graphics2D g, int x, int y, int width, - int height, Color background) { + private void paintStoneBackground(Graphics2D g, Rectangle r, Color background) { // Paint background g.setColor(background); - g.fillRect(x, y, width, height); + g.fillRect(r.x, r.y, r.width, r.height); // Paint bevel border g.setColor(brighter(brighter(background))); - g.fillRect(x, y, 1, height); + g.fillRect(r.x, r.y, 1, r.height); g.setColor(brighter(background)); - g.fillRect(x + 1, y + 1, 1, height - 2); + g.fillRect(r.x + 1, r.y + 1, 1, r.height - 2); g.setColor(brighter(brighter(background))); - g.fillRect(x, y, width, 1); + g.fillRect(r.x, r.y, r.width, 1); g.setColor(brighter(background)); - g.fillRect(x + 1, y + 1, width - 2, 1); + g.fillRect(r.x + 1, r.y + 1, r.width - 2, 1); g.setColor(background.darker().darker()); - g.fillRect(x + width - 1, y, 1, height); + g.fillRect(r.x + r.width - 1, r.y, 1, r.height); g.setColor(background.darker()); - g.fillRect(x + width - 2, y + 1, 1, height - 2); + g.fillRect(r.x + r.width - 2, r.y + 1, 1, r.height - 2); g.setColor(background.darker().darker()); - g.fillRect(x, y + height - 1, width, 1); + g.fillRect(r.x, r.y + r.height - 1, r.width, 1); g.setColor(background.darker()); - g.fillRect(x + 1, y + height - 2, width - 2, 1); + g.fillRect(r.x + 1, r.y + r.height - 2, r.width - 2, 1); } - private void paintJokerFace(Graphics2D g, int x, int y, int width, int height) { + private void paintJokerFace(Graphics2D g, Rectangle r) { Stroke oldStroke = g.getStroke(); g.setStroke(new BasicStroke(2)); - g.drawOval(x, y, width, height); + g.drawOval(r.x, r.y, r.width, r.height); g.setStroke(new BasicStroke(1)); GeneralPath path = new GeneralPath(); // nose - path.moveTo(x + 0.5f * width, y + 0.45f * height); - path.lineTo(x + 0.53f * width, y + 0.6f * height); - path.lineTo(x + 0.47f * width, y + 0.6f * height); + path.moveTo(r.x + 0.5f * r.width, r.y + 0.45f * r.height); + path.lineTo(r.x + 0.53f * r.width, r.y + 0.6f * r.height); + path.lineTo(r.x + 0.47f * r.width, r.y + 0.6f * r.height); path.closePath(); g.fill(path); path.reset(); // mouth, left - path.moveTo(x + 0.23f * width, y + 0.75f * width); - path.lineTo(x + 0.27f * width, y + 0.65f * width); + path.moveTo(r.x + 0.23f * r.width, r.y + 0.75f * r.width); + path.lineTo(r.x + 0.27f * r.width, r.y + 0.65f * r.width); // mouth, middle - path.moveTo(x + 0.25f * width, y + 0.7f * width); - path.lineTo(x + 0.5f * width, y + 0.8f * width); - path.lineTo(x + 0.75f * width, y + 0.7f * width); + path.moveTo(r.x + 0.25f * r.width, r.y + 0.7f * r.width); + path.lineTo(r.x + 0.5f * r.width, r.y + 0.8f * r.width); + path.lineTo(r.x + 0.75f * r.width, r.y + 0.7f * r.width); // mouth, right - path.moveTo(x + 0.77f * width, y + 0.75f * width); - path.lineTo(x + 0.73f * width, y + 0.65f * width); + path.moveTo(r.x + 0.77f * r.width, r.y + 0.75f * r.width); + path.lineTo(r.x + 0.73f * r.width, r.y + 0.65f * r.width); g.draw(path); path.reset(); // left eye - path.moveTo(x + 0.3f * width, y + 0.41f * height); - path.lineTo(x + 0.375f * width, y + 0.375f * height); - path.lineTo(x + 0.3f * width, y + 0.34f * height); - path.lineTo(x + 0.225f * width, y + 0.375f * height); + path.moveTo(r.x + 0.3f * r.width, r.y + 0.41f * r.height); + path.lineTo(r.x + 0.375f * r.width, r.y + 0.375f * r.height); + path.lineTo(r.x + 0.3f * r.width, r.y + 0.34f * r.height); + path.lineTo(r.x + 0.225f * r.width, r.y + 0.375f * r.height); path.closePath(); g.draw(path); path.reset(); // right eye - path.moveTo(x + 0.7f * width, y + 0.41f * height); - path.lineTo(x + 0.625f * width, y + 0.375f * height); - path.lineTo(x + 0.7f * width, y + 0.34f * height); - path.lineTo(x + 0.775f * width, y + 0.375f * height); + path.moveTo(r.x + 0.7f * r.width, r.y + 0.41f * r.height); + path.lineTo(r.x + 0.625f * r.width, r.y + 0.375f * r.height); + path.lineTo(r.x + 0.7f * r.width, r.y + 0.34f * r.height); + path.lineTo(r.x + 0.775f * r.width, r.y + 0.375f * r.height); path.closePath(); g.draw(path); g.setStroke(oldStroke); } - private void paintJoker(Graphics2D g, int x, int y, int width, int height, - Color color) { - int faceSize = even(FACE_WIDTH * width); - int pos = y + (int) (TEXT_POS * height); + private void paintJoker(Graphics2D g, Rectangle r, Color color) { + int faceSize = even(FACE_WIDTH * r.width); + int pos = r.y + (int) (TEXT_POS * r.height); g.setColor(color); - paintJokerFace(g, x + width / 2 - faceSize / 2, pos - faceSize / 2, - faceSize, faceSize); + paintJokerFace(g, new Rectangle(r.x + r.width / 2 - faceSize / 2, pos + - faceSize / 2, faceSize, faceSize)); } - private void paintStoneNumber(Graphics2D g, int x, int y, int width, - int height, Color color, int v) { - int pos = y + (int) (TEXT_POS * height); + private void paintStoneNumber(Graphics2D g, Rectangle r, Color color, int v) { + int pos = r.y + (int) (TEXT_POS * r.height); - g.setFont(new Font("SansSerif", Font.BOLD, height / 4)); + g.setFont(new Font("SansSerif", Font.BOLD, r.height / 4)); FontMetrics fm = g.getFontMetrics(); String value = Integer.toString(v); Rectangle2D stringRect = fm.getStringBounds(value, g); g.setColor(color.darker()); - g.drawString(value, (int) (x + width / 2 - stringRect.getWidth() / 2) + 1, + g.drawString(value, + (int) (r.x + r.width / 2 - stringRect.getWidth() / 2) + 1, pos + (fm.getAscent() - fm.getDescent()) / 2 + 1); g.setColor(color); - g.drawString(value, (int) (x + 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, int x, int y, int width, int height, - Color background) { - int size = even(width * CIRCLE_WIDTH); - int pos = y + (int) (CIRCLE_POS * height); + private void paintCircle(Graphics2D g, Rectangle r, Color background) { + int size = even(r.width * CIRCLE_WIDTH); + int pos = r.y + (int) (CIRCLE_POS * r.height); // Paint circle g.setColor(background.darker()); - g.drawArc(x + 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) (x + width / 2 - size / 2), pos - size / 2, size, size, + g.drawArc((int) (r.x + r.width / 2 - size / 2), pos - size / 2, size, size, -130, 170); } @@ -214,21 +213,21 @@ class StonePainter { int width = getStoneWidth(); int height = getStoneHeight(); - int x = (int) (p.getX() * width); - int y = (int) (p.getY() * height); + Rectangle rect = new Rectangle((int) (p.getX() * width), + (int) (p.getY() * height), width, height); - paintStoneBackground(g, x, y, width, height, background); + paintStoneBackground(g, rect, background); Color color = getColor(stone.getColor()); if (selected) color = color.darker(); if (stone.isJoker()) { - paintJoker(g, x, y, width, height, color); + paintJoker(g, rect, color); } else { - paintStoneNumber(g, x, y, width, height, color, stone.getValue()); + paintStoneNumber(g, rect, color, stone.getValue()); } - paintCircle(g, x, y, width, height, background); + paintCircle(g, rect, background); } } |