diff options
| -rwxr-xr-x | src/com/fourisland/fourpuzzle/Display.java | 22 | ||||
| -rwxr-xr-x | src/com/fourisland/fourpuzzle/window/ChoiceWindow.java | 9 | ||||
| -rw-r--r-- | src/com/fourisland/fourpuzzle/window/MessageWindow.java | 12 |
3 files changed, 27 insertions, 16 deletions
| diff --git a/src/com/fourisland/fourpuzzle/Display.java b/src/com/fourisland/fourpuzzle/Display.java index 0a9bfe1..a265806 100755 --- a/src/com/fourisland/fourpuzzle/Display.java +++ b/src/com/fourisland/fourpuzzle/Display.java | |||
| @@ -14,6 +14,7 @@ import com.fourisland.fourpuzzle.transition.TransitionUnsupportedException; | |||
| 14 | import com.fourisland.fourpuzzle.util.Renderable; | 14 | import com.fourisland.fourpuzzle.util.Renderable; |
| 15 | import java.awt.Font; | 15 | import java.awt.Font; |
| 16 | import java.awt.FontFormatException; | 16 | import java.awt.FontFormatException; |
| 17 | import java.awt.FontMetrics; | ||
| 17 | import java.awt.Graphics2D; | 18 | import java.awt.Graphics2D; |
| 18 | import java.awt.Image; | 19 | import java.awt.Image; |
| 19 | import java.awt.Toolkit; | 20 | import java.awt.Toolkit; |
| @@ -227,6 +228,16 @@ public class Display { | |||
| 227 | g.setFont(theFont); | 228 | g.setFont(theFont); |
| 228 | } | 229 | } |
| 229 | 230 | ||
| 231 | public static Font getFont() | ||
| 232 | { | ||
| 233 | if (theFont == null) | ||
| 234 | { | ||
| 235 | initalizeFont(); | ||
| 236 | } | ||
| 237 | |||
| 238 | return theFont; | ||
| 239 | } | ||
| 240 | |||
| 230 | public static BufferedImage createCanvas(int width, int height) | 241 | public static BufferedImage createCanvas(int width, int height) |
| 231 | { | 242 | { |
| 232 | BufferedImage temp = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); | 243 | BufferedImage temp = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); |
| @@ -234,4 +245,15 @@ public class Display { | |||
| 234 | return temp; | 245 | return temp; |
| 235 | } | 246 | } |
| 236 | 247 | ||
| 248 | private static FontMetrics fontMetrics = null; | ||
| 249 | public static FontMetrics getFontMetrics() | ||
| 250 | { | ||
| 251 | if (fontMetrics == null) | ||
| 252 | { | ||
| 253 | fontMetrics = createCanvas(1, 1).createGraphics().getFontMetrics(getFont()); | ||
| 254 | } | ||
| 255 | |||
| 256 | return fontMetrics; | ||
| 257 | } | ||
| 258 | |||
| 237 | } | 259 | } |
| diff --git a/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java b/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java index b2a0af7..ef57226 100755 --- a/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java +++ b/src/com/fourisland/fourpuzzle/window/ChoiceWindow.java | |||
| @@ -39,18 +39,15 @@ public class ChoiceWindow implements Renderable { | |||
| 39 | numChoices = choices.size(); | 39 | numChoices = choices.size(); |
| 40 | this.center = center; | 40 | this.center = center; |
| 41 | 41 | ||
| 42 | Graphics2D g3 = Display.createCanvas(1, 1).createGraphics(); | ||
| 43 | Display.setFont(g3); | ||
| 44 | |||
| 45 | for (String choice : choices) | 42 | for (String choice : choices) |
| 46 | { | 43 | { |
| 47 | int l = g3.getFontMetrics().stringWidth(choice); | 44 | int l = Display.getFontMetrics().stringWidth(choice); |
| 48 | if (l > getWidth()) | 45 | if (l > getWidth()) |
| 49 | { | 46 | { |
| 50 | width = l; | 47 | width = l; |
| 51 | } | 48 | } |
| 52 | 49 | ||
| 53 | height += g3.getFontMetrics().getHeight() + SPACER; | 50 | height += Display.getFontMetrics().getHeight() + SPACER; |
| 54 | } | 51 | } |
| 55 | 52 | ||
| 56 | cacheBase = Window.Default.getImage(width, height); | 53 | cacheBase = Window.Default.getImage(width, height); |
| @@ -85,7 +82,7 @@ public class ChoiceWindow implements Renderable { | |||
| 85 | g2.setPaint(new TexturePaint(SystemGraphic.getTextColor(), new Rectangle(tx, ty, fw, fh))); | 82 | g2.setPaint(new TexturePaint(SystemGraphic.getTextColor(), new Rectangle(tx, ty, fw, fh))); |
| 86 | g2.drawString(choice, tx, ty); | 83 | g2.drawString(choice, tx, ty); |
| 87 | 84 | ||
| 88 | ty+=(SPACER+g2.getFontMetrics().getHeight()); | 85 | ty+=(SPACER+fh); |
| 89 | } | 86 | } |
| 90 | } | 87 | } |
| 91 | 88 | ||
| diff --git a/src/com/fourisland/fourpuzzle/window/MessageWindow.java b/src/com/fourisland/fourpuzzle/window/MessageWindow.java index 595fb55..fb90f04 100644 --- a/src/com/fourisland/fourpuzzle/window/MessageWindow.java +++ b/src/com/fourisland/fourpuzzle/window/MessageWindow.java | |||
| @@ -28,15 +28,7 @@ import java.util.concurrent.CountDownLatch; | |||
| 28 | public class MessageWindow implements Renderable { | 28 | public class MessageWindow implements Renderable { |
| 29 | 29 | ||
| 30 | private static final int SPACER = 4; | 30 | private static final int SPACER = 4; |
| 31 | private static final int HEIGHT; | 31 | private static final int HEIGHT = (4*(Display.getFontMetrics().getHeight()+SPACER)); |
| 32 | |||
| 33 | static | ||
| 34 | { | ||
| 35 | BufferedImage d = Display.createCanvas(1, 1); | ||
| 36 | Display.setFont(d.createGraphics()); | ||
| 37 | |||
| 38 | HEIGHT = 3*(d.createGraphics().getFontMetrics().getHeight()+SPACER); | ||
| 39 | } | ||
| 40 | 32 | ||
| 41 | String message; | 33 | String message; |
| 42 | private volatile List<String> messages; | 34 | private volatile List<String> messages; |
| @@ -191,7 +183,7 @@ public class MessageWindow implements Renderable { | |||
| 191 | g2.setPaint(new TexturePaint(SystemGraphic.getTextColor(), new Rectangle(tx, ty, fw, fh))); | 183 | g2.setPaint(new TexturePaint(SystemGraphic.getTextColor(), new Rectangle(tx, ty, fw, fh))); |
| 192 | g2.drawString(message.substring(0, Math.min(toPrint, message.length())), tx, ty); | 184 | g2.drawString(message.substring(0, Math.min(toPrint, message.length())), tx, ty); |
| 193 | 185 | ||
| 194 | ty+=(SPACER+g2.getFontMetrics().getHeight()); | 186 | ty+=(SPACER+fh); |
| 195 | 187 | ||
| 196 | toPrint -= Math.min(toPrint, message.length()); | 188 | toPrint -= Math.min(toPrint, message.length()); |
| 197 | } | 189 | } |
