import adder from "../adder.js"; import {abs} from "../math.js"; import noop from "../noop.js"; var areaSum = adder(), areaRingSum = adder(), x00, y00, x0, y0; var areaStream = { point: noop, lineStart: noop, lineEnd: noop, polygonStart: function() { areaStream.lineStart = areaRingStart; areaStream.lineEnd = areaRingEnd; }, polygonEnd: function() { areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop; areaSum.add(abs(areaRingSum)); areaRingSum.reset(); }, result: function() { var area = areaSum / 2; areaSum.reset(); return area; } }; function areaRingStart() { areaStream.point = areaPointFirst; } function areaPointFirst(x, y) { areaStream.point = areaPoint; x00 = x0 = x, y00 = y0 = y; } function areaPoint(x, y) { areaRingSum.add(y0 * x - x0 * y); x0 = x, y0 = y; } function areaRingEnd() { areaPoint(x00, y00); } export default areaStream;