/** Tests the computation of the absolute position. */ @Test public void getAbsolutePosition() { double u = Math.PI / 180d; Layout layout = new Layout(null); Page page = new Page(PageFormat.defaultValue); layout.addPage(page); GroupFrame frame = createFrameWithChildren(); page.addFrame(frame); // frame Point2f p = frame.getAbsolutePosition(); assertEquals(50, p.x, Delta.DELTA_FLOAT); assertEquals(75, p.y, Delta.DELTA_FLOAT); // child frame GroupFrame child = (GroupFrame) frame.children.get(0); p = child.getAbsolutePosition(); float r = 30; double childX = 50 + 20 * Math.cos(r * u) + 10 * Math.sin(r * u); double childY = 75 - 20 * Math.sin(r * u) + 10 * Math.cos(r * u); assertEquals(childX, p.x, Delta.DELTA_FLOAT_ROUGH); assertEquals(childY, p.y, Delta.DELTA_FLOAT_ROUGH); // child frame of child frame Frame child2 = child.children.get(0); p = child2.getAbsolutePosition(); r += 30; assertEquals( childX + -15 * Math.cos(r * u) + -10 * Math.sin(r * u), p.x, Delta.DELTA_FLOAT_ROUGH); assertEquals( childY - -15 * Math.sin(r * u) + -10 * Math.cos(r * u), p.y, Delta.DELTA_FLOAT_ROUGH); }
public static GroupFrame createFrameWithChildren() { // frame GroupFrame frame = new GroupFrame(); frame.setPosition(new Point2f(50, 75)); frame.setSize(new Size2f(80, 50)); frame.setRotation(30); // child frame GroupFrame child = new GroupFrame(); child.setPosition(new Point2f(20, 10)); child.setSize(new Size2f(30, 20)); child.setRotation(30); // child frame of child frame TestFrame child2 = new TestFrame(); child2.setPosition(new Point2f(-15, -10)); child2.setSize(new Size2f(5, 5)); child2.setRotation(45); // hierarchy child.addChildFrame(child2); frame.addChildFrame(child); return frame; }