From 102d67271c5608275ad0241599c066815dc26a5d Mon Sep 17 00:00:00 2001 From: matthew16550 Date: Sun, 3 Oct 2021 05:39:53 +1100 Subject: [PATCH] Pass a StringBounder into DriverTextG2d & DriverTextAsPathG2d --- .../ugraphic/g2d/DriverTextAsPathG2d.java | 15 ++++++++------- .../plantuml/ugraphic/g2d/DriverTextG2d.java | 18 +++++++++--------- .../plantuml/ugraphic/g2d/UGraphicG2d.java | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextAsPathG2d.java b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextAsPathG2d.java index d9aacf87c..5c5dd3cb5 100644 --- a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextAsPathG2d.java +++ b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextAsPathG2d.java @@ -48,7 +48,6 @@ import java.awt.geom.Rectangle2D; import net.sourceforge.plantuml.Dimension2DDouble; import net.sourceforge.plantuml.EnsureVisible; -import net.sourceforge.plantuml.FileFormat; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontStyle; @@ -64,9 +63,11 @@ import net.sourceforge.plantuml.ugraphic.color.HColor; public class DriverTextAsPathG2d implements UDriver { private final EnsureVisible visible; + private final StringBounder stringBounder; - public DriverTextAsPathG2d(EnsureVisible visible) { + public DriverTextAsPathG2d(EnsureVisible visible, StringBounder stringBounder) { this.visible = visible; + this.stringBounder = stringBounder; } private static void printFont() { @@ -83,7 +84,7 @@ public class DriverTextAsPathG2d implements UDriver { final FontConfiguration fontConfiguration = shape.getFontConfiguration(); final UFont font = fontConfiguration.getFont().scaled(param.getScale()); - final Dimension2D dimBack = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, shape.getText()); + final Dimension2D dimBack = calculateDimension(font, shape.getText()); if (fontConfiguration.containsStyle(FontStyle.BACKCOLOR)) { final Color extended = mapper.toColor(fontConfiguration.getExtendedColor()); if (extended != null) { @@ -108,14 +109,14 @@ public class DriverTextAsPathG2d implements UDriver { if (extended != null) { g2d.setColor(mapper.toColor(extended)); } - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, shape.getText()); + final Dimension2D dim = calculateDimension(font, shape.getText()); final int ypos = (int) (y + 2.5); g2d.setStroke(new BasicStroke((float) 1)); g2d.drawLine((int) x, ypos, (int) (x + dim.getWidth()), ypos); g2d.setStroke(new BasicStroke()); } if (fontConfiguration.containsStyle(FontStyle.WAVE)) { - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, shape.getText()); + final Dimension2D dim = calculateDimension(font, shape.getText()); final int ypos = (int) (y + 2.5) - 1; final HColor extended = fontConfiguration.getExtendedColor(); if (extended != null) { @@ -127,7 +128,7 @@ public class DriverTextAsPathG2d implements UDriver { } } if (fontConfiguration.containsStyle(FontStyle.STRIKE)) { - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, shape.getText()); + final Dimension2D dim = calculateDimension(font, shape.getText()); final FontMetrics fm = g2d.getFontMetrics(font.getUnderlayingFont()); final int ypos = (int) (y - fm.getDescent() - 0.5); final HColor extended = fontConfiguration.getExtendedColor(); @@ -140,7 +141,7 @@ public class DriverTextAsPathG2d implements UDriver { } } - static public Dimension2D calculateDimension(StringBounder stringBounder, UFont font, String text) { + public Dimension2D calculateDimension(UFont font, String text) { final Dimension2D rect = stringBounder.calculateDimension(font, text); double h = rect.getHeight(); if (h < 10) { diff --git a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextG2d.java b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextG2d.java index 11f49133d..a45c1ed47 100644 --- a/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextG2d.java +++ b/src/net/sourceforge/plantuml/ugraphic/g2d/DriverTextG2d.java @@ -48,7 +48,6 @@ import java.util.List; import net.sourceforge.plantuml.Dimension2DDouble; import net.sourceforge.plantuml.EnsureVisible; -import net.sourceforge.plantuml.FileFormat; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontStyle; import net.sourceforge.plantuml.graphic.StringBounder; @@ -66,9 +65,11 @@ import net.sourceforge.plantuml.ugraphic.color.HColorUtils; public class DriverTextG2d implements UDriver { private final EnsureVisible visible; + private final StringBounder stringBounder; - public DriverTextG2d(EnsureVisible visible) { + public DriverTextG2d(EnsureVisible visible, StringBounder stringBounder) { this.visible = visible; + this.stringBounder = stringBounder; } public void draw(UShape ushape, double x, double y, ColorMapper mapper, UParam param, Graphics2D g2d) { @@ -87,8 +88,7 @@ public class DriverTextG2d implements UDriver { for (StyledString styledString : strings) { final FontConfiguration fc = styledString.getStyle() == FontStyle.BOLD ? fontConfiguration.bold() : fontConfiguration; - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), fc.getFont(), - styledString.getText()); + final Dimension2D dim = calculateDimension(fc.getFont(), styledString.getText()); printSingleText(g2d, fc, styledString.getText(), x, y, mapper, param); x += dim.getWidth(); } @@ -113,7 +113,7 @@ public class DriverTextG2d implements UDriver { } else if (orientation == 0) { - final Dimension2D dimBack = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, text); + final Dimension2D dimBack = calculateDimension(font, text); if (fontConfiguration.containsStyle(FontStyle.BACKCOLOR)) { final Rectangle2D.Double area = new Rectangle2D.Double(x, y - dimBack.getHeight() + 1.5, dimBack.getWidth(), dimBack.getHeight()); @@ -143,14 +143,14 @@ public class DriverTextG2d implements UDriver { if (extended != null) { g2d.setColor(mapper.toColor(extended)); } - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, text); + final Dimension2D dim = calculateDimension(font, text); final int ypos = (int) (y + 2.5); g2d.setStroke(new BasicStroke((float) 1)); g2d.drawLine((int) x, ypos, (int) (x + dim.getWidth()), ypos); g2d.setStroke(new BasicStroke()); } if (fontConfiguration.containsStyle(FontStyle.WAVE)) { - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, text); + final Dimension2D dim = calculateDimension(font, text); final int ypos = (int) (y + 2.5) - 1; if (extended != null) { g2d.setColor(mapper.toColor(extended)); @@ -161,7 +161,7 @@ public class DriverTextG2d implements UDriver { } } if (fontConfiguration.containsStyle(FontStyle.STRIKE)) { - final Dimension2D dim = calculateDimension(FileFormat.PNG.getDefaultStringBounder(), font, text); + final Dimension2D dim = calculateDimension(font, text); final FontMetrics fm = g2d.getFontMetrics(font.getUnderlayingFont()); final int ypos = (int) (y - fm.getDescent() - 0.5); if (extended != null) { @@ -174,7 +174,7 @@ public class DriverTextG2d implements UDriver { } } - static public Dimension2D calculateDimension(StringBounder stringBounder, UFont font, String text) { + public Dimension2D calculateDimension(UFont font, String text) { final Dimension2D rect = stringBounder.calculateDimension(font, text); double h = rect.getHeight(); if (h < 10) { diff --git a/src/net/sourceforge/plantuml/ugraphic/g2d/UGraphicG2d.java b/src/net/sourceforge/plantuml/ugraphic/g2d/UGraphicG2d.java index c8c086691..1322261f9 100644 --- a/src/net/sourceforge/plantuml/ugraphic/g2d/UGraphicG2d.java +++ b/src/net/sourceforge/plantuml/ugraphic/g2d/UGraphicG2d.java @@ -140,9 +140,9 @@ public class UGraphicG2d extends AbstractUGraphic implements EnsureV private void register(double dpiFactor) { registerDriver(URectangle.class, new DriverRectangleG2d(dpiFactor, this)); if (this.hasAffineTransform || dpiFactor != 1.0) { - registerDriver(UText.class, new DriverTextAsPathG2d(this)); + registerDriver(UText.class, new DriverTextAsPathG2d(this, getStringBounder())); } else { - registerDriver(UText.class, new DriverTextG2d(this)); + registerDriver(UText.class, new DriverTextG2d(this, getStringBounder())); } registerDriver(ULine.class, new DriverLineG2d(dpiFactor)); registerDriver(UPixel.class, new DriverPixelG2d());