label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 10.2 kB
Source Map (JSON)
{"version":3,"file":"svgUtil.mjs","sources":["../../../../src/utils/svgUtil.ts"],"sourcesContent":["import { MyElement, Line, Point } from '@myprint/design/types/entity'\nimport * as d3Selection from 'd3-selection'\n\n// import {unit2px} from \"../utils/devicePixelRatio\";\n\n// export function computeLineAngle(lineA: Line, lineB: Line) {\n// // controlLineStart\n// // 线段1的起点和终点坐标\n// // var line1Start = {x: 0, y: 0};\n// // var line1End = {x: 1, y: 1};\n//\n// // 线段2的起点和终点坐标\n// // var line2Start = {x: 0, y: 0};\n// // var line2End = {x: 1, y: -1};\n// if (true) {\n// return calculateAngleBetweenSegments(lineA.start.x, lineA.start.y,\n// lineA.end.x, lineA.end.y,\n// lineB.start.x, lineB.start.y,\n// lineB.end.x, lineB.end.y\n// )\n// }\n//\n// // 计算线段1的方向向量\n// var vec1 = {x: lineA.end.x! - lineA.start.x!, y: lineA.end.y! - lineA.start.y!};\n//\n// // 计算线段2的方向向量\n// var vec2 = {x: lineB.end.x - lineB.start.x, y: lineB.end.y - lineB.start.y};\n//\n// // 计算向量的点积\n// var dotProduct = vec1.x * vec2.x + vec1.y * vec2.y;\n//\n// // 计算向量的模长\n// var length1 = Math.sqrt(vec1.x * vec1.x + vec1.y * vec1.y);\n// var length2 = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\n//\n// // 计算夹角的余弦值\n// var cosine = dotProduct / (length1 * length2);\n//\n// // 将余弦值转换为角度值\n// var rad = Math.acos(cosine);\n// var angle = rad * (180 / Math.PI);\n//\n// console.log(\"两条线段的夹角为:\" + angle + \"度\");\n//\n// return rad\n// }\n\n// 计算两个线段之间的夹角(支持到360度)\nexport function computeLineAngle(lineA: Line, lineB: Line) {\n var dx1 = lineA.end.x - lineA.start.x\n var dy1 = lineA.end.y - lineA.start.y\n var dx2 = lineB.end.x - lineB.start.x\n var dy2 = lineB.end.y - lineB.start.y\n\n var angle1 = Math.atan2(dy1, dx1)\n var angle2 = Math.atan2(dy2, dx2)\n\n var angle = angle2 - angle1\n if (angle < 0) {\n angle += 2 * Math.PI\n }\n return angle\n // return angle * (180 / Math.PI);\n}\n\n// 弧度转角度\nexport function rad2Ang(angle: number) {\n return angle * (180 / Math.PI)\n}\n\n\nexport function rotatePoint(centerX, centerY, x, y, angle) {\n // console.log(centerX, centerY, x, y, angle)\n return {\n x: centerX + Math.cos(angle) * (x - centerX) - Math.sin(angle) * (y - centerY),\n y: centerY + Math.sin(angle) * (x - centerX) + Math.cos(angle) * (y - centerY)\n }\n}\n\nexport function dist(p, m) {\n if (!m) {\n return 0\n }\n return Math.sqrt((p[0] - m.x) ** 2 + (p[1] - m.y) ** 2)\n}\n\n\nexport function updateSvg(chart, svgOptions, draw) {\n // console.log(draw())\n const element = svgOptions.element as MyElement\n const chartSvg = d3Selection.select(chart)\n const path = draw(chartSvg)\n if (path) {\n chartSvg.select('.u-path')\n // .style('stroke', 'white')\n .style('stroke', element.option.color ? element.option.color : 'black')\n // .style(\"stroke\", element.option.color ? element.option.color : \"white\")\n .style('fill', element.option.background ? element.option.background : 'none')\n // .attr(\"stroke-width\", 1.9)\n .attr('opacity', element.option.opacity != undefined ? element.option.opacity : 1)\n .attr('d', path)\n }\n\n // .attr(\"transform\", \"rotate(45,100,100)\")\n // .call(drag)\n\n\n // 辅助线/点\n if (svgOptions.drawAuxiliary) {\n if (svgOptions.allPoint) {\n chartSvg\n .selectAll('.u-point')\n .style('stroke', 'var(--drag-h-color)')\n .style('fill', 'var(--drag-h-color)')\n .style('display', null)\n\n .data(svgOptions.allPoint)\n .join(enter =>\n enter\n .append('g')\n .classed('u-point', true)\n .style('fill', 'white')\n .call(g => {\n g.append('circle').attr('r', 3)\n\n })\n )\n .attr('transform', (d: Point) => `translate(${[d.x, d.y]})`)\n }\n\n if (svgOptions.virtualPoint) {\n chartSvg\n .selectAll('.uv-point')\n .style('stroke', 'var(--dnb-highlight-color)')\n .style('fill', 'var(--dnb-highlight-color)')\n .style('display', null)\n\n .data(svgOptions.virtualPoint)\n .join(enter =>\n enter\n .append('g')\n .classed('uv-point', true)\n .style('fill', 'white')\n .call(g => {\n g.append('circle').attr('r', 3)\n })\n )\n .attr('transform', (d: Point) => `translate(${[d.x, d.y]})`)\n }\n\n if (svgOptions.controlLine) {\n chartSvg\n .selectAll('.u-line')\n .style('stroke', '#aaa')\n .style('display', null)\n .style('stroke-dasharray', '2 2')\n .data(svgOptions.controlLine)\n .join('line')\n .attr('x1', (d: Line) => d.start.x)\n .attr('y1', (d: Line) => d.start.y)\n .attr('x2', (d: Line) => d.end.x)\n .attr('y2', (d: Line) => d.end.y)\n .classed('u-line', true)\n }\n\n } else {\n chartSvg\n .selectAll('.u-point')\n .style('display', 'none')\n chartSvg.selectAll('.uv-point')\n .style('display', 'none')\n chartSvg.selectAll('.u-line')\n .style('display', 'none')\n }\n // console.log(JSON.stringify(points))\n\n}\n"],"names":[],"mappings":"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"}