X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FTextElementHandler.java;fp=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Felements%2FTextElementHandler.java;h=39ca504aabd071d6fc5279405ba9122023dc41ec;hb=0c2820087f01f066d43eff0bacd3e63a87121889;hp=f7dd3a0fda9f66aa675a6fcc7d31ac0f9f801db2;hpb=197f65594b46aaa087ac4d9bb6cb5514376377ca;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 f7dd3a0fd..39ca504aa 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 @@ -63,10 +63,10 @@ public class TextElementHandler extends TextElementNoBounds implements InternalS @Override public Rectangle2D getBounds(IElement e, Rectangle2D size) { - return calculateBounds(e, size, horizontalAlignment, verticalAlignment, scale, paddingX, paddingY); + return getBounds(e, size, horizontalAlignment, verticalAlignment, scale, paddingX, paddingY); } - - public static Rectangle2D calculateBounds( + + public static Rectangle2D getBounds( IElement e, Rectangle2D size, Alignment horizontalAlignment, @@ -74,32 +74,46 @@ public class TextElementHandler extends TextElementNoBounds implements InternalS double scale, double paddingX, double paddingY) { - TextNode node = (TextNode) e.getHint(SG_NODE); Rectangle2D b = e.getHint(ElementHints.KEY_BOUNDS); - + if (size == null) size = new Rectangle2D.Double(); if (node != null) size.setRect(node.getBoundsInLocal()); else if(b != null && ElementUtils.getHintOrDefault(e, ElementHints.KEY_RESIZABLE, false)) size.setRect(b); - else { - 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); - else { - 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; - } - } + else calculateBounds(e, size, horizontalAlignment, verticalAlignment, scale, paddingX, paddingY); + + return size; + } + + public static Rectangle2D calculateBounds( + IElement e, + Rectangle2D size, + Alignment horizontalAlignment, + Alignment verticalAlignment, + double scale, + double paddingX, + double paddingY) { + + if (size == null) + size = new Rectangle2D.Double(); + + 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); + } else { + 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()); + n.setPadding(paddingX, paddingY); + Rectangle2D r = n.getBoundsInLocal(); + size.setFrame(r); + return r; + } return size; }