@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,490 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Edge spline routing orchestration for dot layout.
|
|
5
|
+
*
|
|
6
|
+
* Top-level entry point. Wires together the sub-modules (geom, clip,
|
|
7
|
+
* poly, boxes, routing, rank, helpers, chain) to compute and install
|
|
8
|
+
* Bezier splines and arrowhead polygons on every edge in the graph.
|
|
9
|
+
*
|
|
10
|
+
* @see lib/dotgen/dotsplines.c:make_regular_edge
|
|
11
|
+
* @see lib/common/splines.c:clip_and_install
|
|
12
|
+
* @see lib/common/routespl.c:routesplines_
|
|
13
|
+
* @see lib/common/arrows.c:arrow_type_normal
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { Graph } from '../../model/graph.js';
|
|
17
|
+
import type { Edge as GraphEdge } from '../../model/edge.js';
|
|
18
|
+
import { buildOutEdgeIndex } from '../../model/node.js';
|
|
19
|
+
import type { Point } from '../../model/geom.js';
|
|
20
|
+
import type { NodeBox } from './edge-route-geom.js';
|
|
21
|
+
import type { PortRoute } from './edge-route-routing.js';
|
|
22
|
+
import { resolvePort } from '../../common/splines-path-shared.js';
|
|
23
|
+
import { clipAndInstall } from '../../common/splines-clip.js';
|
|
24
|
+
|
|
25
|
+
import { normalizeVec } from './edge-route-geom.js';
|
|
26
|
+
import { arrowDrawOpsForEnd } from './edge-route-arrow.js';
|
|
27
|
+
import { linearBezier } from './edge-route-poly.js';
|
|
28
|
+
import { rankEdgeInfoOf } from './edge-route-rank.js';
|
|
29
|
+
import { routeRegularEdgeFaithful } from './edge-route-faithful.js';
|
|
30
|
+
import { edgeRouteCmp } from './edge-order.js';
|
|
31
|
+
import { isFlatAdjacent, makeFlatAdjEdges } from './splines-flat.js';
|
|
32
|
+
import { ShapeKind, type ShapeDesc } from '../../common/types.js';
|
|
33
|
+
import {
|
|
34
|
+
collectNonAdjacentFlatGroup, routeFlatEdgeGroupFaithful,
|
|
35
|
+
} from './splines-flat-multi.js';
|
|
36
|
+
import { makeFlatLabeledEdge, makeAdjFlatNoPortEdge } from './splines-flat-labeled.js';
|
|
37
|
+
import { EDGETYPE_SPLINE, swapEndsP, swapEdgeSpline, getMainEdge } from './splines.js';
|
|
38
|
+
import { FLATORDER } from './fastgr.js';
|
|
39
|
+
import { IGNORED } from './rank.js';
|
|
40
|
+
import { buildDotSinfo } from './self-loop.js';
|
|
41
|
+
|
|
42
|
+
import {
|
|
43
|
+
nodeBoxOf,
|
|
44
|
+
edgeRenderPenwidth,
|
|
45
|
+
edgePenwidthAttr,
|
|
46
|
+
installEdgeSpline,
|
|
47
|
+
straightEdgeSplineWithRank,
|
|
48
|
+
defaultEdgeDir,
|
|
49
|
+
} from './edge-route-helpers.js';
|
|
50
|
+
|
|
51
|
+
import {
|
|
52
|
+
routeBackEdge,
|
|
53
|
+
routeMultiRankEdgeFaithful,
|
|
54
|
+
makeFwdEdge,
|
|
55
|
+
} from './edge-route-chain.js';
|
|
56
|
+
|
|
57
|
+
// Suppress unused-import warning for re-exported symbols
|
|
58
|
+
void (linearBezier as unknown);
|
|
59
|
+
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Re-exports — callers that imported from this module keep working.
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
export { normalizeVec, negateVec, offsetPoint, clipToNodeBox } from './edge-route-geom.js';
|
|
65
|
+
export type { NodeBox } from './edge-route-geom.js';
|
|
66
|
+
export { xClipT, yClipT } from './edge-route-geom.js';
|
|
67
|
+
export {
|
|
68
|
+
bezierClipNode, makeBoxInsideFn, bezierSubdivide, tailArrowEndClip,
|
|
69
|
+
} from './edge-route-clip.js';
|
|
70
|
+
export {
|
|
71
|
+
boxesToPolygon, addForwardPolyPts, addReversePolyPts,
|
|
72
|
+
polyEdgesFromPts, computeSpline,
|
|
73
|
+
} from './edge-route-poly.js';
|
|
74
|
+
export { makeTailBox, makeHeadBox, makeMaximalBbox, makeRankBox } from './edge-route-boxes.js';
|
|
75
|
+
export type { RankBoxParams } from './edge-route-boxes.js';
|
|
76
|
+
export {
|
|
77
|
+
buildRankCorridor, clipToNodes, routeWithRank, routeSimple,
|
|
78
|
+
normalArrowLen,
|
|
79
|
+
} from './edge-route-routing.js';
|
|
80
|
+
export type { EdgeSplineResult, RankEdgeInfo } from './edge-route-routing.js';
|
|
81
|
+
export {
|
|
82
|
+
computeLeftBound, computeRightBound, rankHt, rankEdgeInfoOf,
|
|
83
|
+
getSplineBounds, resetSplineBounds,
|
|
84
|
+
} from './edge-route-rank.js';
|
|
85
|
+
export type { SplineBoundsSnapshot } from './edge-route-rank.js';
|
|
86
|
+
export { ARROW_LENGTH, ARROW_WIDTH_FACTOR, arrowheadPolygon } from './edge-route-arrow.js';
|
|
87
|
+
|
|
88
|
+
// Re-export helpers so existing callers keep working.
|
|
89
|
+
export {
|
|
90
|
+
nodeBoxOf, edgeRenderPenwidth, edgePenwidthAttr,
|
|
91
|
+
makeBezierRecord, makeSplineRecord, installEdgeSpline,
|
|
92
|
+
routeBezier, straightEdgeSplineWithRank,
|
|
93
|
+
} from './edge-route-helpers.js';
|
|
94
|
+
export {
|
|
95
|
+
routeBackEdge,
|
|
96
|
+
} from './edge-route-chain.js';
|
|
97
|
+
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// buildLinearBezier — alias kept for backward compatibility
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
/** Straight-line cubic Bezier at 1/3 and 2/3. @see lib/dotgen/dotsplines.c */
|
|
103
|
+
export function buildLinearBezier(p0: Point, p3: Point): Point[] {
|
|
104
|
+
return linearBezier(p0, p3);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// edgeDirection
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
/** Compute normalized tail→head direction between two node boxes. */
|
|
112
|
+
export function edgeDirection(tailBox: NodeBox, headBox: NodeBox): Point {
|
|
113
|
+
return normalizeVec({
|
|
114
|
+
x: headBox.center.x - tailBox.center.x,
|
|
115
|
+
y: headBox.center.y - tailBox.center.y,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Coordinate validity guards
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
|
|
123
|
+
/** True when both endpoints have defined coordinates. */
|
|
124
|
+
export function coordsDefined(e: GraphEdge): boolean {
|
|
125
|
+
return e.tail.info.coord !== undefined && e.head.info.coord !== undefined;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** True when both endpoints sit at the origin (un-initialised). */
|
|
129
|
+
export function bothAtOrigin(e: GraphEdge): boolean {
|
|
130
|
+
const tc = e.tail.info.coord;
|
|
131
|
+
const hc = e.head.info.coord;
|
|
132
|
+
return tc.x === 0 && tc.y === 0 && hc.x === 0 && hc.y === 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** True when the edge's endpoints have usable coordinates. */
|
|
136
|
+
export function hasValidCoords(e: GraphEdge): boolean {
|
|
137
|
+
return coordsDefined(e) && !bothAtOrigin(e);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// routeOneEdge / routeDotEdges
|
|
142
|
+
// @see lib/dotgen/dotsplines.c:dot_splines_
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
|
|
145
|
+
/** True when edge is a back-edge spanning multiple ranks (tail rank > head rank). */
|
|
146
|
+
function isMultiRankBackEdge(e: GraphEdge): boolean {
|
|
147
|
+
return e.info.to_virt !== undefined
|
|
148
|
+
&& (e.tail.info.rank ?? 0) > (e.head.info.rank ?? 0);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** True when forward edge spans more than one rank via a virtual chain. */
|
|
152
|
+
function isMultiRankFwdEdge(e: GraphEdge): boolean {
|
|
153
|
+
return e.info.to_virt !== undefined
|
|
154
|
+
&& (e.head.info.rank ?? 0) > (e.tail.info.rank ?? 0) + 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Route a multi-rank back/forward edge for the non-forward dir path through the
|
|
159
|
+
* faithful pipeline (clipAndInstall gates arrows by the dir attribute). Returns
|
|
160
|
+
* true when it handled the edge.
|
|
161
|
+
*/
|
|
162
|
+
function dispatchMultiRankNonForward(
|
|
163
|
+
e: GraphEdge, tailBox: NodeBox, headBox: NodeBox, g: Graph,
|
|
164
|
+
): boolean {
|
|
165
|
+
if (isMultiRankBackEdge(e)) {
|
|
166
|
+
routeBackEdge(e, tailBox, headBox, g);
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
if (isMultiRankFwdEdge(e)) return routeFaithfulMultiRank(e, g);
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Route a dir=back/both/none edge through the faithful pipeline. Adjacent back
|
|
175
|
+
* edges go via makefwdedge (T1); multi-rank back/forward via the chain pipeline;
|
|
176
|
+
* adjacent regular via make_regular_edge. clipAndInstall gates head/tail arrows
|
|
177
|
+
* by the dir attribute. @see lib/dotgen/dotsplines.c:make_regular_edge
|
|
178
|
+
*/
|
|
179
|
+
function routeEdgeNonForward(e: GraphEdge, g: Graph): void {
|
|
180
|
+
if (routeFaithfulAdjacentBack(e, g)) return; // T1 (AD-1): faithful adjacent back edge
|
|
181
|
+
const tailBox = nodeBoxOf(e.tail, g);
|
|
182
|
+
const headBox = nodeBoxOf(e.head, g);
|
|
183
|
+
if (dispatchMultiRankNonForward(e, tailBox, headBox, g)) return;
|
|
184
|
+
// Same-rank (flat) edges dispatch by topology regardless of ED_dir; the flat
|
|
185
|
+
// routers otherwise live only in the forward path, so reach them here too —
|
|
186
|
+
// e.g. a dir=both flat adjacent side-port edge (2437: AA3:se -> AA4:sw).
|
|
187
|
+
if (e.tail.info.rank !== undefined && e.tail.info.rank === e.head.info.rank
|
|
188
|
+
&& routeFlatEdge(e, g)) return;
|
|
189
|
+
routeFaithfulRegularPlain(e, g);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Build the active router's port data from an edge's resolved tail/head ports.
|
|
194
|
+
* Dynamic (`_`) ports are resolved against the opposite endpoint first. Returns
|
|
195
|
+
* `undefined` when neither end has an active port, so plain edges take the
|
|
196
|
+
* unchanged center-clip path (byte-stability gate).
|
|
197
|
+
* @see lib/common/splines.c:beginpath (P.start.p = coord + port.p; clip flag)
|
|
198
|
+
*/
|
|
199
|
+
function portRouteOf(e: GraphEdge): PortRoute | undefined {
|
|
200
|
+
const tp = resolvePort(e.tail, e.head, e.info.tail_port);
|
|
201
|
+
const hp = resolvePort(e.head, e.tail, e.info.head_port);
|
|
202
|
+
if (!tp.defined && !hp.defined) return undefined;
|
|
203
|
+
const tc = e.tail.info.coord;
|
|
204
|
+
const hc = e.head.info.coord;
|
|
205
|
+
return {
|
|
206
|
+
tailP: tp.defined ? { x: tc.x + tp.p.x, y: tc.y + tp.p.y } : null,
|
|
207
|
+
headP: hp.defined ? { x: hc.x + hp.p.x, y: hc.y + hp.p.y } : null,
|
|
208
|
+
clipTail: tp.defined ? tp.clip : true,
|
|
209
|
+
clipHead: hp.defined ? hp.clip : true,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Route a plain adjacent-rank forward edge through the faithful pipeline and
|
|
215
|
+
* install it. Returns false when the faithful path declines (not adjacent-rank),
|
|
216
|
+
* so the caller falls back to the fitter.
|
|
217
|
+
*/
|
|
218
|
+
function routeFaithfulRegularPlain(e: GraphEdge, g: Graph): boolean {
|
|
219
|
+
const pts = routeRegularEdgeFaithful(g, e);
|
|
220
|
+
if (pts === null) return false;
|
|
221
|
+
// routesplines failed after a full corridor attempt: C installs no spline
|
|
222
|
+
// and the edge is LOST (postproc warns, emit skips) — never straight-line
|
|
223
|
+
// synthesized. @see lib/dotgen/dotsplines.c:make_regular_edge (pn == 0)
|
|
224
|
+
if (pts === 'lost') { e.info.lost = true; return true; }
|
|
225
|
+
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Route an adjacent-rank back edge (head exactly one rank above tail) through
|
|
231
|
+
* the faithful pipeline (AD-1). A back edge is the forward edge with swapped
|
|
232
|
+
* ends (C `makefwdedge`): route the forward view as a plain adjacent edge, then
|
|
233
|
+
* `clipAndInstall` installs the forward-geometry spline on the ORIGINAL edge
|
|
234
|
+
* (makeFwdEdge sets `to_orig`/`edge_type`). `dotSplines_` runs `edgeNormalize`
|
|
235
|
+
* *before* `routeDotEdges`, so the global `swapSpline` pass has already run for
|
|
236
|
+
* this edge — apply the back-edge swap here so the spline runs tail→head with
|
|
237
|
+
* the arrow at the head. Returns false when `e` is not an adjacent back edge.
|
|
238
|
+
* @see lib/dotgen/dotsplines.c:make_regular_edge (BWDEDGE makefwdedge), edge_normalize
|
|
239
|
+
*/
|
|
240
|
+
function routeFaithfulAdjacentBack(e: GraphEdge, g: Graph): boolean {
|
|
241
|
+
const tr = e.tail.info.rank;
|
|
242
|
+
const hr = e.head.info.rank;
|
|
243
|
+
if (tr === undefined || hr === undefined || tr !== hr + 1) return false;
|
|
244
|
+
const fwd = makeFwdEdge(e);
|
|
245
|
+
const pts = routeRegularEdgeFaithful(g, fwd);
|
|
246
|
+
if (pts === null) return false;
|
|
247
|
+
if (pts === 'lost') { e.info.lost = true; return true; } // C: edge lost, no spline
|
|
248
|
+
clipAndInstall(fwd, fwd.head, pts, pts.length, buildDotSinfo());
|
|
249
|
+
if (swapEndsP(e)) swapEdgeSpline(e);
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/** Route and install spline + arrowhead(s) for a single edge. */
|
|
254
|
+
export function routeOneEdge(e: GraphEdge, g: Graph): void {
|
|
255
|
+
const dirAttr = e.attrs.get('dir') ?? defaultEdgeDir(g);
|
|
256
|
+
const pw = edgeRenderPenwidth(e);
|
|
257
|
+
if (dirAttr !== 'forward') {
|
|
258
|
+
routeEdgeNonForward(e, g);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (routeFaithfulAdjacentBack(e, g)) return; // T1 (AD-1): faithful adjacent back edge
|
|
262
|
+
const tailBox = nodeBoxOf(e.tail, g);
|
|
263
|
+
const headBox = nodeBoxOf(e.head, g);
|
|
264
|
+
if (isMultiRankBackEdge(e)) {
|
|
265
|
+
routeBackEdge(e, tailBox, headBox, g);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (isMultiRankFwdEdge(e)) {
|
|
269
|
+
routeFaithfulMultiRank(e, g); // T3 (AD-2): faithful chain pipeline
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
routeForwardEdge(e, g, tailBox, headBox, pw);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Route a multi-rank forward edge through the faithful chain pipeline (steers
|
|
277
|
+
* the port via REGULAREDGE side boxes, then routeSplines over the full virtual
|
|
278
|
+
* chain). Returns false when the faithful path declines the edge.
|
|
279
|
+
* @see lib/dotgen/dotsplines.c:make_regular_edge (hackflag forward path)
|
|
280
|
+
*/
|
|
281
|
+
function routeFaithfulMultiRank(e: GraphEdge, g: Graph): boolean {
|
|
282
|
+
const pts = routeMultiRankEdgeFaithful(g, e);
|
|
283
|
+
if (pts === null) return false;
|
|
284
|
+
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* True when either endpoint resolves to an active side-mask port (after dyna
|
|
290
|
+
* resolution). Such edges route through the faithful box-channel pipeline
|
|
291
|
+
* (AD2); plain and centre-only-port edges keep the simplified fitter so the
|
|
292
|
+
* 115 no-side-port goldens stay identical (AD3).
|
|
293
|
+
* @see lib/common/splines.c:beginpath (sidemask)
|
|
294
|
+
*/
|
|
295
|
+
function hasSidePort(e: GraphEdge): boolean {
|
|
296
|
+
const tp = resolvePort(e.tail, e.head, e.info.tail_port);
|
|
297
|
+
const hp = resolvePort(e.head, e.tail, e.info.head_port);
|
|
298
|
+
return (tp.side ?? 0) !== 0 || (hp.side ?? 0) !== 0;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** True when x is an unrouted adjacent same-rank side-port flat edge. */
|
|
302
|
+
function isGroupableFlat(x: GraphEdge, g: Graph): boolean {
|
|
303
|
+
return x.info.spl === undefined
|
|
304
|
+
&& x.tail.info.rank === x.head.info.rank
|
|
305
|
+
&& isFlatAdjacent(g, x) && hasSidePort(x);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Collect all unrouted adjacent same-rank side-port flat edges between e's two
|
|
310
|
+
* endpoints (either direction), ordered so group[0].tail is the lower-order
|
|
311
|
+
* (left) node. C's dispatch loop sorts edges by edgecmp (equivalent edges
|
|
312
|
+
* contiguous) and groups a run while `getmainedge(e0) === getmainedge(e1)`
|
|
313
|
+
* (dotsplines.c:343-356); it does NOT re-derive the group from a node-pair
|
|
314
|
+
* scan. Gate on getMainEdge equality (not just the unordered node pair) so
|
|
315
|
+
* two independent parallel edges that merely share endpoints, but resolve to
|
|
316
|
+
* different main edges (e.g. one is itself the main edge of a virtual chain,
|
|
317
|
+
* the other belongs to a different original edge), are NOT folded into one
|
|
318
|
+
* shared aux solve. C makes one make_flat_adj_edges call PER getmainedge run.
|
|
319
|
+
* @see lib/dotgen/dotsplines.c:343-378 (esp. line 356 `if (le0 != le1) break;`)
|
|
320
|
+
* @see lib/dotgen/dotsplines.c:make_flat_edge (makefwdedge of *edges), dot_splines_
|
|
321
|
+
*/
|
|
322
|
+
function collectAdjacentFlatGroup(e: GraphEdge, g: Graph): GraphEdge[] {
|
|
323
|
+
const u = e.tail, v = e.head;
|
|
324
|
+
const lo = (u.info.order ?? 0) <= (v.info.order ?? 0) ? u : v;
|
|
325
|
+
const me = getMainEdge(e);
|
|
326
|
+
const sharesPair = (x: GraphEdge): boolean =>
|
|
327
|
+
(x.tail === u && x.head === v) || (x.tail === v && x.head === u);
|
|
328
|
+
const group = g.edges.filter(x =>
|
|
329
|
+
sharesPair(x) && isGroupableFlat(x, g) && getMainEdge(x) === me);
|
|
330
|
+
group.sort((a, b) => Number(b.tail === lo) - Number(a.tail === lo) || a.seq - b.seq);
|
|
331
|
+
return group;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Route a side-port edge through the faithful `beginPath → routeSplines →
|
|
336
|
+
* endPath → clipAndInstall` pipeline. A same-rank edge routes via the flat
|
|
337
|
+
* pipeline (make_flat_edge); an adjacent-rank regular edge via
|
|
338
|
+
* make_regular_edge. Returns false when the faithful path declines the edge,
|
|
339
|
+
* so the caller falls back to the simplified fitter. clipAndInstall installs
|
|
340
|
+
* the spline and stashes arrow polygons — do not also call
|
|
341
|
+
* installEdgeSpline/arrowheadPolygon here.
|
|
342
|
+
* @see lib/dotgen/dotsplines.c:make_flat_edge, make_regular_edge
|
|
343
|
+
*/
|
|
344
|
+
function routeFaithfulSidePort(e: GraphEdge, g: Graph): boolean {
|
|
345
|
+
const sameRank = e.tail.info.rank !== undefined && e.tail.info.rank === e.head.info.rank;
|
|
346
|
+
// Adjacent flat endpoints route via the rotated-aux pipeline (make_flat_adj_edges),
|
|
347
|
+
// which installs the spline directly; the box channel handles non-adjacent flats.
|
|
348
|
+
// C groups ALL adjacent flats between a node pair into ONE aux call (cnt=N);
|
|
349
|
+
// route the whole group so the reversed back edge clones auxh->auxt and curls.
|
|
350
|
+
// @see lib/dotgen/dotsplines.c:dot_splines_ (ED_adjacent edge-group loop)
|
|
351
|
+
if (sameRank && isFlatAdjacent(g, e)) {
|
|
352
|
+
const group = collectAdjacentFlatGroup(e, g);
|
|
353
|
+
return makeFlatAdjEdges(g, group, group.length, EDGETYPE_SPLINE) === 0
|
|
354
|
+
&& e.info.spl !== undefined;
|
|
355
|
+
}
|
|
356
|
+
// Non-adjacent flats: C groups identical-port siblings into ONE make_flat_edge
|
|
357
|
+
// call and nests their splines (cnt-loop). Collect the group and route once;
|
|
358
|
+
// the group router clip-installs every sibling, so the main loop skips them.
|
|
359
|
+
// cnt=1 reduces to the former single routeFlatEdgeFaithful path (AD-1).
|
|
360
|
+
// @see lib/dotgen/dotsplines.c:make_flat_edge, make_flat_bottom_edges
|
|
361
|
+
if (sameRank) {
|
|
362
|
+
const group = collectNonAdjacentFlatGroup(e, g);
|
|
363
|
+
return routeFlatEdgeGroupFaithful(g, group, group.length) && e.info.spl !== undefined;
|
|
364
|
+
}
|
|
365
|
+
const pts = routeRegularEdgeFaithful(g, e);
|
|
366
|
+
if (pts === null) return false;
|
|
367
|
+
if (pts === 'lost') { e.info.lost = true; return true; } // C: edge lost, no spline
|
|
368
|
+
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** graphviz #1323: C make_flat_adj_edges bails on a flat edge between ADJACENT
|
|
373
|
+
* nodes with a record-shape endpoint — no spline is built, map_edge "lost"s it,
|
|
374
|
+
* and it is never drawn. Detect that case so the router leaves e.info.spl
|
|
375
|
+
* undefined (edgeHasDrawableContent then skips it), matching the oracle.
|
|
376
|
+
* @see lib/dotgen/dotsplines.c:make_flat_adj_edges */
|
|
377
|
+
function isLostFlatAdjRecordEdge(g: Graph, e: GraphEdge): boolean {
|
|
378
|
+
const tr = e.tail.info.rank;
|
|
379
|
+
if (tr === undefined || tr !== e.head.info.rank) return false;
|
|
380
|
+
if (!isFlatAdjacent(g, e)) return false;
|
|
381
|
+
const rec = (s: unknown): boolean => (s as ShapeDesc | undefined)?.kind === ShapeKind.SH_RECORD;
|
|
382
|
+
return rec(e.tail.info.shape) || rec(e.head.info.shape);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Dispatch a same-rank (flat) edge to its faithful router. C routes flat edges
|
|
387
|
+
* by topology in `dot_splines_` independent of ED_dir (only the arrowheads
|
|
388
|
+
* differ by direction), so this is reachable from both the forward and the
|
|
389
|
+
* non-forward (dir=both/back/none) paths. Returns true when the edge was
|
|
390
|
+
* consumed (routed, or intentionally left unrouted per #1323); false to let the
|
|
391
|
+
* caller fall through to the regular/fitter path.
|
|
392
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (flat edge group dispatch)
|
|
393
|
+
*/
|
|
394
|
+
function routeFlatEdge(e: GraphEdge, g: Graph): boolean {
|
|
395
|
+
if (isLostFlatAdjRecordEdge(g, e)) return true; // #1323: lost edge, leave unrouted
|
|
396
|
+
// Labeled same-rank edges: non-adjacent routes around the flat label vnode
|
|
397
|
+
// (make_flat_labeled_edge); adjacent no-port routes straight with the label
|
|
398
|
+
// above (make_flat_adj_edges → makeSimpleFlatLabels). Both decline for every
|
|
399
|
+
// other edge, so only labeled flats are diverted. @see dotsplines.c:1527-1533
|
|
400
|
+
if (makeFlatLabeledEdge(g, e)) return true;
|
|
401
|
+
if (makeAdjFlatNoPortEdge(g, e)) return true;
|
|
402
|
+
if (hasSidePort(e) && routeFaithfulSidePort(e, g)) return true;
|
|
403
|
+
// Non-adjacent unlabeled flat with no side port (e.g. a same-rank cross-cluster
|
|
404
|
+
// edge with an intervening node): C make_flat_edge routes it UP through the box
|
|
405
|
+
// corridor, not straight through. @see lib/dotgen/dotsplines.c:make_flat_edge
|
|
406
|
+
if (e.tail.info.rank !== undefined && e.tail.info.rank === e.head.info.rank
|
|
407
|
+
&& e.info.label === undefined && !isFlatAdjacent(g, e)) {
|
|
408
|
+
const group = collectNonAdjacentFlatGroup(e, g);
|
|
409
|
+
if (group.length > 0
|
|
410
|
+
&& routeFlatEdgeGroupFaithful(g, group, group.length)
|
|
411
|
+
&& e.info.spl !== undefined) return true;
|
|
412
|
+
}
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/** Route + install a plain forward edge, attaching declared ports if any. */
|
|
417
|
+
function routeForwardEdge(
|
|
418
|
+
e: GraphEdge, g: Graph, tailBox: NodeBox, headBox: NodeBox, pw: number,
|
|
419
|
+
): void {
|
|
420
|
+
if (routeFlatEdge(e, g)) return;
|
|
421
|
+
// T2 (AD-1/AD-2): plain adjacent-rank forward edges route through the faithful
|
|
422
|
+
// pathplan path (make_regular_edge). routeRegularEdgeFaithful declines (null)
|
|
423
|
+
// for anything not adjacent-rank, so the fitter below only handles declines.
|
|
424
|
+
if (routeFaithfulRegularPlain(e, g)) return;
|
|
425
|
+
const rankInfo = rankEdgeInfoOf(g, e.tail, e.head);
|
|
426
|
+
const result = straightEdgeSplineWithRank(
|
|
427
|
+
tailBox, headBox, rankInfo, edgePenwidthAttr(e), portRouteOf(e),
|
|
428
|
+
);
|
|
429
|
+
installEdgeSpline(e, result.bezierPts, result.arrowTip);
|
|
430
|
+
e.info.headArrowOps = arrowDrawOpsForEnd(e, 'head', result.arrowTip, result.arrowDir, pw);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Collect every real out-edge (same set as `g.nodes.values()` × out-edges) in
|
|
435
|
+
* C `dot_splines_` routing order: rank-major collection + `edgecmp` sort. Order
|
|
436
|
+
* matters because `recover_slack` mutates shared virtual nodes that other edges
|
|
437
|
+
* read as `maximal_bbox` neighbours (S1). When the graph is unranked, preserve
|
|
438
|
+
* the legacy insertion order (the sort keys are rank-derived).
|
|
439
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (edges list build + edgecmp sort)
|
|
440
|
+
*/
|
|
441
|
+
function orderedDotEdges(g: Graph): GraphEdge[] {
|
|
442
|
+
const outIdx = buildOutEdgeIndex(g);
|
|
443
|
+
const edges: GraphEdge[] = [];
|
|
444
|
+
for (const n of g.nodes.values()) {
|
|
445
|
+
for (const e of outIdx.get(n) ?? []) edges.push(e);
|
|
446
|
+
}
|
|
447
|
+
if (g.info.rank !== undefined) edges.sort(edgeRouteCmp);
|
|
448
|
+
return edges;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Compute and install edge splines for all unrouted edges in g.
|
|
453
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_
|
|
454
|
+
*/
|
|
455
|
+
/**
|
|
456
|
+
* Route one not-yet-routed edge, applying the `dot_splines_` skip guards. No-op
|
|
457
|
+
* if the edge is already routed or ineligible (FLATORDER/IGNORED, self-loop, or
|
|
458
|
+
* lacking valid coords). Used both by the unified `dotSplines_` loop — which
|
|
459
|
+
* routes lone edges at their `edgecmp` position, interleaved with groups, as C
|
|
460
|
+
* does — and by the `routeDotEdges` backstop sweep below.
|
|
461
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (per-edge dispatch + 295 skip)
|
|
462
|
+
*/
|
|
463
|
+
export function routeLoneEdge(e: GraphEdge, g: Graph): void {
|
|
464
|
+
// A lost edge (routesplines failure, C semantics) is consumed: C routes each
|
|
465
|
+
// edge exactly once, so the backstop sweep must not re-attempt it.
|
|
466
|
+
if (e.info.spl !== undefined || e.info.lost === true) return;
|
|
467
|
+
// C dot_splines_ skips FLATORDER/IGNORED edges when building the route list;
|
|
468
|
+
// an IGNORED edge (e.g. a concentrate-merged parallel duplicate) must get no
|
|
469
|
+
// spline so emit draws only the representative. @see dotsplines.c:295
|
|
470
|
+
const et = e.info.edge_type ?? 0;
|
|
471
|
+
if (et === FLATORDER || et === IGNORED) return;
|
|
472
|
+
// A *labeled* flat edge merged into a same-rank representative (flat_rev: the
|
|
473
|
+
// cycle back-edge of an opposing flat pair `a->b`/`b->a`) is routed by
|
|
474
|
+
// make_flat_labeled_edge like any other labeled flat. Its label node resolves
|
|
475
|
+
// through `to_virt` to a real endpoint, so routesplines returns no points: the
|
|
476
|
+
// leg installs no spline but its label is positioned (set). Whether that label
|
|
477
|
+
// is then drawn is decided by emit's edge_in_box (does the untranslated label
|
|
478
|
+
// overlap the clip), NOT by a routing-time skip. The former skip here was a
|
|
479
|
+
// band-aid that suppressed the label unconditionally; it is removed so the
|
|
480
|
+
// faithful edge_in_box gate (svg.ts) governs emission, matching C for both
|
|
481
|
+
// 2368 (on-canvas → drawn) and 2368_1 (off-canvas → suppressed).
|
|
482
|
+
// @see lib/dotgen/dotsplines.c:make_flat_labeled_edge, lib/common/emit.c:edge_in_box
|
|
483
|
+
if (e.tail === e.head) return;
|
|
484
|
+
if (!hasValidCoords(e)) return;
|
|
485
|
+
routeOneEdge(e, g);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
export function routeDotEdges(g: Graph): void {
|
|
489
|
+
for (const e of orderedDotEdges(g)) routeLoneEdge(e, g);
|
|
490
|
+
}
|