From e08301c599a383107211d6aa051f4c42b0c9b250 Mon Sep 17 00:00:00 2001 From: ?? ? <ulysseskao@ximple.com.tw> Date: Tue, 12 Aug 2008 15:49:30 +0800 Subject: [PATCH] update for EOFM-144 --- xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-) diff --git a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java index 79ca5eb..28aa8e5 100644 --- a/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java +++ b/xdgnjobs/ximple-dgnio/src/main/java/com/ximple/io/dgn7/TextElement.java @@ -12,6 +12,7 @@ import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.CoordinateList; import com.ximple.util.DgnUtility; @@ -230,6 +231,47 @@ return factory.createPoint(getUserOrigin()); } + public Geometry toAnchorGeometry(GeometryFactory factory) + { + if (getText() == null) + { + return factory.createMultiPoint(new Coordinate[] {}); + } + + return factory.createMultiPoint(toAnchorCoordinates()); + } + + public Coordinate[] toAnchorCoordinates() + { + CoordinateList result = new CoordinateList(); + int len = getText().trim().length(); + if (len == 0) return result.toCoordinateArray(); + + double width = getUserWidth(); + double height = getUserHeight(); + double angle = Math.toRadians(getRotationAngle()); + + AffineTransform at = new AffineTransform(); + at.translate(width, height); + Coordinate p = getOrigin(); + at.setToRotation(angle, p.x, p.y); + at.scale(1, 1); + + for (int i = 0; i < len; i++) + { + double[] srcPt = new double[2]; + double[] dstPt = new double[2]; + + srcPt[0] = p.x + width * i; + srcPt[1] = p.y; + + at.transform(srcPt, 0, dstPt, 0, 1); + result.add(new Coordinate(dstPt[0], dstPt[1]), true); + } + + return result.toCoordinateArray(); + } + private double getUserWidth() { int just = getJustification(); -- Gitblit v0.0.0-SNAPSHOT