|
1
|
-
{"version":3,"file":"index.cjs252.js","sources":["../../../node_modules/d3-geo/src/clip/index.js"],"sourcesContent":["import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(rotate, sink) {\n var line = clipLine(sink),\n rotatedStart = rotate.invert(start[0], start[1]),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, rotatedStart);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n var point = rotate(lambda, phi);\n if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n var point = rotate(lambda, phi);\n line.point(point[0], point[1]);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n var point = rotate(lambda, phi);\n ringSink.point(point[0], point[1]);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n"],"names":["clip","pointVisible","clipLine","interpolate","start","rotate","sink","line","rotatedStart","ringBuffer","clipBuffer","ringSink","polygonStarted","polygon","segments","ring","point","lineStart","lineEnd","pointRing","ringStart","ringEnd","merge","startInside","polygonContains","clipPolygon","compareIntersection","lambda","phi","pointLine","clean","ringSegments","n","m","segment","validSegment","a","b","halfPi","epsilon"],"mappings":"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","x_google_ignoreList":[0]}
|