UNPKG

@davepagurek/flo-mat

Version:

Medial / Scale Axis Transform (MAT/SAT) Library.

48 lines (32 loc) 1.16 kB
import { drawFs } from 'flo-draw'; import { Mat } from '../../../mat/mat.js'; import { traverseEdges } from '../../../cp-node/traverse-edges.js'; import { getCurveToNext } from '../../../cp-node/get-curve-to-next.js'; import { isTerminating } from '../../../cp-node/cp-node.js'; /** @internal */ function drawMat(type: 'mat' | 'sat') { const classes: string = type === 'mat' ? 'thin5 purple nofill' : 'thin10 red nofill'; return ( g: SVGGElement, mat: Mat, classes_?: string, delay = 0, scaleFactor = 1): SVGElement[] => { const cpNode = mat.cpNode; // if (!cpNode) { return undefined; } if (!cpNode) { return []; } const $svgs: SVGElement[] = []; let i = 0; traverseEdges(cpNode, cpNode => { if (isTerminating(cpNode)) { return; } const bezier = getCurveToNext(cpNode); if (!bezier) { return; } i++; $svgs.push( ...drawFs.bezier(g, bezier, classes, delay)); }); return $svgs; } } export { drawMat }