X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FTextElementHandler.java;h=f7dd3a0fda9f66aa675a6fcc7d31ac0f9f801db2;hb=271b16d9670ad5f20a2ca12d0c67f15390cddb54;hp=192b0ea5d09588c783561dc1133d5ad571af5823;hpb=7bc4de702166fe57dd45b7f161847e6d21d83bb4;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextElementHandler.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextElementHandler.java index 192b0ea5d..f7dd3a0fd 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextElementHandler.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/elements/TextElementHandler.java @@ -11,10 +11,8 @@ *******************************************************************************/ package org.simantics.diagram.elements; +import java.awt.Color; import java.awt.Font; -import java.awt.font.FontRenderContext; -import java.awt.font.TextLayout; -import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import org.simantics.g2d.element.ElementHints; @@ -56,16 +54,23 @@ public class TextElementHandler extends TextElementNoBounds implements InternalS double paddingX, double paddingY, boolean editable, double scale) { super(originX, originY, horizontalAlignment, borderWidth, paddingX, paddingY, editable, scale); } + + public TextElementHandler(double originX, double originY, Alignment horizontalAlignment, + Alignment verticalAlignment, double borderWidth, double paddingX, double paddingY, boolean editable, + double scale) { + super(originX, originY, horizontalAlignment, verticalAlignment, borderWidth, paddingX, paddingY, editable, scale); + } @Override public Rectangle2D getBounds(IElement e, Rectangle2D size) { - return calculateBounds(e, size, horizontalAlignment, scale, paddingX, paddingY); + return calculateBounds(e, size, horizontalAlignment, verticalAlignment, scale, paddingX, paddingY); } public static Rectangle2D calculateBounds( IElement e, Rectangle2D size, Alignment horizontalAlignment, + Alignment verticalAlignment, double scale, double paddingX, double paddingY) { @@ -83,16 +88,16 @@ public class TextElementHandler extends TextElementNoBounds implements InternalS String text = e.getHint(ElementHints.KEY_TEXT); Font font = e.getHint(ElementHints.KEY_FONT); if(text == null || font == null) - size.setFrame(0, 0, 0, 0); + size.setFrame(0, 0, 0, 0); else { - FontRenderContext FRC = new FontRenderContext(new AffineTransform(), true, true); - TextLayout tl = new TextLayout(text, font, FRC); - Rectangle2D bounds = tl.getLogicalHighlightShape(0, text.length()).getBounds2D(); - size.setFrame( - getAlignedXCoordinate(bounds, horizontalAlignment) * scale - paddingX, - bounds.getY() * scale -paddingY, - bounds.getWidth()* scale + paddingX + paddingX, - bounds.getHeight()* scale + paddingY + paddingY); + TextNode n= new TextNode(); + n.init(text, font, Color.black, 0.0, 0.0, scale); + n.setHorizontalAlignment((byte)horizontalAlignment.ordinal()); + n.setVerticalAlignment((byte)verticalAlignment.ordinal()); + + Rectangle2D r = n.getBoundsInLocal(); + size.setFrame(r); + return r; } } return size;