Merge pull request #889 from wolsen/bug/880

Add extra spacing for stability information text
This commit is contained in:
Joe Pfeiffer 2021-02-05 13:21:15 -07:00 committed by GitHub
commit 5e0304126e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,6 +5,7 @@ import static net.sf.openrocket.util.Chars.THETA;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.font.GlyphVector; import java.awt.font.GlyphVector;
@ -34,9 +35,8 @@ public class RocketInfo implements FigureElement {
private static final int MARGIN = 8; private static final int MARGIN = 8;
// Font to use // Font to use
private static final Font FONT = new Font(Font.SANS_SERIF, Font.PLAIN, 11); private Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 11);
private static final Font SMALLFONT = new Font(Font.SANS_SERIF, Font.PLAIN, 9); private Font smallFont = new Font(Font.SANS_SERIF, Font.PLAIN, 9);
private final Caret cpCaret = new CPCaret(0,0); private final Caret cpCaret = new CPCaret(0,0);
private final Caret cgCaret = new CGCaret(0,0); private final Caret cgCaret = new CGCaret(0,0);
@ -62,9 +62,6 @@ public class RocketInfo implements FigureElement {
private float x1, x2, y1, y2; private float x1, x2, y1, y2;
public RocketInfo(FlightConfiguration configuration) { public RocketInfo(FlightConfiguration configuration) {
this.configuration = configuration; this.configuration = configuration;
this.stabilityUnits = UnitGroup.stabilityUnits(configuration); this.stabilityUnits = UnitGroup.stabilityUnits(configuration);
@ -79,9 +76,12 @@ public class RocketInfo implements FigureElement {
@Override @Override
public void paint(Graphics2D myG2, double scale, Rectangle visible) { public void paint(Graphics2D myG2, double scale, Rectangle visible) {
this.g2 = myG2; this.g2 = myG2;
this.line = FONT.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
this.updateFontSizes();
this.line = font.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
myG2.getFontRenderContext()).getHeight() + myG2.getFontRenderContext()).getHeight() +
FONT.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", font.getLineMetrics("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
myG2.getFontRenderContext()).getDescent(); myG2.getFontRenderContext()).getDescent();
x1 = visible.x + MARGIN; x1 = visible.x + MARGIN;
@ -145,9 +145,6 @@ public class RocketInfo implements FigureElement {
this.calculatingData = calc; this.calculatingData = calc;
} }
private void drawMainInfo() { private void drawMainInfo() {
GlyphVector name = createText(configuration.getRocket().getName()); GlyphVector name = createText(configuration.getRocket().getName());
GlyphVector lengthLine = createText( GlyphVector lengthLine = createText(
@ -193,20 +190,22 @@ public class RocketInfo implements FigureElement {
at += " "+THETA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(theta); at += " "+THETA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(theta);
} }
GlyphVector cgValue = createText( GlyphVector cgValue = createText(getCg());
getCg()); GlyphVector cpValue = createText(getCp());
GlyphVector cpValue = createText( GlyphVector stabValue = createText(getStability());
getCp());
GlyphVector stabValue = createText(
getStability());
//// CG: //// CG:
GlyphVector cgText = createText(trans.get("RocketInfo.cgText") +" "); GlyphVector cgText = createText(trans.get("RocketInfo.cgText"));
//// CP: //// CP:
GlyphVector cpText = createText(trans.get("RocketInfo.cpText") +" "); GlyphVector cpText = createText(trans.get("RocketInfo.cpText"));
//// Stability: //// Stability:
GlyphVector stabText = createText(trans.get("RocketInfo.stabText") + " "); GlyphVector stabText = createText(trans.get("RocketInfo.stabText"));
GlyphVector atText = createSmallText(at); GlyphVector atText = createSmallText(at);
// GlyphVector visual bounds drops the spaces, so we'll add them
FontMetrics fontMetrics = g2.getFontMetrics(cgText.getFont());
int spaceWidth = fontMetrics.stringWidth(" ");
Rectangle2D cgRect = cgValue.getVisualBounds(); Rectangle2D cgRect = cgValue.getVisualBounds();
Rectangle2D cpRect = cpValue.getVisualBounds(); Rectangle2D cpRect = cpValue.getVisualBounds();
Rectangle2D cgTextRect = cgText.getVisualBounds(); Rectangle2D cgTextRect = cgText.getVisualBounds();
@ -215,10 +214,11 @@ public class RocketInfo implements FigureElement {
Rectangle2D stabTextRect = stabText.getVisualBounds(); Rectangle2D stabTextRect = stabText.getVisualBounds();
Rectangle2D atTextRect = atText.getVisualBounds(); Rectangle2D atTextRect = atText.getVisualBounds();
double unitWidth = MathUtil.max(cpRect.getWidth(), cgRect.getWidth(), double unitWidth = MathUtil.max(cpRect.getWidth(), cgRect.getWidth(), stabRect.getWidth());
stabRect.getWidth());
double textWidth = Math.max(cpTextRect.getWidth(), cgTextRect.getWidth()); double textWidth = Math.max(cpTextRect.getWidth(), cgTextRect.getWidth());
// Add an extra space worth of width so the text doesn't run into the values
unitWidth = unitWidth + spaceWidth;
g2.setColor(Color.BLACK); g2.setColor(Color.BLACK);
@ -438,16 +438,23 @@ public class RocketInfo implements FigureElement {
return 3*line; return 3*line;
} }
private synchronized void updateFontSizes() {
float size = Application.getPreferences().getRocketInfoFontSize();
// No change necessary as the font is the same size, just use the existing version
if (font.getSize2D() == size) {
return;
}
// Update the font sizes to whatever the currently selected font size is
font = font.deriveFont(size);
smallFont = smallFont.deriveFont((float)(size - 2.0));
}
private GlyphVector createText(String text) { private GlyphVector createText(String text) {
float size=Application.getPreferences().getRocketInfoFontSize(); return font.createGlyphVector(g2.getFontRenderContext(), text);
return (FONT.deriveFont(size)).createGlyphVector(g2.getFontRenderContext(), text);
} }
private GlyphVector createSmallText(String text) { private GlyphVector createSmallText(String text) {
float size=(float) (Application.getPreferences().getRocketInfoFontSize()-2.0); return smallFont.createGlyphVector(g2.getFontRenderContext(), text);
return (SMALLFONT.deriveFont(size)).createGlyphVector(g2.getFontRenderContext(), text);
} }
public void setCurrentConfig(FlightConfiguration newConfig) { public void setCurrentConfig(FlightConfiguration newConfig) {