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 | } |