Bug 541129 - Connection Midpoint calculation fails for big diagrams
* Use long instead of int for calculation
Change-Id: I28f5b946d226972241ae366a7315932751da7583
diff --git a/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java b/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
index f3e4afe..b957d42 100644
--- a/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
+++ b/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
@@ -732,8 +732,8 @@
}
private static double getDistance(java.awt.Point start, java.awt.Point end) {
- int xDist = end.x - start.x;
- int yDist = end.y - start.y;
+ long xDist = end.x - start.x;
+ long yDist = end.y - start.y;
double ret = Math.sqrt((xDist * xDist) + (yDist * yDist));
return ret;
}
diff --git a/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java b/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
index 4e2c41b..ed0a690 100644
--- a/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
+++ b/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
@@ -319,4 +319,28 @@
assertEquals(183, midpoint.getX());
assertEquals(145, midpoint.getY());
}
+
+ @Test
+ public void getDistance_bug541129() {
+ Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
+
+ ContainerShape containerShape1 = createService.createContainerShape(diagram, true);
+ Rectangle rectangle1 = createService.createRectangle(containerShape1);
+ gaService.setLocationAndSize(rectangle1, 10, 10, 100, 100);
+ ChopboxAnchor anchor1 = createService.createChopboxAnchor(containerShape1);
+
+ ContainerShape containerShape2 = createService.createContainerShape(diagram, true);
+ Rectangle rectangle2 = createService.createRectangle(containerShape2);
+ gaService.setLocationAndSize(rectangle2, 200000, 200000, 100, 100);
+ ChopboxAnchor anchor2 = createService.createChopboxAnchor(containerShape2);
+
+ FreeFormConnection connection = createService.createFreeFormConnection(diagram);
+ connection.setStart(anchor1);
+ connection.setEnd(anchor2);
+
+ ILocation midpoint = peService.getConnectionMidpoint(connection, 0.5d);
+
+ assertEquals(100055, midpoint.getX());
+ assertEquals(100055, midpoint.getY());
+ }
}