[Jrisk-cvs] SF.net SVN: domination-code:[2661] Domination/swingUI/src/net/yura
Brought to you by:
yuranet
|
From: <yu...@us...> - 2025-03-08 13:52:21
|
Revision: 2661
http://sourceforge.net/p/domination/code/2661
Author: yuranet
Date: 2025-03-08 13:52:18 +0000 (Sat, 08 Mar 2025)
Log Message:
-----------
outline in text to make it more readable
Modified Paths:
--------------
Domination/swingUI/src/net/yura/domination/guishared/PicturePanel.java
Domination/swingUI/src/net/yura/domination/ui/flashgui/CardsDialog.java
Domination/swingUI/src/net/yura/domination/ui/flashgui/MissionDialog.java
Domination/swingUI/src/net/yura/swing/GraphicsUtil.java
Modified: Domination/swingUI/src/net/yura/domination/guishared/PicturePanel.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/guishared/PicturePanel.java 2025-03-07 14:55:04 UTC (rev 2660)
+++ Domination/swingUI/src/net/yura/domination/guishared/PicturePanel.java 2025-03-08 13:52:18 UTC (rev 2661)
@@ -27,10 +27,8 @@
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
-import java.util.prefs.Preferences;
import net.yura.domination.engine.ColorUtil;
import net.yura.domination.engine.Risk;
-import net.yura.domination.engine.RiskSettings;
import net.yura.domination.engine.RiskUtil;
import net.yura.domination.engine.core.Card;
import net.yura.domination.engine.core.Country;
@@ -423,6 +421,11 @@
public void drawArmy(Graphics2D g2, int countryOwnerColor, int armies, int x, int y, int ballSize, Player capital) {
int r = ballSize / 2;
+ String noa = String.valueOf(armies);
+ Color textColor = new Color(ColorUtil.getTextColorFor(countryOwnerColor));
+ int textX = x - (g2.getFontMetrics().stringWidth(noa) / 2);
+ int textY = y + (g2.getFontMetrics().getAscent() * 2 / 5);
+
Image icon = RiskUIUtil.getIconForColor(countryOwnerColor);
if (icon == null) {
g2.setColor(new Color(countryOwnerColor));
@@ -430,19 +433,20 @@
ellipse.setFrame( x-r , y-r , ballSize, ballSize);
g2.fill(ellipse);
//g.fillOval( t.getX()-r , t.getY()-r, (r*2), (r*2) );
+
+ g2.setColor(textColor);
+ g2.drawString(noa, textX, textY);
}
else {
int w = (int)(ballSize * 1.1);
int h = (int)(icon.getHeight(this) * (w / (double)icon.getWidth(this)));
g2.drawImage(icon, x-(w/2), y-(w/2), w, h, this);
+
+ g2.setColor(textColor);
+ Color outlineColor = Color.WHITE.equals(textColor) ? Color.BLACK : Color.WHITE;
+ GraphicsUtil.drawStringWithOutline(g2, new TextLayout(noa, g2.getFont(), g2.getFontRenderContext()), textX, textY, outlineColor);
}
- g2.setColor(new Color(ColorUtil.getTextColorFor(countryOwnerColor)));
- String noa = String.valueOf( armies );
- int w2 = g2.getFontMetrics().stringWidth(noa) / 2;
- int h2 = g2.getFontMetrics().getAscent()*2/5 ;
- g2.drawString( String.valueOf( noa ) , x-w2, y+h2 );
-
if (capital != null) {
int stroke = ballSize / 10;
Stroke old = g2.getStroke();
Modified: Domination/swingUI/src/net/yura/domination/ui/flashgui/CardsDialog.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/ui/flashgui/CardsDialog.java 2025-03-07 14:55:04 UTC (rev 2660)
+++ Domination/swingUI/src/net/yura/domination/ui/flashgui/CardsDialog.java 2025-03-08 13:52:18 UTC (rev 2661)
@@ -340,7 +340,7 @@
g2.setColor( GameFrame.UI_COLOR );
- GraphicsUtil.drawStringCenteredAt(g2, text, cardWidth / 2, 5, cardWidth - 10);
+ GraphicsUtil.drawStringCenteredAt(g2, text, cardWidth / 2, 5, cardWidth - 10, null);
Image i = getCountryImage( ((Country)card.getCountry()).getColor() );
Modified: Domination/swingUI/src/net/yura/domination/ui/flashgui/MissionDialog.java
===================================================================
--- Domination/swingUI/src/net/yura/domination/ui/flashgui/MissionDialog.java 2025-03-07 14:55:04 UTC (rev 2660)
+++ Domination/swingUI/src/net/yura/domination/ui/flashgui/MissionDialog.java 2025-03-08 13:52:18 UTC (rev 2661)
@@ -2,6 +2,7 @@
package net.yura.domination.ui.flashgui;
+import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Dimension;
@@ -116,7 +117,7 @@
g.setFont(font);
g2.setColor( GameFrame.UI_COLOR );
- GraphicsUtil.drawStringCenteredAt(g, text, RiskUIUtil.unscale(getWidth() / 2), 70, RiskUIUtil.unscale(getWidth()) - 50);
+ GraphicsUtil.drawStringCenteredAt(g, text, RiskUIUtil.unscale(getWidth() / 2), 70, RiskUIUtil.unscale(getWidth()) - 50, Color.WHITE);
}
}
Modified: Domination/swingUI/src/net/yura/swing/GraphicsUtil.java
===================================================================
--- Domination/swingUI/src/net/yura/swing/GraphicsUtil.java 2025-03-07 14:55:04 UTC (rev 2660)
+++ Domination/swingUI/src/net/yura/swing/GraphicsUtil.java 2025-03-08 13:52:18 UTC (rev 2661)
@@ -1,5 +1,7 @@
package net.yura.swing;
+import java.awt.BasicStroke;
+import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
@@ -10,11 +12,14 @@
import java.awt.Insets;
import java.awt.MediaTracker;
import java.awt.Polygon;
+import java.awt.Shape;
+import java.awt.Stroke;
import java.awt.Toolkit;
import java.awt.font.FontRenderContext;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextAttribute;
import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
@@ -146,7 +151,7 @@
BasicGraphicsUtils.drawString(g, text, ch, GraphicsUtil.scale(x) - metrics.stringWidth(text) / 2, GraphicsUtil.scale(y));
}
- public static void drawStringCenteredAt(Graphics g, String text, int centerX, int startY, int wrapWidth) {
+ public static void drawStringCenteredAt(Graphics g, String text, int centerX, int startY, int wrapWidth, Color outline) {
AttributedString as = new AttributedString(text);
as.addAttribute(TextAttribute.FONT, g.getFont());
@@ -164,11 +169,34 @@
TextLayout tl;
while (lbm.getPosition() < text.length()) {
tl = lbm.nextLayout(width);
- tl.draw((Graphics2D)g, (float)(x - tl.getBounds().getWidth() / 2), y += tl.getAscent());
+ float textX = (float)(x - tl.getBounds().getWidth() / 2);
+ float textY = y += tl.getAscent();
+ if (outline == null) {
+ tl.draw((Graphics2D)g, textX, textY);
+ }
+ else {
+ drawStringWithOutline((Graphics2D)g, tl, textX, textY, outline);
+ }
y += tl.getDescent() + tl.getLeading();
}
}
+ public static void drawStringWithOutline(Graphics2D g2, TextLayout tl, float x, float y, Color outlineColor) {
+ Color textColor = g2.getColor();
+ AffineTransform transform = new AffineTransform();
+ transform.setToTranslation(x, y);
+ Shape outline = tl.getOutline(transform);
+ Stroke oldStroke = g2.getStroke();
+
+ g2.setStroke(new BasicStroke(2.0f));
+ g2.setColor(outlineColor);
+ g2.draw(outline);
+
+ g2.setColor(textColor);
+ g2.setStroke(oldStroke);
+ g2.fill(outline);
+ }
+
private static double getDisplayDensity() {
try {
return ((Double)Class.forName("javax.microedition.midlet.ApplicationManager")
|