in code/richediting/src/main/kotlin/org/fbme/ide/richediting/adapters/fbnetwork/FBConnectionPathSynchronizer.kt [266:296]
override fun setPath(connection: NetworkConnectionView, path: FBConnectionPath) {
val sourcePosition = path.sourcePosition
val targetPosition = path.targetPosition
val fbConnectionPathWithoutOffset = getFBConnectionPathWithoutOffset(connection, path)
val modelSourcePosition = Point(
(viewpoint.translateFromEditorX(sourcePosition.x) / scale).toInt(),
(viewpoint.translateFromEditorY(sourcePosition.y) / scale).toInt()
)
val modelTargetPosition = Point(
(viewpoint.translateFromEditorX(targetPosition.x) / scale).toInt(),
(viewpoint.translateFromEditorY(targetPosition.y) / scale).toInt()
)
val bendPoints = FBConnectionController.deepCopy(fbConnectionPathWithoutOffset.bendPoints)
val newBendPoints = bendPoints.map { point ->
val x = (viewpoint.translateFromEditorX(point.x) / scale).toInt()
val y = (viewpoint.translateFromEditorY(point.y) / scale).toInt()
Point(x, y)
}.toMutableList()
val fbConnectionPath = FBConnectionPath(modelSourcePosition, modelTargetPosition, newBendPoints)
val dx1 = fbConnectionPath.x1 - modelSourcePosition.x
val dy = fbConnectionPath.y - modelSourcePosition.y
val dx2 = modelTargetPosition.x - fbConnectionPath.x2
if (path.pathKind == ConnectionPath.Kind.MoreThanFour) {
connection.setPath(LongConnectionPath(dx1, dy, dx2, fbConnectionPath.bendPoints))
} else {
connection.setPath(ConnectionPath(fbConnectionPath.pathKind, dx1, dy, dx2))
}
}