package org.geogebra.common.util.clipper; class OutRec { int Idx; boolean isHole; boolean isOpen; OutRec firstLeft; // see comments in clipper.pas OutPt pts; OutPt bottomPt; PolyNode polyNode; public double area() { OutPt op = pts; if (op == null) { return 0; } double a = 0; do { a = a + (op.prev.getPt().getX() + op.getPt().getX()) * (op.prev.getPt().getY() - op.getPt().getY()); op = op.next; } while (op != pts); return a * 0.5; } public void fixHoleLinkage() { // skip if an outermost polygon or // already already points to the correct FirstLeft ... if (firstLeft == null || isHole != firstLeft.isHole && firstLeft.pts != null) { return; } OutRec orfl = firstLeft; while (orfl != null && (orfl.isHole == isHole || orfl.pts == null)) { orfl = orfl.firstLeft; } firstLeft = orfl; } public OutPt getPoints() { return pts; } public void setPoints(OutPt pts) { this.pts = pts; } public OutRec parseFirstLeft() { OutRec ret = this; while (ret != null && ret.pts == null) { ret = ret.firstLeft; } return ret; } }