{"version":3,"file":"arc.js","sourceRoot":"","sources":["../../../../src/geometry/shape/edge/arc.ts"],"names":[],"mappings":"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","sourcesContent":["import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { getArcPath } from '../../../util/graphics';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath, getQPath } from './util';\n\nfunction getArcShapePath(from: Point, to: Point, center: Point) {\n const sub = getQPath(to, center);\n const path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\n\nfunction getArcShapeWeightPath(points: Point[], center: Point) {\n const arc1 = getQPath(points[1], center);\n const arc2 = getQPath(points[3], center);\n const path = [['M', points[0].x, points[0].y]];\n path.push(arc2);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['L', points[2].x, points[2].y]);\n path.push(arc1);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['L', points[0].x, points[0].y]);\n path.push(['Z']);\n return path;\n}\n\n// 弧线包括笛卡尔坐标系下的半圆弧线、极坐标系下以圆心为控制点的二阶曲线、笛卡尔坐标系下带权重的三阶曲线、极坐标系下带权重的以圆心为控制点的二阶曲线\nregisterShape('edge', 'arc', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n\n let points = cfg.points as Point[];\n const type = points.length > 2 ? 'weight' : 'normal';\n let path;\n if (cfg.isInCircle) {\n const center = { x: 0, y: 1 };\n if (type === 'normal') {\n path = getArcShapePath(points[0], points[1], center);\n } else {\n style.fill = style.stroke;\n path = getArcShapeWeightPath(points, center);\n }\n path = this.parsePath(path);\n\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n } else {\n if (type === 'normal') {\n points = this.parsePoints(points);\n path = getArcPath(\n (points[1].x + points[0].x) / 2,\n points[0].y,\n Math.abs(points[1].x - points[0].x) / 2,\n Math.PI,\n Math.PI * 2\n );\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n } else {\n const c1 = getCPath(points[1], points[3]);\n const c2 = getCPath(points[2], points[0]);\n\n path = [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n c1,\n ['L', points[3].x, points[3].y],\n ['L', points[2].x, points[2].y],\n c2,\n ['Z'],\n ];\n path = this.parsePath(path);\n style.fill = style.stroke;\n\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n }\n }\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color,\n },\n };\n },\n});\n"]}