From 5a0be3261a52f6a0849941283487d08212a35983 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 29 Apr 2011 01:16:25 +0200 Subject: [PATCH] Fix some off-by-one painting problems git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@15 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/Board.java | 12 ++++++++++-- src/jrummikub/view/PlayerPanel.java | 6 ++---- src/jrummikub/view/StonePainter.java | 5 +++-- src/jrummikub/view/View.java | 4 +++- src/jrummikub/view/resource/wood.png | Bin 35308 -> 17920 bytes 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/jrummikub/view/Board.java b/src/jrummikub/view/Board.java index d0a3173..5fc0390 100644 --- a/src/jrummikub/view/Board.java +++ b/src/jrummikub/view/Board.java @@ -2,6 +2,7 @@ package jrummikub.view; import java.awt.Color; import java.awt.Graphics; +import java.awt.Insets; import javax.swing.ImageIcon; import javax.swing.JPanel; @@ -21,8 +22,15 @@ public class Board extends JPanel implements IBoard { @Override protected void paintComponent(Graphics g) { - for(int x = 0; x < getWidth(); x += background.getIconWidth()) { - background.paintIcon(this, g, x, 0); + Insets insets = getInsets(); + int x = insets.left, y = insets.top, width = getWidth()-insets.left-insets.right, height = getHeight()-insets.top-insets.bottom; + g = g.create(x, y, width, height); + + for(int xpos = 0; xpos < width; xpos += background.getIconWidth()) { + background.paintIcon(this, g, xpos, 0); + } + for(int xpos = -32; xpos < width; xpos += background.getIconWidth()) { + background.paintIcon(this, g, xpos, 75); } // TODO Rest of painting code diff --git a/src/jrummikub/view/PlayerPanel.java b/src/jrummikub/view/PlayerPanel.java index 1688d7c..e9ffff3 100644 --- a/src/jrummikub/view/PlayerPanel.java +++ b/src/jrummikub/view/PlayerPanel.java @@ -65,7 +65,7 @@ public class PlayerPanel extends JPanel implements IPlayerPanel { layout.setConstraints(currentPlayerNameLabel, c); panel.add(currentPlayerNameLabel); - sortByNumberButton = new JButton("Sort by
number"); + sortByNumberButton = new JButton("
Sort by
number"); sortByNumberButton.setPreferredSize(new Dimension(85, 50)); c.gridwidth = GridBagConstraints.RELATIVE; c.gridheight = GridBagConstraints.REMAINDER; @@ -73,14 +73,13 @@ public class PlayerPanel extends JPanel implements IPlayerPanel { layout.setConstraints(sortByNumberButton, c); panel.add(sortByNumberButton); - sortByColorButton = new JButton("Sort by
color"); + sortByColorButton = new JButton("
Sort by
color"); sortByColorButton.setPreferredSize(new Dimension(85, 50)); c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(15, 5, 20, 0); layout.setConstraints(sortByColorButton, c); panel.add(sortByColorButton); - return panel; } @@ -118,7 +117,6 @@ public class PlayerPanel extends JPanel implements IPlayerPanel { GridBagConstraints c = new GridBagConstraints(); setLayout(layout); - setBorder(new CustomBorder(Color.BLACK, 1, 0, 0, 0)); setBackground(Color.LIGHT_GRAY); JPanel leftPanel = createLeftPanel(); diff --git a/src/jrummikub/view/StonePainter.java b/src/jrummikub/view/StonePainter.java index dbdf3c8..8b104df 100644 --- a/src/jrummikub/view/StonePainter.java +++ b/src/jrummikub/view/StonePainter.java @@ -18,7 +18,7 @@ class StonePainter { private static final Color BACKGROUND_COLOR = new Color(0.9f, 0.9f, 0.6f); - public static final float BOARD_SCALE = 75.0f/DEFAULT_WIDTH*ASPECT_RATIO; + public static final float BOARD_SCALE = 75.0f*ASPECT_RATIO/DEFAULT_WIDTH; private static Color getColor(StoneColor color) { @@ -43,7 +43,7 @@ class StonePainter { } int width = (int)(DEFAULT_WIDTH*scale); - int height = (int)(width/ASPECT_RATIO); + int height = (int)(DEFAULT_WIDTH*scale/ASPECT_RATIO); int xpos = (int)(x*width); int ypos = (int)(y*height); @@ -84,6 +84,7 @@ class StonePainter { g.setColor(getColor(stone.getColor())); g.drawString(value, (int)(xpos+width/2-stringRect.getWidth()/2), ypos+height/4+(fm.getAscent()-fm.getDescent())/2); + // Paint circle g.setColor(BACKGROUND_COLOR.darker()); g.drawArc((int)(xpos+width/2-width*CIRCLE_WIDTH/2), (int)(ypos+height*0.65f-width*CIRCLE_WIDTH/2), (int)(width*CIRCLE_WIDTH), (int)(width*CIRCLE_WIDTH), 50, 170); diff --git a/src/jrummikub/view/View.java b/src/jrummikub/view/View.java index e2fd037..65e26b5 100644 --- a/src/jrummikub/view/View.java +++ b/src/jrummikub/view/View.java @@ -1,6 +1,7 @@ package jrummikub.view; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Dimension; import javax.swing.JFrame; @@ -35,7 +36,8 @@ public class View extends JFrame implements IView { add(table, BorderLayout.CENTER); playerPanel = new PlayerPanel(); - playerPanel.setPreferredSize(new Dimension(0, PLAYER_PANEL_HEIGHT)); + playerPanel.setBorder(new CustomBorder(Color.BLACK, 1, 0, 0, 0)); + playerPanel.setPreferredSize(new Dimension(0, PLAYER_PANEL_HEIGHT+1)); add(playerPanel, BorderLayout.SOUTH); } diff --git a/src/jrummikub/view/resource/wood.png b/src/jrummikub/view/resource/wood.png index 424ec6d0cc14cf6c588a30ff098e9f122f7b6162..ed9cf147a9e2f33934e8718e2a974afbeb6800ca 100644 GIT binary patch delta 7195 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