@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,301 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Internal splay-tree node type and top-down splay algorithm.
|
|
4
|
+
*
|
|
5
|
+
* Ported faithfully from lib/cdt/dttree.c (Kiem-Phong Vo, 5/25/96)
|
|
6
|
+
* and lib/cdt/dthdr.h.
|
|
7
|
+
*
|
|
8
|
+
* PARTITION NAMING INVERSION (preserved from C source):
|
|
9
|
+
* The dummy `link` node uses inverted field names:
|
|
10
|
+
* link.right → head of the LEFT partition (keys < target)
|
|
11
|
+
* link.left → head of the RIGHT partition (keys > target)
|
|
12
|
+
* `l` is the tail pointer into link.right (LEFT partition).
|
|
13
|
+
* `r` is the tail pointer into link.left (RIGHT partition).
|
|
14
|
+
* llink(l, x): l = l.right = x — extends LEFT partition
|
|
15
|
+
* rlink(r, x): r = r.left = x — extends RIGHT partition
|
|
16
|
+
*
|
|
17
|
+
* @see lib/cdt/dttree.c
|
|
18
|
+
* @see lib/cdt/dthdr.h
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { Comparator, KeyOf } from "./types.js";
|
|
22
|
+
|
|
23
|
+
/** Internal tree node — analogous to Dtlink_t in the C source. */
|
|
24
|
+
export interface SplayNode<T> {
|
|
25
|
+
left: SplayNode<T> | null; // hl._left
|
|
26
|
+
right: SplayNode<T> | null;
|
|
27
|
+
obj: T;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ─── Rotation helpers (mirrors of dthdr.h macros) ────────────────────────────
|
|
31
|
+
// rrotate(x, y): x.left = y.right; y.right = x
|
|
32
|
+
// lrotate(x, y): x.right = y.left; y.left = x
|
|
33
|
+
|
|
34
|
+
export function rrotate<T>(x: SplayNode<T>, y: SplayNode<T>): void {
|
|
35
|
+
x.left = y.right;
|
|
36
|
+
y.right = x;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function lrotate<T>(x: SplayNode<T>, y: SplayNode<T>): void {
|
|
40
|
+
x.right = y.left;
|
|
41
|
+
y.left = x;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Splay minimum of `subtree` to its root via repeated RROTATE.
|
|
46
|
+
* Returns the new root (which has no left child).
|
|
47
|
+
* Mirrors the DT_FIRST loop and the DT_NEXT subtree-min logic.
|
|
48
|
+
* @see lib/cdt/dttree.c:dttree DT_FIRST / DT_NEXT
|
|
49
|
+
*/
|
|
50
|
+
export function splayMin<T>(subtree: SplayNode<T>): SplayNode<T> {
|
|
51
|
+
let root = subtree;
|
|
52
|
+
let t: SplayNode<T> | null;
|
|
53
|
+
while ((t = root.left) !== null) {
|
|
54
|
+
rrotate(root, t); // root.left = t.right; t.right = root
|
|
55
|
+
root = t;
|
|
56
|
+
}
|
|
57
|
+
return root;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Splay maximum of `subtree` to its root via repeated LROTATE.
|
|
62
|
+
* Returns the new root (which has no right child).
|
|
63
|
+
* Mirrors the DT_LAST loop and the DT_PREV subtree-max logic.
|
|
64
|
+
* @see lib/cdt/dttree.c:dttree DT_LAST / DT_PREV
|
|
65
|
+
*/
|
|
66
|
+
export function splayMax<T>(subtree: SplayNode<T>): SplayNode<T> {
|
|
67
|
+
let root = subtree;
|
|
68
|
+
let t: SplayNode<T> | null;
|
|
69
|
+
while ((t = root.right) !== null) {
|
|
70
|
+
lrotate(root, t); // root.right = t.left; t.left = root
|
|
71
|
+
root = t;
|
|
72
|
+
}
|
|
73
|
+
return root;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Insert `node` as new root by splitting `oldRoot` at the given comparison
|
|
78
|
+
* result `cmp` (compare(newKey, oldRoot.key)).
|
|
79
|
+
* `cmp` must be non-zero (caller already checked for duplicate).
|
|
80
|
+
* Returns the new root.
|
|
81
|
+
* @see lib/cdt/dttree.c:dttree DT_INSERT (not-found branch)
|
|
82
|
+
*/
|
|
83
|
+
export function splaySplitInsert<T>(
|
|
84
|
+
node: SplayNode<T>,
|
|
85
|
+
oldRoot: SplayNode<T>,
|
|
86
|
+
cmp: number,
|
|
87
|
+
): SplayNode<T> {
|
|
88
|
+
if (cmp < 0) {
|
|
89
|
+
// new key < old root: old root becomes right child
|
|
90
|
+
node.left = oldRoot.left;
|
|
91
|
+
node.right = oldRoot;
|
|
92
|
+
oldRoot.left = null;
|
|
93
|
+
} else {
|
|
94
|
+
// new key > old root: old root becomes left child
|
|
95
|
+
node.right = oldRoot.right;
|
|
96
|
+
node.left = oldRoot;
|
|
97
|
+
oldRoot.right = null;
|
|
98
|
+
}
|
|
99
|
+
return node;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Integrated top-down splay + insert, faithfully mirroring CDT's
|
|
104
|
+
* `dttree.c` DT_INSERT for a Dtobag (duplicate keys allowed).
|
|
105
|
+
*
|
|
106
|
+
* This differs from `splay()` + a separate splice: CDT inserts the new node
|
|
107
|
+
* *while the tree is still partitioned* into the LEFT (keys < target) and
|
|
108
|
+
* RIGHT (keys > target) spine-trees, pushing the found equal-key node onto
|
|
109
|
+
* the head of the RIGHT partition before the new node becomes root. Splaying
|
|
110
|
+
* to reassemble a normal BST first and only then splicing produces a
|
|
111
|
+
* different equal-key sub-order — which is load-bearing for the xlabel R-tree
|
|
112
|
+
* (its Hilbert-bag drain order, and therefore the tree it builds, depends on
|
|
113
|
+
* the exact duplicate ordering; see label/xlabels.ts).
|
|
114
|
+
*
|
|
115
|
+
* The do-search loop is identical to `splay()`; only the terminal insert
|
|
116
|
+
* differs. Returns the new root (always `node`).
|
|
117
|
+
*
|
|
118
|
+
* @see lib/cdt/dttree.c:dttree DT_INSERT (do_search + DT_OBAG found/has_root)
|
|
119
|
+
*/
|
|
120
|
+
export function bagInsert<T, K>(
|
|
121
|
+
root: SplayNode<T>,
|
|
122
|
+
node: SplayNode<T>,
|
|
123
|
+
keyOf: KeyOf<T, K>,
|
|
124
|
+
compare: Comparator<K>,
|
|
125
|
+
): SplayNode<T> {
|
|
126
|
+
const key = keyOf(node.obj);
|
|
127
|
+
// Dummy: link.right = LEFT partition head, link.left = RIGHT partition head.
|
|
128
|
+
const link: SplayNode<T> = { left: null, right: null, obj: undefined as unknown as T };
|
|
129
|
+
let l: SplayNode<T> = link; // LEFT tail (llink: l.right = x; l = x)
|
|
130
|
+
let r: SplayNode<T> = link; // RIGHT tail (rlink: r.left = x; r = x)
|
|
131
|
+
let cur: SplayNode<T> | null = root;
|
|
132
|
+
|
|
133
|
+
outer: while (cur !== null) {
|
|
134
|
+
const cmp = compare(key, keyOf(cur.obj));
|
|
135
|
+
if (cmp === 0) break;
|
|
136
|
+
else if (cmp < 0) {
|
|
137
|
+
const t: SplayNode<T> | null = cur.left;
|
|
138
|
+
if (t !== null) {
|
|
139
|
+
const cmp2 = compare(key, keyOf(t.obj));
|
|
140
|
+
if (cmp2 < 0) { rrotate(cur, t); r.left = t; r = t; cur = t.left; }
|
|
141
|
+
else if (cmp2 === 0) { r.left = cur; r = cur; cur = t; break outer; }
|
|
142
|
+
else { l.right = t; l = t; r.left = cur; r = cur; cur = t.right; }
|
|
143
|
+
if (cur === null) break;
|
|
144
|
+
} else { r.left = cur; r = cur; cur = null; break; }
|
|
145
|
+
} else {
|
|
146
|
+
const t: SplayNode<T> | null = cur.right;
|
|
147
|
+
if (t !== null) {
|
|
148
|
+
const cmp2 = compare(key, keyOf(t.obj));
|
|
149
|
+
if (cmp2 > 0) { lrotate(cur, t); l.right = t; l = t; cur = t.right; }
|
|
150
|
+
else if (cmp2 === 0) { l.right = cur; l = cur; cur = t; break outer; }
|
|
151
|
+
else { r.left = t; r = t; l.right = cur; l = cur; cur = t.left; }
|
|
152
|
+
if (cur === null) break;
|
|
153
|
+
} else { l.right = cur; l = cur; cur = null; break; }
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (cur !== null) {
|
|
158
|
+
// Found equal key — CDT DT_OBAG found branch: close the partition tails,
|
|
159
|
+
// push the found node onto the RIGHT partition head, then new node roots.
|
|
160
|
+
l.right = cur.left;
|
|
161
|
+
r.left = cur.right;
|
|
162
|
+
cur.left = null;
|
|
163
|
+
cur.right = link.left;
|
|
164
|
+
link.left = cur;
|
|
165
|
+
} else {
|
|
166
|
+
// Not found — close partition tails.
|
|
167
|
+
r.left = null;
|
|
168
|
+
l.right = null;
|
|
169
|
+
}
|
|
170
|
+
// has_root: new node takes the two partitions as its subtrees.
|
|
171
|
+
node.left = link.right;
|
|
172
|
+
node.right = link.left;
|
|
173
|
+
return node;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Top-down splay.
|
|
178
|
+
*
|
|
179
|
+
* Splays the node whose key equals `key` (or the closest node) to root.
|
|
180
|
+
* Returns the new root. Always performs structural mutations.
|
|
181
|
+
*
|
|
182
|
+
* @see lib/cdt/dttree.c:dttree (do_search loop)
|
|
183
|
+
*/
|
|
184
|
+
export function splay<T, K>(
|
|
185
|
+
root: SplayNode<T>,
|
|
186
|
+
key: K,
|
|
187
|
+
keyOf: KeyOf<T, K>,
|
|
188
|
+
compare: Comparator<K>,
|
|
189
|
+
): SplayNode<T> {
|
|
190
|
+
// Dummy node: .right = LEFT partition head, .left = RIGHT partition head
|
|
191
|
+
const link: SplayNode<T> = {
|
|
192
|
+
left: null,
|
|
193
|
+
right: null,
|
|
194
|
+
obj: undefined as unknown as T,
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// l = tail of LEFT partition (extended via l.right = llink)
|
|
198
|
+
// r = tail of RIGHT partition (extended via r.left = rlink)
|
|
199
|
+
let l: SplayNode<T> = link;
|
|
200
|
+
let r: SplayNode<T> = link;
|
|
201
|
+
let cur: SplayNode<T> | null = root;
|
|
202
|
+
|
|
203
|
+
outer: while (cur !== null) {
|
|
204
|
+
const cmp = compare(key, keyOf(cur.obj));
|
|
205
|
+
|
|
206
|
+
if (cmp === 0) {
|
|
207
|
+
break;
|
|
208
|
+
} else if (cmp < 0) {
|
|
209
|
+
const t: SplayNode<T> | null = cur.left;
|
|
210
|
+
if (t !== null) {
|
|
211
|
+
const cmp2 = compare(key, keyOf(t.obj));
|
|
212
|
+
if (cmp2 < 0) {
|
|
213
|
+
// zig-zig right: rrotate(cur, t) then rlink(r, t)
|
|
214
|
+
rrotate(cur, t); // cur.left = t.right; t.right = cur
|
|
215
|
+
r.left = t; r = t; // rlink: extend RIGHT partition
|
|
216
|
+
cur = t.left;
|
|
217
|
+
} else if (cmp2 === 0) {
|
|
218
|
+
// llink(l, t) — wait, C says: rlink(r, cur); root = t
|
|
219
|
+
// From dttree.c: else if(cmp==0){ llink(l,root); root = t; break; }
|
|
220
|
+
// (when we're going left and find key at t)
|
|
221
|
+
r.left = cur; r = cur; // rlink(r, cur)
|
|
222
|
+
cur = t;
|
|
223
|
+
break outer;
|
|
224
|
+
} else {
|
|
225
|
+
// cmp2 > 0: llink(l, t) then rlink(r, cur)
|
|
226
|
+
l.right = t; l = t; // llink: extend LEFT partition
|
|
227
|
+
r.left = cur; r = cur; // rlink: extend RIGHT partition
|
|
228
|
+
cur = t.right;
|
|
229
|
+
}
|
|
230
|
+
if (cur === null) break;
|
|
231
|
+
} else {
|
|
232
|
+
// no left child: rlink(r, cur)
|
|
233
|
+
r.left = cur; r = cur;
|
|
234
|
+
cur = null;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
} else {
|
|
238
|
+
// cmp > 0
|
|
239
|
+
const t: SplayNode<T> | null = cur.right;
|
|
240
|
+
if (t !== null) {
|
|
241
|
+
const cmp2 = compare(key, keyOf(t.obj));
|
|
242
|
+
if (cmp2 > 0) {
|
|
243
|
+
// zig-zig left: lrotate(cur, t) then llink(l, t)
|
|
244
|
+
lrotate(cur, t); // cur.right = t.left; t.left = cur
|
|
245
|
+
l.right = t; l = t; // llink: extend LEFT partition
|
|
246
|
+
cur = t.right;
|
|
247
|
+
} else if (cmp2 === 0) {
|
|
248
|
+
// From dttree.c: else if(cmp==0){ llink(l,root); root = t; break; }
|
|
249
|
+
l.right = cur; l = cur; // llink(l, cur)
|
|
250
|
+
cur = t;
|
|
251
|
+
break outer;
|
|
252
|
+
} else {
|
|
253
|
+
// cmp2 < 0: rlink(r, t) then llink(l, cur)
|
|
254
|
+
r.left = t; r = t; // rlink: extend RIGHT partition
|
|
255
|
+
l.right = cur; l = cur; // llink: extend LEFT partition
|
|
256
|
+
cur = t.left;
|
|
257
|
+
}
|
|
258
|
+
if (cur === null) break;
|
|
259
|
+
} else {
|
|
260
|
+
// no right child: llink(l, cur)
|
|
261
|
+
l.right = cur; l = cur;
|
|
262
|
+
cur = null;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// Reassemble tree
|
|
269
|
+
if (cur !== null) {
|
|
270
|
+
// Found: close partitions, reattach
|
|
271
|
+
l.right = cur.left;
|
|
272
|
+
r.left = cur.right;
|
|
273
|
+
cur.left = link.right; // LEFT partition → left subtree
|
|
274
|
+
cur.right = link.left; // RIGHT partition → right subtree
|
|
275
|
+
return cur;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Not found: close partition tails, merge via rightmost-of-left
|
|
279
|
+
r.left = null;
|
|
280
|
+
l.right = null;
|
|
281
|
+
|
|
282
|
+
const leftPart = link.right;
|
|
283
|
+
const rightPart = link.left;
|
|
284
|
+
|
|
285
|
+
// After the search fails, each partition is a right/left-spine chain
|
|
286
|
+
// whose HEAD is the first (largest/smallest) node added. We must splay
|
|
287
|
+
// the true predecessor/successor to root so that splaySplitInsert can
|
|
288
|
+
// split at a node adjacent to the missing key.
|
|
289
|
+
//
|
|
290
|
+
// leftPart chain: connected via .right (largest-first chain, head is
|
|
291
|
+
// largest key < target). splayMax(leftPart) brings true predecessor
|
|
292
|
+
// to root.
|
|
293
|
+
// rightPart chain: connected via .left (smallest-last chain, tail is
|
|
294
|
+
// smallest key > target = true successor). splayMin(rightPart)
|
|
295
|
+
// brings true successor to root.
|
|
296
|
+
if (leftPart === null) return splayMin(rightPart!);
|
|
297
|
+
const maxLeft = splayMax(leftPart);
|
|
298
|
+
if (rightPart === null) return maxLeft;
|
|
299
|
+
maxLeft.right = rightPart;
|
|
300
|
+
return maxLeft;
|
|
301
|
+
}
|
package/src/cdt/splay.ts
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* DtSplay — ordered set (DT_OSET) backed by a top-down splay tree.
|
|
4
|
+
*
|
|
5
|
+
* Iteration order: ascending by comparator (same as DT_OSET in the C source).
|
|
6
|
+
* Every operation is a structural mutation (splay rotation) — intentional.
|
|
7
|
+
*
|
|
8
|
+
* @see lib/cdt/dttree.c
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { Comparator, KeyOf } from "./types.js";
|
|
12
|
+
import {
|
|
13
|
+
lrotate,
|
|
14
|
+
rrotate,
|
|
15
|
+
splay,
|
|
16
|
+
splayMax,
|
|
17
|
+
splayMin,
|
|
18
|
+
splaySplitInsert,
|
|
19
|
+
} from "./splay-core.js";
|
|
20
|
+
import type { SplayNode } from "./splay-core.js";
|
|
21
|
+
|
|
22
|
+
export class DtSplay<T, K = T> {
|
|
23
|
+
/** Current root — analogous to dt->data.here in the C source. */
|
|
24
|
+
private _root: SplayNode<T> | null = null;
|
|
25
|
+
private _size = 0;
|
|
26
|
+
private readonly _keyOf: KeyOf<T, K>;
|
|
27
|
+
private readonly _compare: Comparator<K>;
|
|
28
|
+
|
|
29
|
+
constructor(keyOf: KeyOf<T, K>, compare: Comparator<K>) {
|
|
30
|
+
this._keyOf = keyOf;
|
|
31
|
+
this._compare = compare;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** @see lib/cdt/dtsize.c:dtsize */
|
|
35
|
+
size(): number { return this._size; }
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Insert obj. If the key already exists returns the existing object
|
|
39
|
+
* unchanged (DT_OSET: no duplicates).
|
|
40
|
+
* @see lib/cdt/dttree.c:dttree DT_INSERT
|
|
41
|
+
*/
|
|
42
|
+
insert(obj: T): T {
|
|
43
|
+
if (this._root === null) {
|
|
44
|
+
this._root = { left: null, right: null, obj };
|
|
45
|
+
this._size++;
|
|
46
|
+
return obj;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const key = this._keyOf(obj);
|
|
50
|
+
this._root = splay(this._root, key, this._keyOf, this._compare);
|
|
51
|
+
const cmp = this._compare(key, this._keyOf(this._root.obj));
|
|
52
|
+
|
|
53
|
+
if (cmp === 0) return this._root.obj; // DT_OSET: return existing
|
|
54
|
+
|
|
55
|
+
const node: SplayNode<T> = { left: null, right: null, obj };
|
|
56
|
+
this._root = splaySplitInsert(node, this._root, cmp);
|
|
57
|
+
this._size++;
|
|
58
|
+
return obj;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Delete obj by key. Returns true if found and removed.
|
|
63
|
+
* @see lib/cdt/dttree.c:dttree DT_DELETE
|
|
64
|
+
*/
|
|
65
|
+
delete(obj: T): boolean {
|
|
66
|
+
if (this._root === null) return false;
|
|
67
|
+
|
|
68
|
+
const key = this._keyOf(obj);
|
|
69
|
+
this._root = splay(this._root, key, this._keyOf, this._compare);
|
|
70
|
+
if (this._compare(key, this._keyOf(this._root.obj)) !== 0) return false;
|
|
71
|
+
|
|
72
|
+
const left = this._root.left;
|
|
73
|
+
const right = this._root.right;
|
|
74
|
+
if (left === null) {
|
|
75
|
+
this._root = right;
|
|
76
|
+
} else {
|
|
77
|
+
const maxLeft = splayMax(left);
|
|
78
|
+
maxLeft.right = right;
|
|
79
|
+
this._root = maxLeft;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
this._size--;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Search by key. Splays found node to root.
|
|
88
|
+
* @see lib/cdt/dttree.c:dttree DT_SEARCH
|
|
89
|
+
*/
|
|
90
|
+
search(key: K): T | undefined {
|
|
91
|
+
if (this._root === null) return undefined;
|
|
92
|
+
this._root = splay(this._root, key, this._keyOf, this._compare);
|
|
93
|
+
return this._compare(key, this._keyOf(this._root.obj)) === 0
|
|
94
|
+
? this._root.obj : undefined;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Return the minimum element; splays it to root.
|
|
99
|
+
* @see lib/cdt/dttree.c:dttree DT_FIRST
|
|
100
|
+
*/
|
|
101
|
+
first(): T | undefined {
|
|
102
|
+
if (this._root === null) return undefined;
|
|
103
|
+
this._root = splayMin(this._root);
|
|
104
|
+
return this._root.obj;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Return the in-order successor of obj.
|
|
109
|
+
* @see lib/cdt/dttree.c:dttree DT_NEXT
|
|
110
|
+
*/
|
|
111
|
+
next(obj: T): T | undefined {
|
|
112
|
+
if (this._root === null) return undefined;
|
|
113
|
+
|
|
114
|
+
const key = this._keyOf(obj);
|
|
115
|
+
this._root = splay(this._root, key, this._keyOf, this._compare);
|
|
116
|
+
const cmp = this._compare(key, this._keyOf(this._root.obj));
|
|
117
|
+
|
|
118
|
+
// When no exact match and key < root.key, root IS the successor.
|
|
119
|
+
if (cmp < 0) return this._root.obj;
|
|
120
|
+
|
|
121
|
+
const right = this._root.right;
|
|
122
|
+
if (right === null) return undefined;
|
|
123
|
+
|
|
124
|
+
// Splay min of right subtree, attach old root as its left child.
|
|
125
|
+
const minNode = splayMin(right);
|
|
126
|
+
this._root.right = null;
|
|
127
|
+
minNode.left = this._root;
|
|
128
|
+
this._root = minNode;
|
|
129
|
+
return minNode.obj;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Return the maximum element; splays it to root.
|
|
134
|
+
* @see lib/cdt/dttree.c:dttree DT_LAST
|
|
135
|
+
*/
|
|
136
|
+
last(): T | undefined {
|
|
137
|
+
if (this._root === null) return undefined;
|
|
138
|
+
this._root = splayMax(this._root);
|
|
139
|
+
return this._root.obj;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Return the in-order predecessor of obj.
|
|
144
|
+
* @see lib/cdt/dttree.c:dttree DT_PREV
|
|
145
|
+
*/
|
|
146
|
+
prev(obj: T): T | undefined {
|
|
147
|
+
if (this._root === null) return undefined;
|
|
148
|
+
|
|
149
|
+
const key = this._keyOf(obj);
|
|
150
|
+
this._root = splay(this._root, key, this._keyOf, this._compare);
|
|
151
|
+
const cmp = this._compare(key, this._keyOf(this._root.obj));
|
|
152
|
+
|
|
153
|
+
// When no exact match and key > root.key, root IS the predecessor.
|
|
154
|
+
if (cmp > 0) return this._root.obj;
|
|
155
|
+
|
|
156
|
+
const left = this._root.left;
|
|
157
|
+
if (left === null) return undefined;
|
|
158
|
+
|
|
159
|
+
// Splay max of left subtree, attach old root as its right child.
|
|
160
|
+
const maxNode = splayMax(left);
|
|
161
|
+
this._root.left = null;
|
|
162
|
+
maxNode.right = this._root;
|
|
163
|
+
this._root = maxNode;
|
|
164
|
+
return maxNode.obj;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Remove all elements. @see lib/cdt/dttree.c:dttree DT_CLEAR */
|
|
168
|
+
clear(): void {
|
|
169
|
+
this._root = null;
|
|
170
|
+
this._size = 0;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Iterate in ascending comparator order via first() / next().
|
|
175
|
+
* Each step is a structural mutation per C DT_OSET spec.
|
|
176
|
+
*/
|
|
177
|
+
[Symbol.iterator](): Iterator<T> {
|
|
178
|
+
let current: T | undefined = this.first();
|
|
179
|
+
const self = this;
|
|
180
|
+
return {
|
|
181
|
+
next(): IteratorResult<T> {
|
|
182
|
+
if (current === undefined) {
|
|
183
|
+
return { value: undefined as unknown as T, done: true };
|
|
184
|
+
}
|
|
185
|
+
const value = current;
|
|
186
|
+
current = self.next(value);
|
|
187
|
+
return { value, done: false };
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* dtStrHash — polynomial rolling hash for null-terminated strings.
|
|
4
|
+
*
|
|
5
|
+
* Exact port of dtstrhash() from lib/cdt/dtstrhash.c (Kiem-Phong Vo, 02/28/03).
|
|
6
|
+
*
|
|
7
|
+
* Algorithm (n <= 0 / string mode):
|
|
8
|
+
* Advance 2 bytes per step; if the second byte is \0, advance only 1.
|
|
9
|
+
* h = (h + (s[0] << 8) + s[1]) * DT_PRIME at each step.
|
|
10
|
+
* Add string length at the end: (h + n) * DT_PRIME.
|
|
11
|
+
*
|
|
12
|
+
* The unusual 2-byte stepping with the \0 guard is a micro-optimisation in
|
|
13
|
+
* the original C and must be preserved exactly to produce matching hash values.
|
|
14
|
+
*
|
|
15
|
+
* @see lib/cdt/dtstrhash.c:dtstrhash
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** 2#00000001 00000101 00010011 00110011 @see dtstrhash.c:DT_PRIME */
|
|
19
|
+
const DT_PRIME = 17109811;
|
|
20
|
+
|
|
21
|
+
/** Unsigned 32-bit multiply — mirrors C `unsigned` wrap-around. */
|
|
22
|
+
function umul32(a: number, b: number): number {
|
|
23
|
+
// Use Math.imul for correct 32-bit integer multiply, then force unsigned.
|
|
24
|
+
return Math.imul(a, b) >>> 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Hash a JavaScript string using the dtstrhash algorithm (n <= 0 / string mode).
|
|
29
|
+
*
|
|
30
|
+
* TypeScript strings are UTF-16; we operate on char codes directly to match
|
|
31
|
+
* the C behaviour of treating each character as one byte (ASCII / Latin-1).
|
|
32
|
+
* Callers using non-ASCII keys must ensure their comparator is consistent.
|
|
33
|
+
*
|
|
34
|
+
* @see lib/cdt/dtstrhash.c:dtstrhash
|
|
35
|
+
*/
|
|
36
|
+
export function dtStrHash(s: string): number {
|
|
37
|
+
let h = 0;
|
|
38
|
+
let i = 0;
|
|
39
|
+
const len = s.length;
|
|
40
|
+
|
|
41
|
+
// for(; *s != 0; s += s[1] ? 2 : 1)
|
|
42
|
+
// h = (h + ((unsigned)s[0] << 8u) + (unsigned)s[1]) * DT_PRIME;
|
|
43
|
+
while (i < len) {
|
|
44
|
+
const b0 = s.charCodeAt(i) & 0xff;
|
|
45
|
+
const b1 = (i + 1 < len) ? (s.charCodeAt(i + 1) & 0xff) : 0;
|
|
46
|
+
h = umul32((h + (b0 << 8) + b1) >>> 0, DT_PRIME);
|
|
47
|
+
i += b1 !== 0 ? 2 : 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// return (h + (unsigned)n) * DT_PRIME
|
|
51
|
+
return umul32((h + len) >>> 0, DT_PRIME);
|
|
52
|
+
}
|
package/src/cdt/types.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Shared type definitions for lib/cdt.
|
|
4
|
+
* Kept in a leaf module to avoid circular imports.
|
|
5
|
+
*
|
|
6
|
+
* @see lib/cdt/cdt.h
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** Key comparator: returns negative, zero, or positive. @see Dtcompar_f */
|
|
10
|
+
export type Comparator<K> = (a: K, b: K) => number;
|
|
11
|
+
|
|
12
|
+
/** Extract the key from an object. @see Dtdisc_t */
|
|
13
|
+
export type KeyOf<T, K> = (obj: T) => K;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Arithmetic primitives shared with the C reference build.
|
|
5
|
+
*
|
|
6
|
+
* @see lib/common/arith.h
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* C rounding: round half **away from zero**.
|
|
11
|
+
*
|
|
12
|
+
* This is the single shared implementation of the one rounding deviation that
|
|
13
|
+
* separates this port from C. Both C spellings agree on it:
|
|
14
|
+
*
|
|
15
|
+
* - libm `round()` — "rounding halfway cases away from zero" (C99 7.12.9.6),
|
|
16
|
+
* used directly across `lib/` (e.g. `lib/dotgen/compound.c:41`,
|
|
17
|
+
* `lib/pack/pack.c:435`, `lib/dotgen/position.c:966`).
|
|
18
|
+
* - the `ROUND` macro — `((f>=0)?(int)(f + .5):(int)(f - .5))`
|
|
19
|
+
* (`lib/common/arith.h:48`), whose truncating casts also break ties away
|
|
20
|
+
* from zero. `POINTS(a_inches)` (`lib/common/geom.h:62`) is `ROUND` too.
|
|
21
|
+
*
|
|
22
|
+
* JavaScript's `Math.round` breaks ties toward +∞ (`Math.round(-4.5) === -4`,
|
|
23
|
+
* C `round(-4.5) === -5`), so it diverges by 1 on **every exact negative
|
|
24
|
+
* half-integer**. Layout coordinates are routinely negative (center-origin
|
|
25
|
+
* engines, cluster walls left of an endpoint, port offsets from a node centre)
|
|
26
|
+
* and are often exact integers or halves, so such ties are ordinary, not
|
|
27
|
+
* exotic.
|
|
28
|
+
*
|
|
29
|
+
* Use this for every site that mirrors a C `round()`/`ROUND()`/`POINTS()`,
|
|
30
|
+
* including sites whose argument happens to be non-negative today — it costs
|
|
31
|
+
* nothing and states the intent. Do **not** use it where C rounds by some
|
|
32
|
+
* other rule (`(int)` truncation, `floor`, printf `%.0f` banker's rounding).
|
|
33
|
+
*
|
|
34
|
+
* @see lib/common/arith.h:48 (ROUND)
|
|
35
|
+
* @see C99 7.12.9.6 (round)
|
|
36
|
+
*/
|
|
37
|
+
export function cround(v: number): number {
|
|
38
|
+
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
39
|
+
}
|