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=a39ef4f5790ccd7556d976350d6883c8818a7277;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;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 a39ef4f57..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; @@ -52,16 +50,27 @@ public class TextElementHandler extends TextElementNoBounds implements InternalS super(originX, originY, horizontalAlignment, borderWidth, paddingX, paddingY, editable); } + public TextElementHandler(double originX, double originY, Alignment horizontalAlignment, double borderWidth, + 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 + @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) { @@ -79,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;