@knowvah/dot-engine 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +277 -0
- package/README.md +292 -0
- package/dist/api/builder.d.ts +78 -0
- package/dist/api/builder.d.ts.map +1 -0
- package/dist/api/edge-ops.d.ts +45 -0
- package/dist/api/edge-ops.d.ts.map +1 -0
- package/dist/api/geometry.d.ts +159 -0
- package/dist/api/geometry.d.ts.map +1 -0
- package/dist/api/index.d.ts +24 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api.js +719 -0
- package/dist/api.js.map +7 -0
- package/dist/bundle.js +101 -0
- package/dist/cdt/bag.d.ts +58 -0
- package/dist/cdt/bag.d.ts.map +1 -0
- package/dist/cdt/hash-core.d.ts +40 -0
- package/dist/cdt/hash-core.d.ts.map +1 -0
- package/dist/cdt/hash.d.ts +74 -0
- package/dist/cdt/hash.d.ts.map +1 -0
- package/dist/cdt/index.d.ts +16 -0
- package/dist/cdt/index.d.ts.map +1 -0
- package/dist/cdt/splay-core.d.ts +78 -0
- package/dist/cdt/splay-core.d.ts.map +1 -0
- package/dist/cdt/splay.d.ts +63 -0
- package/dist/cdt/splay.d.ts.map +1 -0
- package/dist/cdt/strhash.d.ts +26 -0
- package/dist/cdt/strhash.d.ts.map +1 -0
- package/dist/cdt/types.d.ts +11 -0
- package/dist/cdt/types.d.ts.map +1 -0
- package/dist/common/arith.d.ts +35 -0
- package/dist/common/arith.d.ts.map +1 -0
- package/dist/common/arm-pow-data.d.ts +17 -0
- package/dist/common/arm-pow-data.d.ts.map +1 -0
- package/dist/common/arm-pow.d.ts +12 -0
- package/dist/common/arm-pow.d.ts.map +1 -0
- package/dist/common/arrows-constants.d.ts +97 -0
- package/dist/common/arrows-constants.d.ts.map +1 -0
- package/dist/common/arrows-geometry.d.ts +24 -0
- package/dist/common/arrows-geometry.d.ts.map +1 -0
- package/dist/common/arrows-miter.d.ts +24 -0
- package/dist/common/arrows-miter.d.ts.map +1 -0
- package/dist/common/arrows-shapes-poly.d.ts +24 -0
- package/dist/common/arrows-shapes-poly.d.ts.map +1 -0
- package/dist/common/arrows-shapes-util.d.ts +77 -0
- package/dist/common/arrows-shapes-util.d.ts.map +1 -0
- package/dist/common/arrows-shapes.d.ts +48 -0
- package/dist/common/arrows-shapes.d.ts.map +1 -0
- package/dist/common/arrows-types.d.ts +59 -0
- package/dist/common/arrows-types.d.ts.map +1 -0
- package/dist/common/arrows.d.ts +69 -0
- package/dist/common/arrows.d.ts.map +1 -0
- package/dist/common/color.d.ts +66 -0
- package/dist/common/color.d.ts.map +1 -0
- package/dist/common/colorData.d.ts +10 -0
- package/dist/common/colorData.d.ts.map +1 -0
- package/dist/common/compass-port.d.ts +39 -0
- package/dist/common/compass-port.d.ts.map +1 -0
- package/dist/common/crand.d.ts +42 -0
- package/dist/common/crand.d.ts.map +1 -0
- package/dist/common/edge-label-init.d.ts +51 -0
- package/dist/common/edge-label-init.d.ts.map +1 -0
- package/dist/common/edge-offset.d.ts +66 -0
- package/dist/common/edge-offset.d.ts.map +1 -0
- package/dist/common/ellipse-wedge.d.ts +10 -0
- package/dist/common/ellipse-wedge.d.ts.map +1 -0
- package/dist/common/emit-types.d.ts +255 -0
- package/dist/common/emit-types.d.ts.map +1 -0
- package/dist/common/fma.d.ts +10 -0
- package/dist/common/fma.d.ts.map +1 -0
- package/dist/common/graph-init.d.ts +61 -0
- package/dist/common/graph-init.d.ts.map +1 -0
- package/dist/common/html-entities.d.ts +17 -0
- package/dist/common/html-entities.d.ts.map +1 -0
- package/dist/common/html-string.d.ts +14 -0
- package/dist/common/html-string.d.ts.map +1 -0
- package/dist/common/htmltable-emit-fill.d.ts +84 -0
- package/dist/common/htmltable-emit-fill.d.ts.map +1 -0
- package/dist/common/htmltable-emit-rules.d.ts +79 -0
- package/dist/common/htmltable-emit-rules.d.ts.map +1 -0
- package/dist/common/htmltable-emit.d.ts +63 -0
- package/dist/common/htmltable-emit.d.ts.map +1 -0
- package/dist/common/htmltable-lex.d.ts +16 -0
- package/dist/common/htmltable-lex.d.ts.map +1 -0
- package/dist/common/htmltable-parse.d.ts +37 -0
- package/dist/common/htmltable-parse.d.ts.map +1 -0
- package/dist/common/htmltable-port.d.ts +15 -0
- package/dist/common/htmltable-port.d.ts.map +1 -0
- package/dist/common/htmltable-pos-runs.d.ts +88 -0
- package/dist/common/htmltable-pos-runs.d.ts.map +1 -0
- package/dist/common/htmltable-pos.d.ts +192 -0
- package/dist/common/htmltable-pos.d.ts.map +1 -0
- package/dist/common/htmltable-types.d.ts +237 -0
- package/dist/common/htmltable-types.d.ts.map +1 -0
- package/dist/common/htmltable.d.ts +74 -0
- package/dist/common/htmltable.d.ts.map +1 -0
- package/dist/common/layers.d.ts +20 -0
- package/dist/common/layers.d.ts.map +1 -0
- package/dist/common/make-label.d.ts +60 -0
- package/dist/common/make-label.d.ts.map +1 -0
- package/dist/common/multicolor.d.ts +46 -0
- package/dist/common/multicolor.d.ts.map +1 -0
- package/dist/common/nodeinit.d.ts +45 -0
- package/dist/common/nodeinit.d.ts.map +1 -0
- package/dist/common/poly-gencode.d.ts +40 -0
- package/dist/common/poly-gencode.d.ts.map +1 -0
- package/dist/common/poly-init.d.ts +51 -0
- package/dist/common/poly-init.d.ts.map +1 -0
- package/dist/common/poly-inside.d.ts +37 -0
- package/dist/common/poly-inside.d.ts.map +1 -0
- package/dist/common/poly-shapes-cases.d.ts +31 -0
- package/dist/common/poly-shapes-cases.d.ts.map +1 -0
- package/dist/common/poly-shapes-cases2.d.ts +25 -0
- package/dist/common/poly-shapes-cases2.d.ts.map +1 -0
- package/dist/common/poly-shapes-util.d.ts +42 -0
- package/dist/common/poly-shapes-util.d.ts.map +1 -0
- package/dist/common/poly-shapes.d.ts +39 -0
- package/dist/common/poly-shapes.d.ts.map +1 -0
- package/dist/common/poly-sizing.d.ts +189 -0
- package/dist/common/poly-sizing.d.ts.map +1 -0
- package/dist/common/poly-vertices.d.ts +42 -0
- package/dist/common/poly-vertices.d.ts.map +1 -0
- package/dist/common/postproc.d.ts +49 -0
- package/dist/common/postproc.d.ts.map +1 -0
- package/dist/common/ps-fontalias.d.ts +36 -0
- package/dist/common/ps-fontalias.d.ts.map +1 -0
- package/dist/common/random.d.ts +8 -0
- package/dist/common/random.d.ts.map +1 -0
- package/dist/common/record-port.d.ts +34 -0
- package/dist/common/record-port.d.ts.map +1 -0
- package/dist/common/record.d.ts +105 -0
- package/dist/common/record.d.ts.map +1 -0
- package/dist/common/shapeData.d.ts +186 -0
- package/dist/common/shapeData.d.ts.map +1 -0
- package/dist/common/shapes.d.ts +36 -0
- package/dist/common/shapes.d.ts.map +1 -0
- package/dist/common/spline-midpoint.d.ts +31 -0
- package/dist/common/spline-midpoint.d.ts.map +1 -0
- package/dist/common/splines-clip.d.ts +21 -0
- package/dist/common/splines-clip.d.ts.map +1 -0
- package/dist/common/splines-constants.d.ts +42 -0
- package/dist/common/splines-constants.d.ts.map +1 -0
- package/dist/common/splines-geom.d.ts +51 -0
- package/dist/common/splines-geom.d.ts.map +1 -0
- package/dist/common/splines-path-begin.d.ts +17 -0
- package/dist/common/splines-path-begin.d.ts.map +1 -0
- package/dist/common/splines-path-end.d.ts +17 -0
- package/dist/common/splines-path-end.d.ts.map +1 -0
- package/dist/common/splines-path-shared.d.ts +53 -0
- package/dist/common/splines-path-shared.d.ts.map +1 -0
- package/dist/common/splines-routespl.d.ts +40 -0
- package/dist/common/splines-routespl.d.ts.map +1 -0
- package/dist/common/splines-selfedge.d.ts +21 -0
- package/dist/common/splines-selfedge.d.ts.map +1 -0
- package/dist/common/splines.d.ts +18 -0
- package/dist/common/splines.d.ts.map +1 -0
- package/dist/common/style-resolve.d.ts +197 -0
- package/dist/common/style-resolve.d.ts.map +1 -0
- package/dist/common/subst.d.ts +31 -0
- package/dist/common/subst.d.ts.map +1 -0
- package/dist/common/taper.d.ts +23 -0
- package/dist/common/taper.d.ts.map +1 -0
- package/dist/common/textmeasure-factory.d.ts +33 -0
- package/dist/common/textmeasure-factory.d.ts.map +1 -0
- package/dist/common/textmeasure-lookup.d.ts +17 -0
- package/dist/common/textmeasure-lookup.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-a.d.ts +13 -0
- package/dist/common/textmeasure-lut-data-a.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-b.d.ts +12 -0
- package/dist/common/textmeasure-lut-data-b.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data-c.d.ts +13 -0
- package/dist/common/textmeasure-lut-data-c.d.ts.map +1 -0
- package/dist/common/textmeasure-lut-data.d.ts +27 -0
- package/dist/common/textmeasure-lut-data.d.ts.map +1 -0
- package/dist/common/textmeasure.d.ts +120 -0
- package/dist/common/textmeasure.d.ts.map +1 -0
- package/dist/common/types.d.ts +316 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/xlabels-place.d.ts +125 -0
- package/dist/common/xlabels-place.d.ts.map +1 -0
- package/dist/debug.d.ts +58 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/errors.d.ts +63 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/gvc/anchor.d.ts +86 -0
- package/dist/gvc/anchor.d.ts.map +1 -0
- package/dist/gvc/context.d.ts +177 -0
- package/dist/gvc/context.d.ts.map +1 -0
- package/dist/gvc/default-context.d.ts +20 -0
- package/dist/gvc/default-context.d.ts.map +1 -0
- package/dist/gvc/device-cluster.d.ts +25 -0
- package/dist/gvc/device-cluster.d.ts.map +1 -0
- package/dist/gvc/device.d.ts +99 -0
- package/dist/gvc/device.d.ts.map +1 -0
- package/dist/gvc/edge-labels.d.ts +10 -0
- package/dist/gvc/edge-labels.d.ts.map +1 -0
- package/dist/gvc/emit-walk.d.ts +22 -0
- package/dist/gvc/emit-walk.d.ts.map +1 -0
- package/dist/gvc/image-resolver.d.ts +44 -0
- package/dist/gvc/image-resolver.d.ts.map +1 -0
- package/dist/gvc/job.d.ts +234 -0
- package/dist/gvc/job.d.ts.map +1 -0
- package/dist/gvc/textlayout.d.ts +33 -0
- package/dist/gvc/textlayout.d.ts.map +1 -0
- package/dist/gvc/textspan-emit.d.ts +41 -0
- package/dist/gvc/textspan-emit.d.ts.map +1 -0
- package/dist/gvc/usershape.d.ts +25 -0
- package/dist/gvc/usershape.d.ts.map +1 -0
- package/dist/gvc/viewport.d.ts +71 -0
- package/dist/gvc/viewport.d.ts.map +1 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52862 -0
- package/dist/index.js.map +7 -0
- package/dist/label/index.d.ts +74 -0
- package/dist/label/index.d.ts.map +1 -0
- package/dist/label/node.d.ts +108 -0
- package/dist/label/node.d.ts.map +1 -0
- package/dist/label/rectangle.d.ts +60 -0
- package/dist/label/rectangle.d.ts.map +1 -0
- package/dist/label/split-q.d.ts +13 -0
- package/dist/label/split-q.d.ts.map +1 -0
- package/dist/label/xlabels-geom.d.ts +46 -0
- package/dist/label/xlabels-geom.d.ts.map +1 -0
- package/dist/label/xlabels-intersect.d.ts +79 -0
- package/dist/label/xlabels-intersect.d.ts.map +1 -0
- package/dist/label/xlabels.d.ts +67 -0
- package/dist/label/xlabels.d.ts.map +1 -0
- package/dist/layout/circo/blockpath.d.ts +120 -0
- package/dist/layout/circo/blockpath.d.ts.map +1 -0
- package/dist/layout/circo/blocks.d.ts +135 -0
- package/dist/layout/circo/blocks.d.ts.map +1 -0
- package/dist/layout/circo/blocktree.d.ts +51 -0
- package/dist/layout/circo/blocktree.d.ts.map +1 -0
- package/dist/layout/circo/circular.d.ts +59 -0
- package/dist/layout/circo/circular.d.ts.map +1 -0
- package/dist/layout/circo/index.d.ts +35 -0
- package/dist/layout/circo/index.d.ts.map +1 -0
- package/dist/layout/circo/init.d.ts +50 -0
- package/dist/layout/circo/init.d.ts.map +1 -0
- package/dist/layout/circo/position-helpers.d.ts +33 -0
- package/dist/layout/circo/position-helpers.d.ts.map +1 -0
- package/dist/layout/circo/position.d.ts +66 -0
- package/dist/layout/circo/position.d.ts.map +1 -0
- package/dist/layout/dot/acyclic.d.ts +8 -0
- package/dist/layout/dot/acyclic.d.ts.map +1 -0
- package/dist/layout/dot/aspect.d.ts +17 -0
- package/dist/layout/dot/aspect.d.ts.map +1 -0
- package/dist/layout/dot/classify.d.ts +52 -0
- package/dist/layout/dot/classify.d.ts.map +1 -0
- package/dist/layout/dot/cluster-path.d.ts +38 -0
- package/dist/layout/dot/cluster-path.d.ts.map +1 -0
- package/dist/layout/dot/cluster.d.ts +102 -0
- package/dist/layout/dot/cluster.d.ts.map +1 -0
- package/dist/layout/dot/compound-clip.d.ts +69 -0
- package/dist/layout/dot/compound-clip.d.ts.map +1 -0
- package/dist/layout/dot/compound-geom.d.ts +115 -0
- package/dist/layout/dot/compound-geom.d.ts.map +1 -0
- package/dist/layout/dot/compound.d.ts +56 -0
- package/dist/layout/dot/compound.d.ts.map +1 -0
- package/dist/layout/dot/conc.d.ts +88 -0
- package/dist/layout/dot/conc.d.ts.map +1 -0
- package/dist/layout/dot/decomp.d.ts +66 -0
- package/dist/layout/dot/decomp.d.ts.map +1 -0
- package/dist/layout/dot/edge-order.d.ts +27 -0
- package/dist/layout/dot/edge-order.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-arrow.d.ts +46 -0
- package/dist/layout/dot/edge-route-arrow.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-boxes.d.ts +75 -0
- package/dist/layout/dot/edge-route-boxes.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-chain.d.ts +67 -0
- package/dist/layout/dot/edge-route-chain.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-clip.d.ts +88 -0
- package/dist/layout/dot/edge-route-clip.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-faithful.d.ts +94 -0
- package/dist/layout/dot/edge-route-faithful.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-geom.d.ts +43 -0
- package/dist/layout/dot/edge-route-geom.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-helpers.d.ts +50 -0
- package/dist/layout/dot/edge-route-helpers.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-poly.d.ts +48 -0
- package/dist/layout/dot/edge-route-poly.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-rank.d.ts +57 -0
- package/dist/layout/dot/edge-route-rank.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-routing.d.ts +99 -0
- package/dist/layout/dot/edge-route-routing.d.ts.map +1 -0
- package/dist/layout/dot/edge-route.d.ts +57 -0
- package/dist/layout/dot/edge-route.d.ts.map +1 -0
- package/dist/layout/dot/fastgr.d.ts +147 -0
- package/dist/layout/dot/fastgr.d.ts.map +1 -0
- package/dist/layout/dot/flat-utils.d.ts +21 -0
- package/dist/layout/dot/flat-utils.d.ts.map +1 -0
- package/dist/layout/dot/flat.d.ts +152 -0
- package/dist/layout/dot/flat.d.ts.map +1 -0
- package/dist/layout/dot/graph-label.d.ts +18 -0
- package/dist/layout/dot/graph-label.d.ts.map +1 -0
- package/dist/layout/dot/index.d.ts +128 -0
- package/dist/layout/dot/index.d.ts.map +1 -0
- package/dist/layout/dot/init.d.ts +93 -0
- package/dist/layout/dot/init.d.ts.map +1 -0
- package/dist/layout/dot/label-order.d.ts +45 -0
- package/dist/layout/dot/label-order.d.ts.map +1 -0
- package/dist/layout/dot/mincross-build.d.ts +52 -0
- package/dist/layout/dot/mincross-build.d.ts.map +1 -0
- package/dist/layout/dot/mincross-cross.d.ts +80 -0
- package/dist/layout/dot/mincross-cross.d.ts.map +1 -0
- package/dist/layout/dot/mincross-flat.d.ts +27 -0
- package/dist/layout/dot/mincross-flat.d.ts.map +1 -0
- package/dist/layout/dot/mincross-order.d.ts +89 -0
- package/dist/layout/dot/mincross-order.d.ts.map +1 -0
- package/dist/layout/dot/mincross-utils.d.ts +60 -0
- package/dist/layout/dot/mincross-utils.d.ts.map +1 -0
- package/dist/layout/dot/mincross.d.ts +75 -0
- package/dist/layout/dot/mincross.d.ts.map +1 -0
- package/dist/layout/dot/ns-core.d.ts +37 -0
- package/dist/layout/dot/ns-core.d.ts.map +1 -0
- package/dist/layout/dot/ns-range.d.ts +17 -0
- package/dist/layout/dot/ns-range.d.ts.map +1 -0
- package/dist/layout/dot/ns-subtree.d.ts +78 -0
- package/dist/layout/dot/ns-subtree.d.ts.map +1 -0
- package/dist/layout/dot/ns.d.ts +86 -0
- package/dist/layout/dot/ns.d.ts.map +1 -0
- package/dist/layout/dot/ortho-adapter.d.ts +19 -0
- package/dist/layout/dot/ortho-adapter.d.ts.map +1 -0
- package/dist/layout/dot/pack-components.d.ts +100 -0
- package/dist/layout/dot/pack-components.d.ts.map +1 -0
- package/dist/layout/dot/position-aux.d.ts +110 -0
- package/dist/layout/dot/position-aux.d.ts.map +1 -0
- package/dist/layout/dot/position-bbox.d.ts +57 -0
- package/dist/layout/dot/position-bbox.d.ts.map +1 -0
- package/dist/layout/dot/position-cluster.d.ts +48 -0
- package/dist/layout/dot/position-cluster.d.ts.map +1 -0
- package/dist/layout/dot/position-ycoords.d.ts +42 -0
- package/dist/layout/dot/position-ycoords.d.ts.map +1 -0
- package/dist/layout/dot/position.d.ts +47 -0
- package/dist/layout/dot/position.d.ts.map +1 -0
- package/dist/layout/dot/rank-dot2.d.ts +114 -0
- package/dist/layout/dot/rank-dot2.d.ts.map +1 -0
- package/dist/layout/dot/rank.d.ts +119 -0
- package/dist/layout/dot/rank.d.ts.map +1 -0
- package/dist/layout/dot/sameport.d.ts +70 -0
- package/dist/layout/dot/sameport.d.ts.map +1 -0
- package/dist/layout/dot/self-loop.d.ts +54 -0
- package/dist/layout/dot/self-loop.d.ts.map +1 -0
- package/dist/layout/dot/splines-clone.d.ts +33 -0
- package/dist/layout/dot/splines-clone.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat-labeled.d.ts +101 -0
- package/dist/layout/dot/splines-flat-labeled.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat-multi.d.ts +35 -0
- package/dist/layout/dot/splines-flat-multi.d.ts.map +1 -0
- package/dist/layout/dot/splines-flat.d.ts +116 -0
- package/dist/layout/dot/splines-flat.d.ts.map +1 -0
- package/dist/layout/dot/splines-groups.d.ts +38 -0
- package/dist/layout/dot/splines-groups.d.ts.map +1 -0
- package/dist/layout/dot/splines-label.d.ts +105 -0
- package/dist/layout/dot/splines-label.d.ts.map +1 -0
- package/dist/layout/dot/splines-route-type.d.ts +28 -0
- package/dist/layout/dot/splines-route-type.d.ts.map +1 -0
- package/dist/layout/dot/splines-route.d.ts +99 -0
- package/dist/layout/dot/splines-route.d.ts.map +1 -0
- package/dist/layout/dot/splines.d.ts +157 -0
- package/dist/layout/dot/splines.d.ts.map +1 -0
- package/dist/layout/dot/straight-edges.d.ts +39 -0
- package/dist/layout/dot/straight-edges.d.ts.map +1 -0
- package/dist/layout/fdp/cluster-edges.d.ts +31 -0
- package/dist/layout/fdp/cluster-edges.d.ts.map +1 -0
- package/dist/layout/fdp/comp.d.ts +29 -0
- package/dist/layout/fdp/comp.d.ts.map +1 -0
- package/dist/layout/fdp/derive.d.ts +39 -0
- package/dist/layout/fdp/derive.d.ts.map +1 -0
- package/dist/layout/fdp/fdp-model.d.ts +101 -0
- package/dist/layout/fdp/fdp-model.d.ts.map +1 -0
- package/dist/layout/fdp/grid.d.ts +49 -0
- package/dist/layout/fdp/grid.d.ts.map +1 -0
- package/dist/layout/fdp/index.d.ts +36 -0
- package/dist/layout/fdp/index.d.ts.map +1 -0
- package/dist/layout/fdp/init.d.ts +26 -0
- package/dist/layout/fdp/init.d.ts.map +1 -0
- package/dist/layout/fdp/layout.d.ts +57 -0
- package/dist/layout/fdp/layout.d.ts.map +1 -0
- package/dist/layout/fdp/normalize.d.ts +18 -0
- package/dist/layout/fdp/normalize.d.ts.map +1 -0
- package/dist/layout/fdp/ports.d.ts +41 -0
- package/dist/layout/fdp/ports.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout-init.d.ts +21 -0
- package/dist/layout/fdp/tlayout-init.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout-parms.d.ts +98 -0
- package/dist/layout/fdp/tlayout-parms.d.ts.map +1 -0
- package/dist/layout/fdp/tlayout.d.ts +43 -0
- package/dist/layout/fdp/tlayout.d.ts.map +1 -0
- package/dist/layout/fdp/xlayout.d.ts +26 -0
- package/dist/layout/fdp/xlayout.d.ts.map +1 -0
- package/dist/layout/neato/bfs.d.ts +43 -0
- package/dist/layout/neato/bfs.d.ts.map +1 -0
- package/dist/layout/neato/cdt-surface.d.ts +16 -0
- package/dist/layout/neato/cdt-surface.d.ts.map +1 -0
- package/dist/layout/neato/conjgrad.d.ts +61 -0
- package/dist/layout/neato/conjgrad.d.ts.map +1 -0
- package/dist/layout/neato/delaunay.d.ts +28 -0
- package/dist/layout/neato/delaunay.d.ts.map +1 -0
- package/dist/layout/neato/dijkstra.d.ts +80 -0
- package/dist/layout/neato/dijkstra.d.ts.map +1 -0
- package/dist/layout/neato/fdp-adjust.d.ts +31 -0
- package/dist/layout/neato/fdp-adjust.d.ts.map +1 -0
- package/dist/layout/neato/index.d.ts +58 -0
- package/dist/layout/neato/index.d.ts.map +1 -0
- package/dist/layout/neato/init.d.ts +207 -0
- package/dist/layout/neato/init.d.ts.map +1 -0
- package/dist/layout/neato/legal.d.ts +7 -0
- package/dist/layout/neato/legal.d.ts.map +1 -0
- package/dist/layout/neato/matrix-ops.d.ts +28 -0
- package/dist/layout/neato/matrix-ops.d.ts.map +1 -0
- package/dist/layout/neato/multispline-router.d.ts +80 -0
- package/dist/layout/neato/multispline-router.d.ts.map +1 -0
- package/dist/layout/neato/multispline.d.ts +24 -0
- package/dist/layout/neato/multispline.d.ts.map +1 -0
- package/dist/layout/neato/overlap-prism.d.ts +26 -0
- package/dist/layout/neato/overlap-prism.d.ts.map +1 -0
- package/dist/layout/neato/overlap.d.ts +85 -0
- package/dist/layout/neato/overlap.d.ts.map +1 -0
- package/dist/layout/neato/sc-adjust.d.ts +33 -0
- package/dist/layout/neato/sc-adjust.d.ts.map +1 -0
- package/dist/layout/neato/sep-factor.d.ts +41 -0
- package/dist/layout/neato/sep-factor.d.ts.map +1 -0
- package/dist/layout/neato/set-aspect.d.ts +33 -0
- package/dist/layout/neato/set-aspect.d.ts.map +1 -0
- package/dist/layout/neato/sgd.d.ts +166 -0
- package/dist/layout/neato/sgd.d.ts.map +1 -0
- package/dist/layout/neato/splines.d.ts +153 -0
- package/dist/layout/neato/splines.d.ts.map +1 -0
- package/dist/layout/neato/stress-kernel.d.ts +53 -0
- package/dist/layout/neato/stress-kernel.d.ts.map +1 -0
- package/dist/layout/neato/stress.d.ts +158 -0
- package/dist/layout/neato/stress.d.ts.map +1 -0
- package/dist/layout/osage/index.d.ts +158 -0
- package/dist/layout/osage/index.d.ts.map +1 -0
- package/dist/layout/osage/layout.d.ts +49 -0
- package/dist/layout/osage/layout.d.ts.map +1 -0
- package/dist/layout/osage/types.d.ts +28 -0
- package/dist/layout/osage/types.d.ts.map +1 -0
- package/dist/layout/pack/array-pack.d.ts +114 -0
- package/dist/layout/pack/array-pack.d.ts.map +1 -0
- package/dist/layout/pack/index.d.ts +157 -0
- package/dist/layout/pack/index.d.ts.map +1 -0
- package/dist/layout/pack/poly-pack.d.ts +126 -0
- package/dist/layout/pack/poly-pack.d.ts.map +1 -0
- package/dist/layout/pack/poly-place.d.ts +27 -0
- package/dist/layout/pack/poly-place.d.ts.map +1 -0
- package/dist/layout/pack/spiral-search.d.ts +18 -0
- package/dist/layout/pack/spiral-search.d.ts.map +1 -0
- package/dist/layout/pack/test-helpers.d.ts +7 -0
- package/dist/layout/pack/test-helpers.d.ts.map +1 -0
- package/dist/layout/pack/types.d.ts +74 -0
- package/dist/layout/pack/types.d.ts.map +1 -0
- package/dist/layout/patchwork/index.d.ts +136 -0
- package/dist/layout/patchwork/index.d.ts.map +1 -0
- package/dist/layout/patchwork/tree-map.d.ts +32 -0
- package/dist/layout/patchwork/tree-map.d.ts.map +1 -0
- package/dist/layout/patchwork/tree-node.d.ts +46 -0
- package/dist/layout/patchwork/tree-node.d.ts.map +1 -0
- package/dist/layout/sfdp/index.d.ts +39 -0
- package/dist/layout/sfdp/index.d.ts.map +1 -0
- package/dist/layout/sfdp/init.d.ts +61 -0
- package/dist/layout/sfdp/init.d.ts.map +1 -0
- package/dist/layout/sfdp/multilevel.d.ts +23 -0
- package/dist/layout/sfdp/multilevel.d.ts.map +1 -0
- package/dist/layout/sfdp/quadtree.d.ts +45 -0
- package/dist/layout/sfdp/quadtree.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-matrix-multiply.d.ts +34 -0
- package/dist/layout/sfdp/sparse-matrix-multiply.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-matrix.d.ts +101 -0
- package/dist/layout/sfdp/sparse-matrix.d.ts.map +1 -0
- package/dist/layout/sfdp/sparse-solve.d.ts +14 -0
- package/dist/layout/sfdp/sparse-solve.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-driver.d.ts +18 -0
- package/dist/layout/sfdp/spring-driver.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-electrical.d.ts +61 -0
- package/dist/layout/sfdp/spring-electrical.d.ts.map +1 -0
- package/dist/layout/twopi/circle.d.ts +83 -0
- package/dist/layout/twopi/circle.d.ts.map +1 -0
- package/dist/layout/twopi/index.d.ts +24 -0
- package/dist/layout/twopi/index.d.ts.map +1 -0
- package/dist/layout/twopi/init.d.ts +85 -0
- package/dist/layout/twopi/init.d.ts.map +1 -0
- package/dist/layout/twopi/pipeline.d.ts +37 -0
- package/dist/layout/twopi/pipeline.d.ts.map +1 -0
- package/dist/layout/twopi/twopi-test-helpers.d.ts +12 -0
- package/dist/layout/twopi/twopi-test-helpers.d.ts.map +1 -0
- package/dist/model/algData.d.ts +175 -0
- package/dist/model/algData.d.ts.map +1 -0
- package/dist/model/cgraph-ops.d.ts +86 -0
- package/dist/model/cgraph-ops.d.ts.map +1 -0
- package/dist/model/edge.d.ts +80 -0
- package/dist/model/edge.d.ts.map +1 -0
- package/dist/model/edgeInfo.d.ts +299 -0
- package/dist/model/edgeInfo.d.ts.map +1 -0
- package/dist/model/geom.d.ts +149 -0
- package/dist/model/geom.d.ts.map +1 -0
- package/dist/model/graph.d.ts +135 -0
- package/dist/model/graph.d.ts.map +1 -0
- package/dist/model/graphInfo.d.ts +418 -0
- package/dist/model/graphInfo.d.ts.map +1 -0
- package/dist/model/index.d.ts +10 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/layoutParams.d.ts +85 -0
- package/dist/model/layoutParams.d.ts.map +1 -0
- package/dist/model/node.d.ts +101 -0
- package/dist/model/node.d.ts.map +1 -0
- package/dist/model/nodeInfo.d.ts +278 -0
- package/dist/model/nodeInfo.d.ts.map +1 -0
- package/dist/model/rankEntry.d.ts +80 -0
- package/dist/model/rankEntry.d.ts.map +1 -0
- package/dist/ortho/chan-dict.d.ts +82 -0
- package/dist/ortho/chan-dict.d.ts.map +1 -0
- package/dist/ortho/fpq.d.ts +54 -0
- package/dist/ortho/fpq.d.ts.map +1 -0
- package/dist/ortho/index.d.ts +35 -0
- package/dist/ortho/index.d.ts.map +1 -0
- package/dist/ortho/maze-channels.d.ts +47 -0
- package/dist/ortho/maze-channels.d.ts.map +1 -0
- package/dist/ortho/maze.d.ts +27 -0
- package/dist/ortho/maze.d.ts.map +1 -0
- package/dist/ortho/ortho-parallel.d.ts +26 -0
- package/dist/ortho/ortho-parallel.d.ts.map +1 -0
- package/dist/ortho/ortho-route.d.ts +31 -0
- package/dist/ortho/ortho-route.d.ts.map +1 -0
- package/dist/ortho/partition.d.ts +34 -0
- package/dist/ortho/partition.d.ts.map +1 -0
- package/dist/ortho/rawgraph.d.ts +41 -0
- package/dist/ortho/rawgraph.d.ts.map +1 -0
- package/dist/ortho/sgraph.d.ts +74 -0
- package/dist/ortho/sgraph.d.ts.map +1 -0
- package/dist/ortho/trap-query.d.ts +32 -0
- package/dist/ortho/trap-query.d.ts.map +1 -0
- package/dist/ortho/trap-segment.d.ts +23 -0
- package/dist/ortho/trap-segment.d.ts.map +1 -0
- package/dist/ortho/trap-types.d.ts +91 -0
- package/dist/ortho/trap-types.d.ts.map +1 -0
- package/dist/ortho/trap-update.d.ts +12 -0
- package/dist/ortho/trap-update.d.ts.map +1 -0
- package/dist/ortho/trapezoid.d.ts +18 -0
- package/dist/ortho/trapezoid.d.ts.map +1 -0
- package/dist/ortho/types.d.ts +241 -0
- package/dist/ortho/types.d.ts.map +1 -0
- package/dist/parser/ast.d.ts +49 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/builder.d.ts +75 -0
- package/dist/parser/builder.d.ts.map +1 -0
- package/dist/parser/index.d.ts +97 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/pathplan/index.d.ts +8 -0
- package/dist/pathplan/index.d.ts.map +1 -0
- package/dist/pathplan/route.d.ts +9 -0
- package/dist/pathplan/route.d.ts.map +1 -0
- package/dist/pathplan/shortest.d.ts +5 -0
- package/dist/pathplan/shortest.d.ts.map +1 -0
- package/dist/pathplan/solvers.d.ts +5 -0
- package/dist/pathplan/solvers.d.ts.map +1 -0
- package/dist/pathplan/triang.d.ts +25 -0
- package/dist/pathplan/triang.d.ts.map +1 -0
- package/dist/pathplan/types.d.ts +22 -0
- package/dist/pathplan/types.d.ts.map +1 -0
- package/dist/pathplan/visibility.d.ts +13 -0
- package/dist/pathplan/visibility.d.ts.map +1 -0
- package/dist/pathplan/vispath.d.ts +9 -0
- package/dist/pathplan/vispath.d.ts.map +1 -0
- package/dist/rbtree/index.d.ts +127 -0
- package/dist/rbtree/index.d.ts.map +1 -0
- package/dist/render/color-resolve.d.ts +38 -0
- package/dist/render/color-resolve.d.ts.map +1 -0
- package/dist/render/dot.d.ts +379 -0
- package/dist/render/dot.d.ts.map +1 -0
- package/dist/render/index.d.ts +24 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/json.d.ts +89 -0
- package/dist/render/json.d.ts.map +1 -0
- package/dist/render/map-test-helpers.d.ts +13 -0
- package/dist/render/map-test-helpers.d.ts.map +1 -0
- package/dist/render/map.d.ts +197 -0
- package/dist/render/map.d.ts.map +1 -0
- package/dist/render/public.d.ts +64 -0
- package/dist/render/public.d.ts.map +1 -0
- package/dist/render/svg-arrow-ops.d.ts +10 -0
- package/dist/render/svg-arrow-ops.d.ts.map +1 -0
- package/dist/render/svg-cluster.d.ts +9 -0
- package/dist/render/svg-cluster.d.ts.map +1 -0
- package/dist/render/svg-edge-ortho-radius.d.ts +31 -0
- package/dist/render/svg-edge-ortho-radius.d.ts.map +1 -0
- package/dist/render/svg-edge-split.d.ts +48 -0
- package/dist/render/svg-edge-split.d.ts.map +1 -0
- package/dist/render/svg-gradient.d.ts +46 -0
- package/dist/render/svg-gradient.d.ts.map +1 -0
- package/dist/render/svg-graph.d.ts +97 -0
- package/dist/render/svg-graph.d.ts.map +1 -0
- package/dist/render/svg-helpers.d.ts +122 -0
- package/dist/render/svg-helpers.d.ts.map +1 -0
- package/dist/render/svg-id.d.ts +28 -0
- package/dist/render/svg-id.d.ts.map +1 -0
- package/dist/render/svg-multicolor.d.ts +60 -0
- package/dist/render/svg-multicolor.d.ts.map +1 -0
- package/dist/render/svg-parallel-edge.d.ts +28 -0
- package/dist/render/svg-parallel-edge.d.ts.map +1 -0
- package/dist/render/svg-tapered-edge.d.ts +18 -0
- package/dist/render/svg-tapered-edge.d.ts.map +1 -0
- package/dist/render/svg.d.ts +104 -0
- package/dist/render/svg.d.ts.map +1 -0
- package/dist/render/xdot-public.d.ts +95 -0
- package/dist/render/xdot-public.d.ts.map +1 -0
- package/dist/render/xml-escape.d.ts +21 -0
- package/dist/render/xml-escape.d.ts.map +1 -0
- package/dist/render.js +52556 -0
- package/dist/render.js.map +7 -0
- package/dist/util/agxbuf.d.ts +72 -0
- package/dist/util/agxbuf.d.ts.map +1 -0
- package/dist/util/bsd-qsort.d.ts +22 -0
- package/dist/util/bsd-qsort.d.ts.map +1 -0
- package/dist/util/index.d.ts +11 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/list.d.ts +47 -0
- package/dist/util/list.d.ts.map +1 -0
- package/dist/util/math.d.ts +54 -0
- package/dist/util/math.d.ts.map +1 -0
- package/dist/util/mt19937.d.ts +40 -0
- package/dist/util/mt19937.d.ts.map +1 -0
- package/dist/util/printf-round.d.ts +45 -0
- package/dist/util/printf-round.d.ts.map +1 -0
- package/dist/util/xml.d.ts +24 -0
- package/dist/util/xml.d.ts.map +1 -0
- package/dist/vpsc/Block.d.ts +116 -0
- package/dist/vpsc/Block.d.ts.map +1 -0
- package/dist/vpsc/Blocks.d.ts +66 -0
- package/dist/vpsc/Blocks.d.ts.map +1 -0
- package/dist/vpsc/Constraint.d.ts +51 -0
- package/dist/vpsc/Constraint.d.ts.map +1 -0
- package/dist/vpsc/HeapUtils.d.ts +37 -0
- package/dist/vpsc/HeapUtils.d.ts.map +1 -0
- package/dist/vpsc/Solver.d.ts +107 -0
- package/dist/vpsc/Solver.d.ts.map +1 -0
- package/dist/vpsc/SweepLine.d.ts +38 -0
- package/dist/vpsc/SweepLine.d.ts.map +1 -0
- package/dist/vpsc/Variable.d.ts +38 -0
- package/dist/vpsc/Variable.d.ts.map +1 -0
- package/dist/vpsc/index.d.ts +54 -0
- package/dist/vpsc/index.d.ts.map +1 -0
- package/dist/vpsc/sweepTypes.d.ts +29 -0
- package/dist/vpsc/sweepTypes.d.ts.map +1 -0
- package/dist/xdot/index.d.ts +6 -0
- package/dist/xdot/index.d.ts.map +1 -0
- package/dist/xdot/lex.d.ts +22 -0
- package/dist/xdot/lex.d.ts.map +1 -0
- package/dist/xdot/misc.d.ts +13 -0
- package/dist/xdot/misc.d.ts.map +1 -0
- package/dist/xdot/parse.d.ts +21 -0
- package/dist/xdot/parse.d.ts.map +1 -0
- package/dist/xdot/types.d.ts +152 -0
- package/dist/xdot/types.d.ts.map +1 -0
- package/package.json +113 -0
- package/src/api/builder.ts +277 -0
- package/src/api/edge-ops.ts +113 -0
- package/src/api/geometry.ts +307 -0
- package/src/api/index.ts +46 -0
- package/src/cdt/bag.ts +196 -0
- package/src/cdt/hash-core.ts +84 -0
- package/src/cdt/hash.ts +207 -0
- package/src/cdt/index.ts +17 -0
- package/src/cdt/splay-core.ts +301 -0
- package/src/cdt/splay.ts +191 -0
- package/src/cdt/strhash.ts +52 -0
- package/src/cdt/types.ts +13 -0
- package/src/common/arith.ts +39 -0
- package/src/common/arm-pow-data.ts +201 -0
- package/src/common/arm-pow.ts +296 -0
- package/src/common/arrows-constants.ts +175 -0
- package/src/common/arrows-geometry.ts +62 -0
- package/src/common/arrows-miter.ts +84 -0
- package/src/common/arrows-shapes-poly.ts +241 -0
- package/src/common/arrows-shapes-util.ts +162 -0
- package/src/common/arrows-shapes.ts +360 -0
- package/src/common/arrows-types.ts +59 -0
- package/src/common/arrows.ts +209 -0
- package/src/common/color.ts +340 -0
- package/src/common/colorData.ts +264 -0
- package/src/common/compass-port.ts +384 -0
- package/src/common/crand.ts +79 -0
- package/src/common/edge-label-init.ts +310 -0
- package/src/common/edge-offset.ts +140 -0
- package/src/common/ellipse-wedge.ts +189 -0
- package/src/common/emit-types.ts +332 -0
- package/src/common/fma.ts +52 -0
- package/src/common/graph-init.ts +359 -0
- package/src/common/html-entities.ts +299 -0
- package/src/common/html-string.ts +22 -0
- package/src/common/htmltable-emit-fill.ts +367 -0
- package/src/common/htmltable-emit-rules.ts +293 -0
- package/src/common/htmltable-emit.ts +345 -0
- package/src/common/htmltable-lex.ts +138 -0
- package/src/common/htmltable-parse.ts +539 -0
- package/src/common/htmltable-port.ts +32 -0
- package/src/common/htmltable-pos-runs.ts +313 -0
- package/src/common/htmltable-pos.ts +601 -0
- package/src/common/htmltable-types.ts +262 -0
- package/src/common/htmltable.ts +477 -0
- package/src/common/layers.ts +113 -0
- package/src/common/make-label.ts +192 -0
- package/src/common/multicolor.ts +167 -0
- package/src/common/nodeinit.ts +339 -0
- package/src/common/poly-gencode.ts +475 -0
- package/src/common/poly-init.ts +133 -0
- package/src/common/poly-inside.ts +202 -0
- package/src/common/poly-shapes-cases.ts +253 -0
- package/src/common/poly-shapes-cases2.ts +170 -0
- package/src/common/poly-shapes-util.ts +124 -0
- package/src/common/poly-shapes.ts +181 -0
- package/src/common/poly-sizing.ts +639 -0
- package/src/common/poly-vertices.ts +237 -0
- package/src/common/postproc.ts +436 -0
- package/src/common/ps-fontalias.ts +112 -0
- package/src/common/random.ts +37 -0
- package/src/common/record-port.ts +89 -0
- package/src/common/record.ts +523 -0
- package/src/common/shapeData.ts +502 -0
- package/src/common/shapes.ts +187 -0
- package/src/common/spline-midpoint.ts +105 -0
- package/src/common/splines-clip.ts +449 -0
- package/src/common/splines-constants.ts +53 -0
- package/src/common/splines-geom.ts +194 -0
- package/src/common/splines-path-begin.ts +243 -0
- package/src/common/splines-path-end.ts +231 -0
- package/src/common/splines-path-shared.ts +258 -0
- package/src/common/splines-routespl.ts +444 -0
- package/src/common/splines-selfedge.ts +403 -0
- package/src/common/splines.ts +33 -0
- package/src/common/style-resolve.ts +481 -0
- package/src/common/subst.ts +126 -0
- package/src/common/taper.ts +219 -0
- package/src/common/textmeasure-factory.ts +86 -0
- package/src/common/textmeasure-lookup.ts +50 -0
- package/src/common/textmeasure-lut-data-a.ts +182 -0
- package/src/common/textmeasure-lut-data-b.ts +140 -0
- package/src/common/textmeasure-lut-data-c.ts +221 -0
- package/src/common/textmeasure-lut-data.ts +78 -0
- package/src/common/textmeasure.ts +321 -0
- package/src/common/types.ts +425 -0
- package/src/common/xlabels-place.ts +475 -0
- package/src/debug.ts +38 -0
- package/src/errors.ts +95 -0
- package/src/gvc/anchor.ts +530 -0
- package/src/gvc/context.ts +260 -0
- package/src/gvc/default-context.ts +70 -0
- package/src/gvc/device-cluster.ts +114 -0
- package/src/gvc/device.ts +598 -0
- package/src/gvc/edge-labels.ts +116 -0
- package/src/gvc/emit-walk.ts +98 -0
- package/src/gvc/image-resolver.ts +137 -0
- package/src/gvc/job.ts +401 -0
- package/src/gvc/textlayout.ts +44 -0
- package/src/gvc/textspan-emit.ts +100 -0
- package/src/gvc/usershape.ts +33 -0
- package/src/gvc/viewport.ts +203 -0
- package/src/index.ts +165 -0
- package/src/label/index.ts +302 -0
- package/src/label/node.ts +278 -0
- package/src/label/rectangle.ts +123 -0
- package/src/label/split-q.ts +237 -0
- package/src/label/xlabels-geom.ts +132 -0
- package/src/label/xlabels-intersect.ts +421 -0
- package/src/label/xlabels.ts +212 -0
- package/src/layout/circo/blockpath.ts +560 -0
- package/src/layout/circo/blocks.ts +234 -0
- package/src/layout/circo/blocktree.ts +246 -0
- package/src/layout/circo/circular.ts +227 -0
- package/src/layout/circo/index.ts +90 -0
- package/src/layout/circo/init.ts +84 -0
- package/src/layout/circo/position-helpers.ts +104 -0
- package/src/layout/circo/position.ts +196 -0
- package/src/layout/dot/__fixtures__/xcoord-pivot-divergence.gv +79 -0
- package/src/layout/dot/acyclic.ts +60 -0
- package/src/layout/dot/aspect.ts +22 -0
- package/src/layout/dot/classify.ts +462 -0
- package/src/layout/dot/cluster-path.ts +200 -0
- package/src/layout/dot/cluster.ts +480 -0
- package/src/layout/dot/compound-clip.ts +224 -0
- package/src/layout/dot/compound-geom.ts +282 -0
- package/src/layout/dot/compound.ts +294 -0
- package/src/layout/dot/conc.ts +433 -0
- package/src/layout/dot/decomp.ts +165 -0
- package/src/layout/dot/edge-order.ts +62 -0
- package/src/layout/dot/edge-route-arrow.ts +87 -0
- package/src/layout/dot/edge-route-boxes.ts +99 -0
- package/src/layout/dot/edge-route-chain.ts +420 -0
- package/src/layout/dot/edge-route-clip.ts +253 -0
- package/src/layout/dot/edge-route-faithful.ts +404 -0
- package/src/layout/dot/edge-route-geom.ts +90 -0
- package/src/layout/dot/edge-route-helpers.ts +170 -0
- package/src/layout/dot/edge-route-poly.ts +174 -0
- package/src/layout/dot/edge-route-rank.ts +136 -0
- package/src/layout/dot/edge-route-routing.ts +219 -0
- package/src/layout/dot/edge-route.ts +490 -0
- package/src/layout/dot/fastgr.ts +377 -0
- package/src/layout/dot/flat-utils.ts +52 -0
- package/src/layout/dot/flat.ts +518 -0
- package/src/layout/dot/graph-label.ts +114 -0
- package/src/layout/dot/index.ts +302 -0
- package/src/layout/dot/init.ts +300 -0
- package/src/layout/dot/label-order.ts +161 -0
- package/src/layout/dot/mincross-build.ts +373 -0
- package/src/layout/dot/mincross-cross.ts +409 -0
- package/src/layout/dot/mincross-flat.ts +213 -0
- package/src/layout/dot/mincross-order.ts +401 -0
- package/src/layout/dot/mincross-utils.ts +170 -0
- package/src/layout/dot/mincross.ts +386 -0
- package/src/layout/dot/ns-core.ts +122 -0
- package/src/layout/dot/ns-range.ts +228 -0
- package/src/layout/dot/ns-subtree.ts +347 -0
- package/src/layout/dot/ns.ts +506 -0
- package/src/layout/dot/ortho-adapter.ts +133 -0
- package/src/layout/dot/pack-components.ts +433 -0
- package/src/layout/dot/position-aux.ts +382 -0
- package/src/layout/dot/position-bbox.ts +221 -0
- package/src/layout/dot/position-cluster.ts +286 -0
- package/src/layout/dot/position-ycoords.ts +287 -0
- package/src/layout/dot/position.ts +194 -0
- package/src/layout/dot/rank-dot2.ts +528 -0
- package/src/layout/dot/rank.ts +547 -0
- package/src/layout/dot/sameport.ts +278 -0
- package/src/layout/dot/self-loop.ts +147 -0
- package/src/layout/dot/splines-clone.ts +121 -0
- package/src/layout/dot/splines-flat-labeled.ts +408 -0
- package/src/layout/dot/splines-flat-multi.ts +188 -0
- package/src/layout/dot/splines-flat.ts +598 -0
- package/src/layout/dot/splines-groups.ts +190 -0
- package/src/layout/dot/splines-label.ts +432 -0
- package/src/layout/dot/splines-route-type.ts +44 -0
- package/src/layout/dot/splines-route.ts +478 -0
- package/src/layout/dot/splines.ts +538 -0
- package/src/layout/dot/straight-edges.ts +332 -0
- package/src/layout/fdp/cluster-edges.ts +0 -0
- package/src/layout/fdp/comp.ts +160 -0
- package/src/layout/fdp/derive.ts +272 -0
- package/src/layout/fdp/fdp-model.ts +238 -0
- package/src/layout/fdp/grid.ts +77 -0
- package/src/layout/fdp/index.ts +113 -0
- package/src/layout/fdp/init.ts +116 -0
- package/src/layout/fdp/layout.ts +485 -0
- package/src/layout/fdp/normalize.ts +100 -0
- package/src/layout/fdp/ports.ts +161 -0
- package/src/layout/fdp/tlayout-init.ts +230 -0
- package/src/layout/fdp/tlayout-parms.ts +234 -0
- package/src/layout/fdp/tlayout.ts +317 -0
- package/src/layout/fdp/xlayout.ts +350 -0
- package/src/layout/neato/bfs.ts +131 -0
- package/src/layout/neato/cdt-surface.ts +693 -0
- package/src/layout/neato/conjgrad.ts +159 -0
- package/src/layout/neato/delaunay.ts +259 -0
- package/src/layout/neato/dijkstra.ts +296 -0
- package/src/layout/neato/fdp-adjust.ts +124 -0
- package/src/layout/neato/index.ts +310 -0
- package/src/layout/neato/init.ts +505 -0
- package/src/layout/neato/legal.ts +316 -0
- package/src/layout/neato/matrix-ops.ts +112 -0
- package/src/layout/neato/multispline-router.ts +417 -0
- package/src/layout/neato/multispline.ts +427 -0
- package/src/layout/neato/overlap-prism.ts +503 -0
- package/src/layout/neato/overlap.ts +158 -0
- package/src/layout/neato/sc-adjust.ts +206 -0
- package/src/layout/neato/sep-factor.ts +118 -0
- package/src/layout/neato/set-aspect.ts +178 -0
- package/src/layout/neato/sgd.ts +461 -0
- package/src/layout/neato/splines.ts +1014 -0
- package/src/layout/neato/stress-kernel.ts +362 -0
- package/src/layout/neato/stress.ts +420 -0
- package/src/layout/osage/index.ts +548 -0
- package/src/layout/osage/layout.ts +254 -0
- package/src/layout/osage/types.ts +31 -0
- package/src/layout/pack/array-pack.ts +254 -0
- package/src/layout/pack/index.ts +570 -0
- package/src/layout/pack/poly-pack.ts +266 -0
- package/src/layout/pack/poly-place.ts +426 -0
- package/src/layout/pack/spiral-search.ts +106 -0
- package/src/layout/pack/test-helpers.ts +46 -0
- package/src/layout/pack/types.ts +85 -0
- package/src/layout/patchwork/index.ts +441 -0
- package/src/layout/patchwork/tree-map.ts +183 -0
- package/src/layout/patchwork/tree-node.ts +120 -0
- package/src/layout/sfdp/index.ts +231 -0
- package/src/layout/sfdp/init.ts +224 -0
- package/src/layout/sfdp/multilevel.ts +262 -0
- package/src/layout/sfdp/quadtree.ts +267 -0
- package/src/layout/sfdp/sparse-matrix-multiply.ts +160 -0
- package/src/layout/sfdp/sparse-matrix.ts +367 -0
- package/src/layout/sfdp/sparse-solve.ts +122 -0
- package/src/layout/sfdp/spring-driver.ts +209 -0
- package/src/layout/sfdp/spring-electrical.ts +431 -0
- package/src/layout/twopi/circle.ts +339 -0
- package/src/layout/twopi/index.ts +78 -0
- package/src/layout/twopi/init.ts +174 -0
- package/src/layout/twopi/pipeline.ts +98 -0
- package/src/layout/twopi/twopi-test-helpers.ts +44 -0
- package/src/model/algData.ts +194 -0
- package/src/model/cgraph-ops.ts +175 -0
- package/src/model/edge.ts +104 -0
- package/src/model/edgeInfo.ts +431 -0
- package/src/model/geom.ts +204 -0
- package/src/model/graph.ts +172 -0
- package/src/model/graphInfo.ts +528 -0
- package/src/model/index.ts +10 -0
- package/src/model/layoutParams.ts +127 -0
- package/src/model/node.ts +138 -0
- package/src/model/nodeInfo.ts +424 -0
- package/src/model/rankEntry.ts +95 -0
- package/src/ortho/chan-dict.ts +236 -0
- package/src/ortho/fpq.ts +149 -0
- package/src/ortho/index.ts +206 -0
- package/src/ortho/maze-channels.ts +196 -0
- package/src/ortho/maze.ts +311 -0
- package/src/ortho/ortho-parallel.ts +254 -0
- package/src/ortho/ortho-route.ts +349 -0
- package/src/ortho/partition.ts +303 -0
- package/src/ortho/rawgraph.ts +119 -0
- package/src/ortho/sgraph.ts +283 -0
- package/src/ortho/trap-query.ts +174 -0
- package/src/ortho/trap-segment.ts +303 -0
- package/src/ortho/trap-types.ts +171 -0
- package/src/ortho/trap-update.ts +89 -0
- package/src/ortho/trapezoid.ts +120 -0
- package/src/ortho/types.ts +286 -0
- package/src/parser/__fixtures__/directed.dot +10 -0
- package/src/parser/__fixtures__/simple.dot +7 -0
- package/src/parser/__fixtures__/subgraph.dot +17 -0
- package/src/parser/ast.ts +64 -0
- package/src/parser/builder.ts +401 -0
- package/src/parser/dot.d.ts +208 -0
- package/src/parser/dot.js +3321 -0
- package/src/parser/dot.pegjs +263 -0
- package/src/parser/index.ts +353 -0
- package/src/pathplan/index.ts +9 -0
- package/src/pathplan/route.ts +284 -0
- package/src/pathplan/shortest.ts +268 -0
- package/src/pathplan/solvers.ts +65 -0
- package/src/pathplan/triang.ts +221 -0
- package/src/pathplan/types.ts +16 -0
- package/src/pathplan/visibility.ts +170 -0
- package/src/pathplan/vispath.ts +118 -0
- package/src/rbtree/index.ts +418 -0
- package/src/render/color-resolve.ts +171 -0
- package/src/render/dot.ts +1514 -0
- package/src/render/index.ts +29 -0
- package/src/render/json.ts +734 -0
- package/src/render/map-test-helpers.ts +61 -0
- package/src/render/map.ts +528 -0
- package/src/render/public.ts +131 -0
- package/src/render/svg-arrow-ops.ts +113 -0
- package/src/render/svg-cluster.ts +24 -0
- package/src/render/svg-edge-ortho-radius.ts +228 -0
- package/src/render/svg-edge-split.ts +180 -0
- package/src/render/svg-gradient.ts +185 -0
- package/src/render/svg-graph.ts +415 -0
- package/src/render/svg-helpers.ts +623 -0
- package/src/render/svg-id.ts +76 -0
- package/src/render/svg-multicolor.ts +313 -0
- package/src/render/svg-parallel-edge.ts +123 -0
- package/src/render/svg-tapered-edge.ts +56 -0
- package/src/render/svg.ts +307 -0
- package/src/render/xdot-public.ts +164 -0
- package/src/render/xml-escape.ts +56 -0
- package/src/util/agxbuf.ts +138 -0
- package/src/util/bsd-qsort.ts +251 -0
- package/src/util/index.ts +25 -0
- package/src/util/list.ts +122 -0
- package/src/util/math.ts +104 -0
- package/src/util/mt19937.ts +143 -0
- package/src/util/printf-round.ts +163 -0
- package/src/util/xml.ts +184 -0
- package/src/vpsc/Block.ts +375 -0
- package/src/vpsc/Blocks.ts +164 -0
- package/src/vpsc/Constraint.ts +94 -0
- package/src/vpsc/HeapUtils.ts +88 -0
- package/src/vpsc/Solver.ts +274 -0
- package/src/vpsc/SweepLine.ts +214 -0
- package/src/vpsc/Variable.ts +54 -0
- package/src/vpsc/index.ts +122 -0
- package/src/vpsc/sweepTypes.ts +31 -0
- package/src/xdot/index.ts +7 -0
- package/src/xdot/lex.ts +151 -0
- package/src/xdot/misc.ts +226 -0
- package/src/xdot/parse.ts +349 -0
- package/src/xdot/types.ts +158 -0
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TypeScript port of lib/dotgen/dotsplines.c — dot_splines entry point,
|
|
5
|
+
* edgecmp, main routing loop.
|
|
6
|
+
*
|
|
7
|
+
* The full spline routing infrastructure (routesplines, pathplan, boxes)
|
|
8
|
+
* is not yet ported; this module provides the entry-point scaffolding and
|
|
9
|
+
* the edge-normalization pass that are testable independently.
|
|
10
|
+
*
|
|
11
|
+
* @see lib/dotgen/dotsplines.c
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { Graph } from '../../model/graph.js';
|
|
15
|
+
import type { Node } from '../../model/node.js';
|
|
16
|
+
import type { Edge } from '../../model/edge.js';
|
|
17
|
+
import type { Bezier, Spline, Port } from '../../model/geom.js';
|
|
18
|
+
import { VIRTUAL, NORMAL, FLATORDER } from './fastgr.js';
|
|
19
|
+
import { gvQsort } from '../../util/bsd-qsort.js';
|
|
20
|
+
import { IGNORED, EDGE_LABEL } from './rank.js';
|
|
21
|
+
import { markLowclusters } from './cluster.js';
|
|
22
|
+
import { routeDotEdges } from './edge-route.js';
|
|
23
|
+
import { collectOtherEdges } from './self-loop.js';
|
|
24
|
+
import { resetSplineBounds } from './edge-route-rank.js';
|
|
25
|
+
import { dispatchOrthoEdges } from './ortho-adapter.js';
|
|
26
|
+
import { routeEdgeGroups } from './splines-groups.js';
|
|
27
|
+
import { placePortLabels, placeRegularEdgeLabels, setEdgeLabelPos } from './splines-label.js';
|
|
28
|
+
import { nodesInSeq } from './decomp.js';
|
|
29
|
+
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Edge-type flag constants
|
|
32
|
+
// @see lib/dotgen/dotsplines.c
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
export const REGULAREDGE = 1;
|
|
36
|
+
export const FLATEDGE = 2;
|
|
37
|
+
export const SELFNPEDGE = 3;
|
|
38
|
+
export const SELFWPEDGE = 4;
|
|
39
|
+
export const EDGETYPEMASK = 7;
|
|
40
|
+
|
|
41
|
+
export const FWDEDGE = 16;
|
|
42
|
+
export const BWDEDGE = 32;
|
|
43
|
+
|
|
44
|
+
export const MAINGRAPH = 64;
|
|
45
|
+
export const AUXGRAPH = 128;
|
|
46
|
+
export const GRAPHTYPEMASK = 192;
|
|
47
|
+
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// EDGETYPE constants (GD_flags / setEdgeType)
|
|
50
|
+
// @see lib/common/const.h
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
|
|
53
|
+
// C encodes these as (n << 1); this port uses the compact ordinal n and stores
|
|
54
|
+
// it in the low nibble of GD_flags (see setEdgeType). Internally consistent.
|
|
55
|
+
export const EDGETYPE_NONE = 0;
|
|
56
|
+
export const EDGETYPE_LINE = 1;
|
|
57
|
+
export const EDGETYPE_CURVED = 2;
|
|
58
|
+
export const EDGETYPE_PLINE = 3;
|
|
59
|
+
export const EDGETYPE_ORTHO = 4;
|
|
60
|
+
export const EDGETYPE_SPLINE = 5;
|
|
61
|
+
export const EDGETYPE_COMPOUND = 6;
|
|
62
|
+
|
|
63
|
+
/** Read edge type from graph flags. @see lib/common/const.h:EDGE_TYPE */
|
|
64
|
+
export function edgeType(g: Graph): number {
|
|
65
|
+
return g.info.flags & 0xf;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Named string → edge type, for the `splines` attribute. @see lib/common/utils.c:edgeType */
|
|
69
|
+
const SPLINES_TYPE_MAP: Record<string, number> = {
|
|
70
|
+
curved: EDGETYPE_CURVED, compound: EDGETYPE_COMPOUND, false: EDGETYPE_LINE,
|
|
71
|
+
line: EDGETYPE_LINE, none: EDGETYPE_NONE, no: EDGETYPE_LINE, ortho: EDGETYPE_ORTHO,
|
|
72
|
+
polyline: EDGETYPE_PLINE, spline: EDGETYPE_SPLINE, true: EDGETYPE_SPLINE, yes: EDGETYPE_SPLINE,
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Map a `splines` attribute value to an edge type. `0`/`false`/`line`/`no` →
|
|
77
|
+
* LINE; a leading digit 1-9 / `true`/`yes`/`spline` → SPLINE; named values per
|
|
78
|
+
* the map; anything else → defaultValue. @see lib/common/utils.c:edgeType
|
|
79
|
+
*/
|
|
80
|
+
export function edgeTypeFromString(s: string, defaultValue: number): number {
|
|
81
|
+
if (s === '') return defaultValue;
|
|
82
|
+
if (s[0] === '0') return EDGETYPE_LINE;
|
|
83
|
+
if (s[0] >= '1' && s[0] <= '9') return EDGETYPE_SPLINE;
|
|
84
|
+
const mapped = SPLINES_TYPE_MAP[s.toLowerCase()];
|
|
85
|
+
return mapped !== undefined ? mapped : defaultValue;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Node/edge rank & order accessors (each ?? is its own CCN=2 function)
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
export function nodeRankOf(n: Node): number { return n.info.rank ?? 0; }
|
|
93
|
+
export function nodeOrderOf(n: Node): number { return n.info.order ?? 0; }
|
|
94
|
+
export function nodeCoordX(n: Node): number { return n.info.coord?.x ?? 0; }
|
|
95
|
+
export function edgeTreeIndex(e: Edge): number { return e.info.tree_index ?? 0; }
|
|
96
|
+
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// getmainedge — follow to_virt then to_orig to find the root edge
|
|
99
|
+
// @see lib/dotgen/dotsplines.c:getmainedge
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
/** @see lib/dotgen/dotsplines.c:getmainedge */
|
|
103
|
+
export function getMainEdge(e: Edge): Edge {
|
|
104
|
+
let le = e;
|
|
105
|
+
while (le.info.to_virt) le = le.info.to_virt;
|
|
106
|
+
while (le.info.to_orig) le = le.info.to_orig;
|
|
107
|
+
return le;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// swap_ends_p — true if spline control points should be reversed
|
|
112
|
+
// @see lib/dotgen/dotsplines.c:swap_ends_p
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
|
|
115
|
+
/** Resolve to the underlying normal edge. */
|
|
116
|
+
export function resolveOrigEdge(e: Edge): Edge {
|
|
117
|
+
let cur = e;
|
|
118
|
+
while (cur.info.to_orig) cur = cur.info.to_orig;
|
|
119
|
+
return cur;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Compare head vs tail rank; return true if head rank < tail rank. */
|
|
123
|
+
export function headRankLower(e: Edge): boolean {
|
|
124
|
+
return nodeRankOf(e.head) < nodeRankOf(e.tail);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Compare head vs tail rank; return true if head rank > tail rank. */
|
|
128
|
+
export function headRankHigher(e: Edge): boolean {
|
|
129
|
+
return nodeRankOf(e.head) > nodeRankOf(e.tail);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** @see lib/dotgen/dotsplines.c:swap_ends_p */
|
|
133
|
+
export function swapEndsP(e: Edge): boolean {
|
|
134
|
+
const cur = resolveOrigEdge(e);
|
|
135
|
+
if (headRankHigher(cur)) return false;
|
|
136
|
+
if (headRankLower(cur)) return true;
|
|
137
|
+
return nodeOrderOf(cur.head) < nodeOrderOf(cur.tail);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// splineMerge — true if node is a VIRTUAL merge node
|
|
142
|
+
// @see lib/dotgen/dotsplines.c:spline_merge
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
|
|
145
|
+
/** @see lib/dotgen/dotsplines.c:spline_merge */
|
|
146
|
+
export function splineMerge(n: Node): boolean {
|
|
147
|
+
return (n.info.node_type ?? 0) === VIRTUAL
|
|
148
|
+
&& ((n.info.in?.size ?? 0) > 1 || (n.info.out?.size ?? 0) > 1);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
// setflags — assign tree_index on edge
|
|
153
|
+
// @see lib/dotgen/dotsplines.c:setflags
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
/** Determine f1 (edge category) given hint or edge geometry. */
|
|
157
|
+
export function resolveF1(e: Edge, hint1: number): number {
|
|
158
|
+
if (hint1 !== 0) return hint1;
|
|
159
|
+
if (e.tail === e.head) {
|
|
160
|
+
return (e.info.tail_port.defined || e.info.head_port.defined)
|
|
161
|
+
? SELFWPEDGE : SELFNPEDGE;
|
|
162
|
+
}
|
|
163
|
+
if (nodeRankOf(e.tail) === nodeRankOf(e.head)) return FLATEDGE;
|
|
164
|
+
return REGULAREDGE;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Determine f2 for REGULAREDGE based on rank order. */
|
|
168
|
+
export function resolveF2Regular(e: Edge): number {
|
|
169
|
+
return nodeRankOf(e.tail) < nodeRankOf(e.head) ? FWDEDGE : BWDEDGE;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Determine f2 for FLATEDGE based on order. */
|
|
173
|
+
export function resolveF2Flat(e: Edge): number {
|
|
174
|
+
return nodeOrderOf(e.tail) < nodeOrderOf(e.head) ? FWDEDGE : BWDEDGE;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** @see lib/dotgen/dotsplines.c:setflags — determine direction flag f2 */
|
|
178
|
+
export function resolveF2(e: Edge, f1: number, hint2: number): number {
|
|
179
|
+
if (hint2 !== 0) return hint2;
|
|
180
|
+
if (f1 === REGULAREDGE) return resolveF2Regular(e);
|
|
181
|
+
if (f1 === FLATEDGE) return resolveF2Flat(e);
|
|
182
|
+
return FWDEDGE;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** @see lib/dotgen/dotsplines.c:setflags */
|
|
186
|
+
export function setflags(e: Edge, hint1: number, hint2: number, f3: number): void {
|
|
187
|
+
const f1 = resolveF1(e, hint1);
|
|
188
|
+
const f2 = resolveF2(e, f1, hint2);
|
|
189
|
+
e.info.tree_index = f1 | f2 | f3;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
// edgecmp helpers
|
|
194
|
+
// @see lib/dotgen/dotsplines.c:edgecmp
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
|
|
197
|
+
/** Compare two numbers: return -1, 0, or 1. */
|
|
198
|
+
export function numCmp(a: number, b: number): number {
|
|
199
|
+
if (a < b) return -1;
|
|
200
|
+
if (a > b) return 1;
|
|
201
|
+
return 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Compare |rank difference| of two main edges. */
|
|
205
|
+
export function cmpRankDiff(le0: Edge, le1: Edge): number {
|
|
206
|
+
const v0 = Math.abs(nodeRankOf(le0.tail) - nodeRankOf(le0.head));
|
|
207
|
+
const v1 = Math.abs(nodeRankOf(le1.tail) - nodeRankOf(le1.head));
|
|
208
|
+
return numCmp(v0, v1);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Compare |x-coord difference| of two main edges. */
|
|
212
|
+
export function cmpXDiff(le0: Edge, le1: Edge): number {
|
|
213
|
+
const v0 = Math.abs(nodeCoordX(le0.tail) - nodeCoordX(le0.head));
|
|
214
|
+
const v1 = Math.abs(nodeCoordX(le1.tail) - nodeCoordX(le1.head));
|
|
215
|
+
return numCmp(v0, v1);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* portcmp: undefined sorts before defined; defined ports order by (x, y).
|
|
220
|
+
* @see lib/dotgen/dotsplines.c:portcmp
|
|
221
|
+
*/
|
|
222
|
+
export function portcmp(p0: Port, p1: Port): number {
|
|
223
|
+
if (!p1.defined) return p0.defined ? 1 : 0;
|
|
224
|
+
if (!p0.defined) return -1;
|
|
225
|
+
if (p0.p.x < p1.p.x) return -1;
|
|
226
|
+
if (p0.p.x > p1.p.x) return 1;
|
|
227
|
+
if (p0.p.y < p1.p.y) return -1;
|
|
228
|
+
if (p0.p.y > p1.p.y) return 1;
|
|
229
|
+
return 0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Gate-edge ports in forward orientation: C picks ea = e when e carries a
|
|
234
|
+
* defined port, else its main edge, then views a BWDEDGE through makefwdedge
|
|
235
|
+
* (which swaps tail/head ports). Only the ports matter for comparison.
|
|
236
|
+
* @see lib/dotgen/dotsplines.c:edgecmp, dot_splines_ (ea/eb selection)
|
|
237
|
+
*/
|
|
238
|
+
export function gatePorts(e: Edge, le: Edge): [Port, Port] {
|
|
239
|
+
const ea = e.info.tail_port.defined || e.info.head_port.defined ? e : le;
|
|
240
|
+
if (edgeTreeIndex(ea) & BWDEDGE) return [ea.info.head_port, ea.info.tail_port];
|
|
241
|
+
return [ea.info.tail_port, ea.info.head_port];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/** @see lib/dotgen/dotsplines.c:edgecmp */
|
|
245
|
+
export function edgecmp(e0: Edge, e1: Edge): number {
|
|
246
|
+
const r = numCmp(edgeTreeIndex(e1) & EDGETYPEMASK, edgeTreeIndex(e0) & EDGETYPEMASK);
|
|
247
|
+
if (r !== 0) return r;
|
|
248
|
+
const le0 = getMainEdge(e0);
|
|
249
|
+
const le1 = getMainEdge(e1);
|
|
250
|
+
const rd = cmpRankDiff(le0, le1);
|
|
251
|
+
if (rd !== 0) return rd;
|
|
252
|
+
const xd = cmpXDiff(le0, le1);
|
|
253
|
+
if (xd !== 0) return xd;
|
|
254
|
+
const sq = numCmp(le0.seq, le1.seq);
|
|
255
|
+
if (sq !== 0) return sq;
|
|
256
|
+
const [eaT, eaH] = gatePorts(e0, le0);
|
|
257
|
+
const [ebT, ebH] = gatePorts(e1, le1);
|
|
258
|
+
const pt = portcmp(eaT, ebT);
|
|
259
|
+
if (pt !== 0) return pt;
|
|
260
|
+
const ph = portcmp(eaH, ebH);
|
|
261
|
+
if (ph !== 0) return ph;
|
|
262
|
+
const gt = numCmp(edgeTreeIndex(e0) & GRAPHTYPEMASK, edgeTreeIndex(e1) & GRAPHTYPEMASK);
|
|
263
|
+
if (gt !== 0) return gt;
|
|
264
|
+
// C also orders same-key FLAT edges by ED_label pointer; label identity has
|
|
265
|
+
// no stable order in TS, and flat groups still break on label in groupSize.
|
|
266
|
+
return numCmp(e0.seq, e1.seq);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// ---------------------------------------------------------------------------
|
|
270
|
+
// swap_bezier / swap_spline / edge_normalize
|
|
271
|
+
// @see lib/dotgen/dotsplines.c:swap_bezier, swap_spline, edge_normalize
|
|
272
|
+
// ---------------------------------------------------------------------------
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Reverse bezier control points and swap sflag/eflag, sp/ep.
|
|
276
|
+
*
|
|
277
|
+
* b.list may be over-allocated beyond b.size (newSpline pre-allocates pn
|
|
278
|
+
* slots; clip can shrink the real point count, leaving zeroed spare slots
|
|
279
|
+
* calloc'd at the tail). Only the bounded window list[0, size) holds real
|
|
280
|
+
* points, so the reverse must be an index-swap loop over that window —
|
|
281
|
+
* NOT a whole-array reverse, which would rotate the zeroed spares to the
|
|
282
|
+
* front. @see lib/dotgen/dotsplines.c:144-148 (swap_bezier)
|
|
283
|
+
*/
|
|
284
|
+
export function swapBezier(b: Bezier): void {
|
|
285
|
+
const sz = b.size;
|
|
286
|
+
for (let i = 0; i < Math.floor(sz / 2); i++) {
|
|
287
|
+
const tmp = b.list[i];
|
|
288
|
+
b.list[i] = b.list[sz - 1 - i];
|
|
289
|
+
b.list[sz - 1 - i] = tmp;
|
|
290
|
+
}
|
|
291
|
+
const sf = b.sflag; b.sflag = b.eflag; b.eflag = sf;
|
|
292
|
+
const sp = b.sp; b.sp = b.ep; b.ep = sp;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** Reverse the list of beziers in a spline and swap each bezier. */
|
|
296
|
+
export function swapSpline(s: Spline): void {
|
|
297
|
+
s.list.reverse();
|
|
298
|
+
for (const bz of s.list) swapBezier(bz);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Swap an edge's spline AND its precomputed arrow-op slots. C regenerates
|
|
303
|
+
* arrows at emit time from each bezier's sp/ep + s/eflag, so swap_bezier's
|
|
304
|
+
* flag swap is complete there; the port precomputes arrow ops per edge END
|
|
305
|
+
* (tail/head slots) at clip time, so a spline swap must swap the slots too or
|
|
306
|
+
* the flag↔ops pairing breaks — on a multi-bezier reversed edge the per-bezier
|
|
307
|
+
* arrow interleave then finds no matching ops and the arrow falls to the
|
|
308
|
+
* group end ([path, path, arrow] vs C's [path, arrow, path]; b15
|
|
309
|
+
* LandVertical/Fall/HoverStrafeToStop groups).
|
|
310
|
+
* @see lib/dotgen/dotsplines.c:swap_bezier (sflag/eflag swap)
|
|
311
|
+
*/
|
|
312
|
+
export function swapEdgeSpline(e: Edge): void {
|
|
313
|
+
if (e.info.spl === undefined) return;
|
|
314
|
+
swapSpline(e.info.spl);
|
|
315
|
+
const t = e.info.tailArrowOps;
|
|
316
|
+
e.info.tailArrowOps = e.info.headArrowOps;
|
|
317
|
+
e.info.headArrowOps = t;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Normalize splines so they always go from tail to head.
|
|
322
|
+
* @see lib/dotgen/dotsplines.c:edge_normalize
|
|
323
|
+
*/
|
|
324
|
+
export function edgeNormalize(g: Graph): void {
|
|
325
|
+
for (const n of nodesInSeq(g)) {
|
|
326
|
+
for (let k = 0; k < (n.info.out?.size ?? 0); k++) {
|
|
327
|
+
const e = n.info.out!.list[k];
|
|
328
|
+
if (swapEndsP(e)) swapEdgeSpline(e);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// ---------------------------------------------------------------------------
|
|
334
|
+
// collectEdges — build the edge list for routing
|
|
335
|
+
// @see lib/dotgen/dotsplines.c:dot_splines_
|
|
336
|
+
// ---------------------------------------------------------------------------
|
|
337
|
+
|
|
338
|
+
/** True if edge e should be skipped during regular-edge collection. */
|
|
339
|
+
export function isSkippedOutEdge(e: Edge): boolean {
|
|
340
|
+
const et = e.info.edge_type ?? 0;
|
|
341
|
+
return et === FLATORDER || et === IGNORED;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/** Collect regular out-edges of n into edges. */
|
|
345
|
+
export function collectOutEdges(n: Node, edges: Edge[]): void {
|
|
346
|
+
const sz = n.info.out?.size ?? 0;
|
|
347
|
+
for (let k = 0; k < sz; k++) {
|
|
348
|
+
const e = n.info.out!.list[k];
|
|
349
|
+
if (isSkippedOutEdge(e)) continue;
|
|
350
|
+
setflags(e, REGULAREDGE, FWDEDGE, MAINGRAPH);
|
|
351
|
+
edges.push(e);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/** Collect flat out-edges of n into edges. */
|
|
356
|
+
export function collectFlatEdges(n: Node, edges: Edge[]): void {
|
|
357
|
+
const sz = n.info.flat_out?.size ?? 0;
|
|
358
|
+
for (let k = 0; k < sz; k++) {
|
|
359
|
+
const e = n.info.flat_out!.list[k];
|
|
360
|
+
setflags(e, FLATEDGE, 0, AUXGRAPH);
|
|
361
|
+
edges.push(e);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/** True if n participates in edge routing. */
|
|
366
|
+
export function nodeNeedsRouting(n: Node): boolean {
|
|
367
|
+
return (n.info.node_type ?? NORMAL) === NORMAL || splineMerge(n);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/** Collect all edges for a node that need routing. */
|
|
371
|
+
export function collectNodeEdges(n: Node, edges: Edge[]): void {
|
|
372
|
+
if (!nodeNeedsRouting(n)) return;
|
|
373
|
+
collectOutEdges(n, edges);
|
|
374
|
+
collectFlatEdges(n, edges);
|
|
375
|
+
collectOtherEdges(n, edges);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Collect routing edges by iterating the rank array (`minrank..maxrank`,
|
|
380
|
+
* `v[0..n-1]`), null-guarding empty `.v` slots exactly as C does. This visits
|
|
381
|
+
* VIRTUAL `splineMerge` nodes in addition to NORMAL nodes, so the merged
|
|
382
|
+
* secondary chains that a `concentrate` DOWN-sweep rewires onto a virtual merge
|
|
383
|
+
* node's out-list are gathered and routed (they are absent from `g.nodes`).
|
|
384
|
+
* `nodeNeedsRouting` still gates each node to NORMAL || splineMerge.
|
|
385
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (281-320)
|
|
386
|
+
*/
|
|
387
|
+
export function collectRankEdges(g: Graph, edges: Edge[]): void {
|
|
388
|
+
const ranks = g.info.rank;
|
|
389
|
+
// No rank table (never happens for a laid-out dot graph): fall back to the
|
|
390
|
+
// node map so a degenerate graph still collects its NORMAL out-edges.
|
|
391
|
+
if (ranks === undefined || g.info.minrank === undefined || g.info.maxrank === undefined) {
|
|
392
|
+
for (const n of g.nodes.values()) collectNodeEdges(n, edges);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
for (let i = g.info.minrank; i <= g.info.maxrank; i++) {
|
|
396
|
+
const rk = ranks[i];
|
|
397
|
+
if (rk === undefined) continue;
|
|
398
|
+
for (let j = 0; j < rk.n; j++) {
|
|
399
|
+
const n = rk.v[j];
|
|
400
|
+
if (n == null) continue; // C guards GD_rank(g)[i].v[j] slots
|
|
401
|
+
collectNodeEdges(n, edges);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// ---------------------------------------------------------------------------
|
|
407
|
+
// dot_splines_ / dot_splines — main entry points
|
|
408
|
+
// @see lib/dotgen/dotsplines.c:dot_splines_, dot_splines
|
|
409
|
+
// ---------------------------------------------------------------------------
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Main spline routing entry point (internal, with normalize flag).
|
|
413
|
+
*
|
|
414
|
+
* Performs straight-line edge routing via routeDotEdges, then normalizes
|
|
415
|
+
* spline orientation when normalize=true. The full pathplan-based obstacle
|
|
416
|
+
* routing (routesplines, boxes, clip_and_install) is deferred.
|
|
417
|
+
*
|
|
418
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_
|
|
419
|
+
*/
|
|
420
|
+
/**
|
|
421
|
+
* In position, each node's rw was stored in mval and rw may have been
|
|
422
|
+
* increased to reflect loops/labels; restore the original rw here.
|
|
423
|
+
* @see lib/dotgen/dotsplines.c:resetRW
|
|
424
|
+
*/
|
|
425
|
+
export function resetRW(g: Graph): void {
|
|
426
|
+
for (const n of nodesInSeq(g)) {
|
|
427
|
+
// C: if (ND_other(n).list) — non-NULL list iff non-flat/non-tree edges exist
|
|
428
|
+
if (n.info.other && n.info.other.list.length > 0) {
|
|
429
|
+
const tmp = n.info.rw;
|
|
430
|
+
n.info.rw = n.info.mval ?? 0;
|
|
431
|
+
n.info.mval = tmp;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* splines=ortho dispatch — mirror dotsplines.c:251-259: resetRW, run the
|
|
438
|
+
* orthoEdges pipeline (before mark_lowclusters), then the finish semantics
|
|
439
|
+
* (skip routesplinesterm — not ported in TS; set edgeLabelsDone; return 0).
|
|
440
|
+
* Edge-label sub-case is T2.
|
|
441
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (EDGETYPE_ORTHO branch)
|
|
442
|
+
*/
|
|
443
|
+
function orthoDispatch(g: Graph): number {
|
|
444
|
+
resetRW(g);
|
|
445
|
+
// C: if (GD_has_labels(g->root) & EDGE_LABEL) { setEdgeLabelPos(g);
|
|
446
|
+
// orthoEdges(g,true); } else orthoEdges(g,false);
|
|
447
|
+
// orthoEdges itself warns + downgrades useLbls (ortho/index.ts) — C never
|
|
448
|
+
// routes edges around labels (ADR-2). We only POSITION the labels here.
|
|
449
|
+
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
450
|
+
setEdgeLabelPos(g);
|
|
451
|
+
dispatchOrthoEdges(g, true);
|
|
452
|
+
} else {
|
|
453
|
+
dispatchOrthoEdges(g, false);
|
|
454
|
+
}
|
|
455
|
+
// C's `goto finish` lands ON the port-label placement block
|
|
456
|
+
// (dotsplines.c:436-458): head/tail labels with labelangle/labeldistance
|
|
457
|
+
// are placed via place_portlabel for ortho too. Skipping this left the
|
|
458
|
+
// labels unset, so the xlabels pass placed them instead (144_ortho).
|
|
459
|
+
placePortLabels(g);
|
|
460
|
+
g.info.edgeLabelsDone = true;
|
|
461
|
+
return 0;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* splines=curved top wiring: restore node rw, and warn (but do NOT downgrade —
|
|
466
|
+
* curved still routes) when edge labels are present.
|
|
467
|
+
* @see lib/dotgen/dotsplines.c:241-247 (ADR-3)
|
|
468
|
+
*/
|
|
469
|
+
function curvedTop(g: Graph): void {
|
|
470
|
+
resetRW(g);
|
|
471
|
+
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
472
|
+
console.warn('edge labels with splines=curved not supported in dot - use xlabels\n');
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Post-loop: vnode labels, normalize, routeDotEdges backstop (curved already
|
|
478
|
+
* routed its groups; C skips routesplinesterm), port labels. @see c:422-471
|
|
479
|
+
*/
|
|
480
|
+
function finalizeSplines(g: Graph, et: number, normalize: boolean): void {
|
|
481
|
+
placeRegularEdgeLabels(g);
|
|
482
|
+
if (normalize) edgeNormalize(g);
|
|
483
|
+
if (et !== EDGETYPE_CURVED) routeDotEdges(g);
|
|
484
|
+
placePortLabels(g);
|
|
485
|
+
g.info.edgeLabelsDone = true; // @see dotsplines.c:471 (EdgeLabelsDone = 1)
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
export function dotSplines_(g: Graph, normalize: boolean): number {
|
|
489
|
+
const et = edgeType(g);
|
|
490
|
+
if (et === EDGETYPE_NONE) return 0;
|
|
491
|
+
if (et === EDGETYPE_ORTHO) return orthoDispatch(g);
|
|
492
|
+
if (et === EDGETYPE_CURVED) curvedTop(g);
|
|
493
|
+
markLowclusters(g);
|
|
494
|
+
// C computes `spline_info_t sd` fresh here, once per call (dotsplines.c:248,
|
|
495
|
+
// 270-282), then threads it through every routing helper for this pass.
|
|
496
|
+
// Force the next getSplineBounds(g) access to recompute so this pass sees
|
|
497
|
+
// a frozen snapshot immune to recoverSlack/resizeVn vnode mutations from
|
|
498
|
+
// edges routed earlier in THIS SAME pass. @see edge-route-rank.ts:getSplineBounds
|
|
499
|
+
resetSplineBounds(g);
|
|
500
|
+
const edges: Edge[] = [];
|
|
501
|
+
collectRankEdges(g, edges);
|
|
502
|
+
// C sorts with libc qsort (LIST_SORT → gv_list_sort_ → qsort), which is
|
|
503
|
+
// UNSTABLE: the two MAINGRAPH entries of one concentrate-merged original
|
|
504
|
+
// compare equal all the way through edgecmp (same main edge, same copied
|
|
505
|
+
// AGSEQ), and the Bentley-McIlroy permutation decides which run is routed
|
|
506
|
+
// — and therefore which bezier clip_and_install appends — first (b69).
|
|
507
|
+
// A stable Array.sort keeps collection order instead; gvQsort reproduces
|
|
508
|
+
// the oracle's qsort permutation. @see util/bsd-qsort.ts (TB_balance)
|
|
509
|
+
gvQsort(edges, edgecmp);
|
|
510
|
+
// C places line-edge labels BEFORE the routing loop (dotsplines.c:334-340) so
|
|
511
|
+
// the line router reads final label positions; lone edges now route in-loop.
|
|
512
|
+
if (et === EDGETYPE_LINE) placeRegularEdgeLabels(g);
|
|
513
|
+
const runOrigs = routeEdgeGroups(g, edges, g.info.nodesep ?? 18, et);
|
|
514
|
+
if (normalize) normalizeRunOrigs(runOrigs);
|
|
515
|
+
finalizeSplines(g, et, normalize);
|
|
516
|
+
return 0;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Normalize the per-run assembled splines tail→head, once per orig — C's
|
|
521
|
+
* edge_normalize covers these via the cgraph edge lists; the port's
|
|
522
|
+
* edgeNormalize walks the fast graph only, and back-edge origs whose chain
|
|
523
|
+
* was routed per-run live in ND_other, so swap them here.
|
|
524
|
+
* @see lib/dotgen/dotsplines.c:edge_normalize
|
|
525
|
+
*/
|
|
526
|
+
function normalizeRunOrigs(runOrigs: Set<Edge>): void {
|
|
527
|
+
for (const o of runOrigs) {
|
|
528
|
+
if (swapEndsP(o)) swapEdgeSpline(o);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Entry point called by the dot layout pipeline.
|
|
534
|
+
* @see lib/dotgen/dotsplines.c:dot_splines
|
|
535
|
+
*/
|
|
536
|
+
export function dotSplines(g: Graph): number {
|
|
537
|
+
return dotSplines_(g, true);
|
|
538
|
+
}
|