@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,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cluster expansion, rank merging, cluster marking, and skeleton building
|
|
3
|
+
* for the dot layout engine.
|
|
4
|
+
*
|
|
5
|
+
* @see lib/dotgen/cluster.c
|
|
6
|
+
*/
|
|
7
|
+
import type { Graph } from '../../model/graph.js';
|
|
8
|
+
import type { Node } from '../../model/node.js';
|
|
9
|
+
import type { Edge } from '../../model/edge.js';
|
|
10
|
+
import type { MincrossContext } from './mincross-utils.js';
|
|
11
|
+
import { mergeChain } from './classify.js';
|
|
12
|
+
export { CLUSTER_EDGE } from './cluster-path.js';
|
|
13
|
+
export { mapInterclustNode } from './cluster-path.js';
|
|
14
|
+
export { mergeChain };
|
|
15
|
+
/**
|
|
16
|
+
* True when edges e and f can be merged as parallel intercluster edges.
|
|
17
|
+
* Must match C exactly: same tail, same head, same label identity, and equal ports.
|
|
18
|
+
*
|
|
19
|
+
* @see lib/dotgen/class2.c:mergeable
|
|
20
|
+
*/
|
|
21
|
+
export declare function interclexpMergeable(prev: Edge | undefined, e: Edge): boolean;
|
|
22
|
+
/** Rank equality helper — extracts ?? so callers stay below CCN 10. */
|
|
23
|
+
export declare function interclexpRanksEq(e: Edge): boolean;
|
|
24
|
+
/** Head-rank-higher helper — extracts ?? so callers stay below CCN 10. */
|
|
25
|
+
export declare function interclexpHeadHigher(e: Edge): boolean;
|
|
26
|
+
/** @see lib/dotgen/cluster.c:interclexp (flat edge case) */
|
|
27
|
+
export declare function interclexpFlat(g: Graph, e: Edge, prev: Edge | undefined): Edge | undefined;
|
|
28
|
+
/** @see lib/dotgen/cluster.c:interclexp (mergeable multi-edge case) */
|
|
29
|
+
export declare function interclexpMergeCase(subg: Graph, e: Edge, prev: Edge): Edge | undefined;
|
|
30
|
+
/** @see lib/dotgen/cluster.c:interclexp (single edge processing) */
|
|
31
|
+
export declare function interclexpOneEdge(subg: Graph, g: Graph, e: Edge, prev: Edge | undefined): Edge | undefined;
|
|
32
|
+
/** @see lib/dotgen/cluster.c:interclexp */
|
|
33
|
+
export declare function interclexp(subg: Graph): void;
|
|
34
|
+
/** Return [minrank, maxrank] defaults-to-0, factoring out ?? for callers. */
|
|
35
|
+
export declare function subgraphBounds(g: Graph): [number, number];
|
|
36
|
+
/** @see lib/dotgen/cluster.c:merge_ranks (slot setup for one rank) */
|
|
37
|
+
export declare function mergeRanksSetup(subg: Graph, root: Graph, r: number, pos: number): number;
|
|
38
|
+
/** @see lib/dotgen/cluster.c:merge_ranks (node move for one rank) */
|
|
39
|
+
export declare function mergeRanksInstall(subg: Graph, root: Graph, r: number, ipos: number): void;
|
|
40
|
+
/** @see lib/dotgen/cluster.c:merge_ranks (per-rank body) */
|
|
41
|
+
export declare function mergeRanksOne(subg: Graph, root: Graph, r: number): void;
|
|
42
|
+
/** @see lib/dotgen/cluster.c:merge_ranks */
|
|
43
|
+
export declare function mergeRanks(subg: Graph): void;
|
|
44
|
+
/** @see lib/dotgen/cluster.c:remove_rankleaders */
|
|
45
|
+
export declare function removeRankleaders(g: Graph): void;
|
|
46
|
+
/** Minimal MincrossContext for cluster expansion (no crossing minimization). */
|
|
47
|
+
export declare function makeClusterCtx(root: Graph, mn: number, mx: number): MincrossContext;
|
|
48
|
+
/** @see lib/dotgen/cluster.c:expand_cluster */
|
|
49
|
+
export declare function expandCluster(subg: Graph): number;
|
|
50
|
+
/** @see lib/dotgen/cluster.c:mark_clusters (virtual node marking) */
|
|
51
|
+
export declare function markClustersVnodes(clust: Graph, n: Node): void;
|
|
52
|
+
/**
|
|
53
|
+
* Mirror cgraph agdelnode(clust, n): remove the node from the cluster subgraph
|
|
54
|
+
* AND delete its incident edges from the subgraph (node_induce/mark_clusters
|
|
55
|
+
* induce root edges whose endpoints are transient cluster members; deleting only
|
|
56
|
+
* the node leaves the edge behind, so agContainsEdge wrongly reports it internal
|
|
57
|
+
* — 1332 chain orphaned, b53 foreign node re-ranked). agdelete affects the
|
|
58
|
+
* subgraph only, not root/ancestors. @see lib/dotgen/cluster.c:mark_clusters
|
|
59
|
+
*/
|
|
60
|
+
export declare function agDeleteFromCluster(clust: Graph, n: Node): void;
|
|
61
|
+
/**
|
|
62
|
+
* C node_induce first loop: a node is in at most one cluster at this level. A
|
|
63
|
+
* node already claimed by an earlier sibling cluster (ranktype set, or contained
|
|
64
|
+
* in another of par's clusters) is agdeleted from clust — node AND incident
|
|
65
|
+
* edges — so this cluster's internal dot1Rank does not re-rank the foreign node
|
|
66
|
+
* (b53: node_49 owned by cluster_node_43 was also ranked by cluster_node_52,
|
|
67
|
+
* clobbering its rank). makeNewCluster has not yet added clust to par.clust, so
|
|
68
|
+
* par.clust holds only earlier siblings. @see lib/dotgen/rank.c:node_induce
|
|
69
|
+
*/
|
|
70
|
+
export declare function pruneForeignClusterNodes(par: Graph, clust: Graph): void;
|
|
71
|
+
/**
|
|
72
|
+
* mark_clusters per-node: claim `n` for `clust`, or agdelete it if already
|
|
73
|
+
* claimed (first-cluster-wins). ranktype defaults to NORMAL(==0) in C (calloc);
|
|
74
|
+
* TS leaves it undefined, so coerce undefined→0 — else untouched NORMAL nodes
|
|
75
|
+
* are wrongly skipped and never receive ND_clust. @see lib/dotgen/cluster.c:mark_clusters
|
|
76
|
+
*/
|
|
77
|
+
export declare function markClusterNode(clust: Graph, n: Node, g: Graph): void;
|
|
78
|
+
/** @see lib/dotgen/cluster.c:mark_clusters */
|
|
79
|
+
export declare function markClusters(g: Graph): void;
|
|
80
|
+
/** @see lib/dotgen/cluster.c:build_skeleton (edge span accumulation) */
|
|
81
|
+
export declare function buildSkeletonEdgeCounts(subg: Graph, v: Node): void;
|
|
82
|
+
/** @see lib/dotgen/cluster.c:build_skeleton (per-node count update) */
|
|
83
|
+
export declare function buildSkeletonCountsNode(subg: Graph, v: Node): void;
|
|
84
|
+
/** @see lib/dotgen/cluster.c:build_skeleton (trim UF_size) */
|
|
85
|
+
export declare function buildSkeletonTrimSize(subg: Graph, mn: number, mx: number): void;
|
|
86
|
+
/** @see lib/dotgen/cluster.c:build_skeleton (edge count accumulation) */
|
|
87
|
+
export declare function buildSkeletonCounts(_g: Graph, subg: Graph, mn: number, mx: number): void;
|
|
88
|
+
/** @see lib/dotgen/cluster.c:build_skeleton */
|
|
89
|
+
export declare function buildSkeleton(g: Graph, subg: Graph): void;
|
|
90
|
+
/** @see lib/dotgen/cluster.c:install_cluster (rank install loop) */
|
|
91
|
+
export declare function installClusterRanks(ctx: MincrossContext, g: Graph, clust: Graph, mn: number, mx: number): number;
|
|
92
|
+
/** @see lib/dotgen/cluster.c:install_cluster */
|
|
93
|
+
export declare function installCluster(g: Graph, n: Node, pass: number, q: Node[]): number;
|
|
94
|
+
/** @see lib/dotgen/cluster.c:mark_lowclusters (clear pass) */
|
|
95
|
+
export declare function markLowclustersZap(root: Graph): void;
|
|
96
|
+
/** @see lib/dotgen/cluster.c:mark_lowclusters (virtual chain assign for one edge) */
|
|
97
|
+
export declare function markLowclusterChain(orig: Edge, g: Graph): void;
|
|
98
|
+
/** @see lib/dotgen/cluster.c:mark_lowclusters (assign pass, recursive) */
|
|
99
|
+
export declare function markLowclusterBasic(g: Graph): void;
|
|
100
|
+
/** @see lib/dotgen/cluster.c:mark_lowclusters */
|
|
101
|
+
export declare function markLowclusters(root: Graph): void;
|
|
102
|
+
//# sourceMappingURL=cluster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/cluster.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAQhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,OAAO,EAAE,UAAU,EAAW,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,CAAC;AAMtB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAM5E;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAElD;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAW1F;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAQtF;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAM1G;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAkB5C;AAMD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzD;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAIxF;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBzF;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAO5C;AAMD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAWhD;AAMD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CAWnF;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAajD;AAMD,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAS9D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAY/D;AASD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAWvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAYrE;AAED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAY3C;AAMD,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAelE;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAIlE;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAK/E;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAGxF;AAED,+CAA+C;AAC/C,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAkBzD;AAMD,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAMhH;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAWjF;AAuBD,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAcpD;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAM9D;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAUlD;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAGjD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometric helpers for compound edge clipping — bezier subdivision,
|
|
3
|
+
* crossing detection, spline/box intersection.
|
|
4
|
+
*
|
|
5
|
+
* @see lib/dotgen/compound.c
|
|
6
|
+
*/
|
|
7
|
+
import type { Point, Box } from '../../model/geom.js';
|
|
8
|
+
/** Sign comparison matching C fcmp(). @see lib/util/gv_math.h:fcmp */
|
|
9
|
+
export declare function fcmp(a: number, b: number): number;
|
|
10
|
+
/** True if p is on or inside box bb. @see lib/dotgen/compound.c:inBoxf */
|
|
11
|
+
export declare function inBoxf(p: Point, bb: Box): boolean;
|
|
12
|
+
/** Midpoint of two points. @see lib/common/utils.c:mid_pointf */
|
|
13
|
+
export declare function midPointf(a: Point, b: Point): Point;
|
|
14
|
+
type CasteljauRow = [Point, Point, Point, Point];
|
|
15
|
+
/** One De Casteljau subdivision step. */
|
|
16
|
+
export declare function casteljauStep(prev: CasteljauRow, t: number): CasteljauRow;
|
|
17
|
+
/** Subdivide cubic Bezier at t; return left or right half. @see lib/common/utils.c:Bezier */
|
|
18
|
+
export declare function subdivideBezier(v: readonly Point[], t: number, side: 'left' | 'right'): Point[];
|
|
19
|
+
/** Count control-polygon crossings of x = xcoord. */
|
|
20
|
+
export declare function countVertCross(pts: Point[], xcoord: number): number;
|
|
21
|
+
/** Count control-polygon crossings of y = ycoord. */
|
|
22
|
+
export declare function countHorzCross(pts: Point[], ycoord: number): number;
|
|
23
|
+
/** Axis-range constraint for findVertical / findHorizontal. */
|
|
24
|
+
export interface AxisRange {
|
|
25
|
+
coord: number;
|
|
26
|
+
lo: number;
|
|
27
|
+
hi: number;
|
|
28
|
+
}
|
|
29
|
+
/** Extract AxisRange for the vertical sides of a box. */
|
|
30
|
+
export declare function vertRange(bb: Box, side: 'left' | 'right'): AxisRange;
|
|
31
|
+
/** Extract AxisRange for the horizontal sides of a box. */
|
|
32
|
+
export declare function horzRange(bb: Box, side: 'bottom' | 'top'): AxisRange;
|
|
33
|
+
/** nc===1 endpoint check: return tmax only if endpoint is ON the line and in range. */
|
|
34
|
+
export declare function checkVertEndpoint(p3: Point, ax: AxisRange, tmax: number): number;
|
|
35
|
+
/** nc===1 endpoint check: return tmax only if endpoint is ON the line and in range. */
|
|
36
|
+
export declare function checkHorzEndpoint(p3: Point, ax: AxisRange, tmax: number): number;
|
|
37
|
+
/** Subdivide-and-recurse for vertical crossing search. */
|
|
38
|
+
export declare function searchVert(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
|
|
39
|
+
/** Find first t where Bezier crosses x=ax.coord, y in [ax.lo,ax.hi]. @see lib/dotgen/compound.c:findVertical */
|
|
40
|
+
export declare function findVertical(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
|
|
41
|
+
/** Subdivide-and-recurse for horizontal crossing search. */
|
|
42
|
+
export declare function searchHorz(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
|
|
43
|
+
/** Find first t where Bezier crosses y=ax.coord, x in [ax.lo,ax.hi]. @see lib/dotgen/compound.c:findHorizontal */
|
|
44
|
+
export declare function findHorizontal(pts: Point[], tmin: number, tmax: number, ax: AxisRange): number;
|
|
45
|
+
/** Update best-t and truncate pts to that crossing. */
|
|
46
|
+
export declare function tryUpdateIntersect(t: number, tmin: number, orig: Point[], pts: Point[]): number;
|
|
47
|
+
/**
|
|
48
|
+
* Find earliest Bezier/box crossing; truncate pts to that point.
|
|
49
|
+
* @see lib/dotgen/compound.c:splineIntersectf
|
|
50
|
+
*/
|
|
51
|
+
export declare function splineIntersectf(pts: Point[], bb: Box): boolean;
|
|
52
|
+
/** Left-side intersection of pp→cp with bb. */
|
|
53
|
+
export declare function tryLeftSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
54
|
+
/** Right-side intersection of pp→cp with bb. */
|
|
55
|
+
export declare function tryRightSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
56
|
+
/** Bottom-side intersection of pp→cp with bb. */
|
|
57
|
+
export declare function tryBottomSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
58
|
+
/** Top-side intersection of pp→cp with bb. */
|
|
59
|
+
export declare function tryTopSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
60
|
+
/**
|
|
61
|
+
* Intersection of segment [pp→cp] with box bb (pp inside/on, cp outside).
|
|
62
|
+
* Tries sides in C order: left, right, bottom, top. The slope-scaled delta
|
|
63
|
+
* is rounded with C `round()` (half away from zero) — it is negative
|
|
64
|
+
* whenever the cluster wall lies below/left of the endpoint.
|
|
65
|
+
* @see lib/dotgen/compound.c:boxIntersectf
|
|
66
|
+
*/
|
|
67
|
+
export declare function boxIntersectf(pp: Point, cp: Point, bb: Box): Point;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=compound-clip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compound-clip.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound-clip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometric primitives for compound-edge spline clipping.
|
|
3
|
+
* Bezier subdivision, crossing detection, and box-intersection math
|
|
4
|
+
* extracted from lib/dotgen/compound.c.
|
|
5
|
+
*
|
|
6
|
+
* @see lib/dotgen/compound.c
|
|
7
|
+
*/
|
|
8
|
+
import type { Point, Box } from '../../model/geom.js';
|
|
9
|
+
/**
|
|
10
|
+
* Sign comparison for doubles, matching C fcmp().
|
|
11
|
+
* Returns -1, 0, or 1.
|
|
12
|
+
*
|
|
13
|
+
* @see lib/util/gv_math.h:fcmp
|
|
14
|
+
*/
|
|
15
|
+
export declare function fcmp(a: number, b: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* Returns true if point p is on or inside box bb.
|
|
18
|
+
*
|
|
19
|
+
* @see lib/dotgen/compound.c:inBoxf
|
|
20
|
+
*/
|
|
21
|
+
export declare function inBoxf(p: Point, bb: Box): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Midpoint of two points. Matches C mid_pointf().
|
|
24
|
+
*
|
|
25
|
+
* @see lib/common/utils.c:mid_pointf
|
|
26
|
+
*/
|
|
27
|
+
export declare function midPointf(a: Point, b: Point): Point;
|
|
28
|
+
/** One triangle row for De Casteljau; avoids nested array allocation. */
|
|
29
|
+
type CasteljauRow = [Point, Point, Point, Point];
|
|
30
|
+
/** Compute one row of the De Casteljau triangle at parameter t. */
|
|
31
|
+
export declare function casteljauStep(prev: CasteljauRow, t: number): CasteljauRow;
|
|
32
|
+
/**
|
|
33
|
+
* De Casteljau subdivision of a cubic Bezier at parameter t.
|
|
34
|
+
* Returns left-half or right-half control points.
|
|
35
|
+
* Matches C Bezier() triangle computation.
|
|
36
|
+
*
|
|
37
|
+
* @see lib/common/utils.c:Bezier
|
|
38
|
+
*/
|
|
39
|
+
export declare function subdivideBezier(v: readonly Point[], t: number, side: 'left' | 'right'): Point[];
|
|
40
|
+
/**
|
|
41
|
+
* Count control-polygon crossings of vertical line x = xcoord.
|
|
42
|
+
*
|
|
43
|
+
* @see lib/dotgen/compound.c:countVertCross
|
|
44
|
+
*/
|
|
45
|
+
export declare function countVertCross(pts: Point[], xcoord: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* Count control-polygon crossings of horizontal line y = ycoord.
|
|
48
|
+
*
|
|
49
|
+
* @see lib/dotgen/compound.c:countHorzCross
|
|
50
|
+
*/
|
|
51
|
+
export declare function countHorzCross(pts: Point[], ycoord: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* Axis-line specification for findAxisCrossing.
|
|
54
|
+
* Bundles the line coordinate and perpendicular range to avoid 6-param
|
|
55
|
+
* signatures on recursive calls.
|
|
56
|
+
*/
|
|
57
|
+
export interface LineSpec {
|
|
58
|
+
/** The coordinate of the axis-aligned line being tested. */
|
|
59
|
+
lineCoord: number;
|
|
60
|
+
/** Lower bound of the perpendicular range. */
|
|
61
|
+
rangeMin: number;
|
|
62
|
+
/** Upper bound of the perpendicular range. */
|
|
63
|
+
rangeMax: number;
|
|
64
|
+
/** 'v' = vertical (x = lineCoord); 'h' = horizontal (y = lineCoord). */
|
|
65
|
+
axis: 'v' | 'h';
|
|
66
|
+
}
|
|
67
|
+
/** Return true if the Bezier endpoint lies within spec's perpendicular range. */
|
|
68
|
+
export declare function endpointInRange(pts: Point[], spec: LineSpec): boolean;
|
|
69
|
+
/** Return true if the endpoint coord is within 0.005 of the line. */
|
|
70
|
+
export declare function endpointNearLine(pts: Point[], spec: LineSpec): boolean;
|
|
71
|
+
/** Count crossings of pts with the axis line described by spec. */
|
|
72
|
+
export declare function countCrossings(pts: Point[], spec: LineSpec): number;
|
|
73
|
+
/**
|
|
74
|
+
* Find the first t in [tmin, tmax] where the Bezier crosses the axis line
|
|
75
|
+
* described by spec. Returns -1 if not found.
|
|
76
|
+
* Recursive binary subdivision (Graphics Gems pp.411-415).
|
|
77
|
+
*
|
|
78
|
+
* Replaces findVertical and findHorizontal from compound.c.
|
|
79
|
+
*
|
|
80
|
+
* @see lib/dotgen/compound.c:findVertical
|
|
81
|
+
* @see lib/dotgen/compound.c:findHorizontal
|
|
82
|
+
*/
|
|
83
|
+
export declare function findAxisCrossing(pts: Point[], tmin: number, tmax: number, spec: LineSpec): number;
|
|
84
|
+
/** Update best-t and rewrite pts[0..3] from orig at parameter t if better. */
|
|
85
|
+
export declare function tryUpdateIntersect(t: number, tmin: number, orig: Point[], pts: Point[]): number;
|
|
86
|
+
/** Build the four LineSpec values for the sides of a box. */
|
|
87
|
+
export declare function boxLineSpecs(bb: Box): [LineSpec, LineSpec, LineSpec, LineSpec];
|
|
88
|
+
/**
|
|
89
|
+
* Find the earliest intersection of Bezier pts[0..3] with box bb and
|
|
90
|
+
* truncate pts to that point. Returns true when an intersection was found.
|
|
91
|
+
*
|
|
92
|
+
* @see lib/dotgen/compound.c:splineIntersectf
|
|
93
|
+
*/
|
|
94
|
+
export declare function splineIntersectf(pts: Point[], bb: Box): boolean;
|
|
95
|
+
/** Check left-side intersection of segment pp→cp with bb. */
|
|
96
|
+
export declare function tryLeftSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
97
|
+
/** Check right-side intersection of segment pp→cp with bb. */
|
|
98
|
+
export declare function tryRightSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
99
|
+
/** Check bottom-side intersection of segment pp→cp with bb. */
|
|
100
|
+
export declare function tryBottomSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
101
|
+
/** Check top-side intersection of segment pp→cp with bb. */
|
|
102
|
+
export declare function tryTopSide(pp: Point, cp: Point, bb: Box): Point | null;
|
|
103
|
+
/**
|
|
104
|
+
* Find intersection of segment [pp, cp] with box bb.
|
|
105
|
+
* pp is inside/on the box; cp is outside. Tries four sides in C order.
|
|
106
|
+
* The slope-scaled delta is rounded with C `round()` (half away from zero),
|
|
107
|
+
* NOT Math.round: the delta is negative whenever the cluster wall lies
|
|
108
|
+
* below/left of the endpoint, and dot node coords are integers here, so
|
|
109
|
+
* exact .5 ties are routine.
|
|
110
|
+
*
|
|
111
|
+
* @see lib/dotgen/compound.c:boxIntersectf
|
|
112
|
+
*/
|
|
113
|
+
export declare function boxIntersectf(pp: Point, cp: Point, bb: Box): Point;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=compound-geom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compound-geom.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound-geom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compound edge support — clips splines to cluster bounding boxes.
|
|
3
|
+
*
|
|
4
|
+
* @see lib/dotgen/compound.c
|
|
5
|
+
*/
|
|
6
|
+
import type { Point, Box, Bezier } from '../../model/geom.js';
|
|
7
|
+
import type { Graph } from '../../model/graph.js';
|
|
8
|
+
import type { Edge } from '../../model/edge.js';
|
|
9
|
+
export { fcmp, inBoxf, midPointf, casteljauStep, subdivideBezier, countVertCross, countHorzCross, tryUpdateIntersect, splineIntersectf, tryLeftSide, tryRightSide, tryBottomSide, tryTopSide, boxIntersectf, } from './compound-clip.js';
|
|
10
|
+
/** Recursively populate name→cluster map. @see lib/common/utils.c:fillMap */
|
|
11
|
+
export declare function fillClustMap(g: Graph, map: Map<string, Graph>): void;
|
|
12
|
+
/** Build a name→cluster map for all clusters reachable from g. @see lib/common/utils.c:mkClustMap */
|
|
13
|
+
export declare function mkClustMap(g: Graph): Map<string, Graph>;
|
|
14
|
+
interface ClipState {
|
|
15
|
+
e: Edge;
|
|
16
|
+
bez: Bezier;
|
|
17
|
+
size: number;
|
|
18
|
+
endi: number;
|
|
19
|
+
starti: number;
|
|
20
|
+
}
|
|
21
|
+
/** Degenerate head clip: first control point already inside cluster bb. */
|
|
22
|
+
export declare function clipHeadDegenerate(state: ClipState, bb: Box, ep: Point): void;
|
|
23
|
+
/** Normal head clip: scan forward for first segment exiting cluster bb. */
|
|
24
|
+
export declare function clipHeadNormal(state: ClipState, bb: Box): void;
|
|
25
|
+
/** Apply head clip when head node coord is inside cluster bb. */
|
|
26
|
+
export declare function applyHeadClip(state: ClipState, bb: Box): boolean;
|
|
27
|
+
/** Clip head end of edge; returns true when clipping was applied. @see lib/dotgen/compound.c */
|
|
28
|
+
export declare function clipHead(state: ClipState, bb: Box, headInBox: boolean): boolean;
|
|
29
|
+
/** Degenerate tail clip: last selected control point is inside cluster bb. */
|
|
30
|
+
export declare function clipTailDegenerate(state: ClipState, bb: Box): void;
|
|
31
|
+
/** Normal tail clip: scan backward for last segment exiting cluster bb. */
|
|
32
|
+
export declare function clipTailNormal(state: ClipState, bb: Box): void;
|
|
33
|
+
/** Apply tail clip. */
|
|
34
|
+
export declare function applyTailClip(state: ClipState, bb: Box): boolean;
|
|
35
|
+
/** Clip tail end of edge; returns true when clipping was applied. @see lib/dotgen/compound.c */
|
|
36
|
+
export declare function clipTail(state: ClipState, bb: Box, tailInBox: boolean): boolean;
|
|
37
|
+
export declare function resolveClusterPair(e: Edge, clustMap: Map<string, Graph>): {
|
|
38
|
+
lh: Graph | null;
|
|
39
|
+
lt: Graph | null;
|
|
40
|
+
};
|
|
41
|
+
/** Returns false when edge is not eligible for compound clipping. */
|
|
42
|
+
export declare function isCompoundEdgeEligible(e: Edge): boolean;
|
|
43
|
+
/** Replace bez.list with the trimmed slice [starti..endi]. */
|
|
44
|
+
export declare function applyBezierSlice(state: ClipState): void;
|
|
45
|
+
/**
|
|
46
|
+
* Clip the spline for edge e against its lhead/ltail cluster bounding boxes,
|
|
47
|
+
* re-clipping the arrowhead(s) to the new cluster-boundary tips.
|
|
48
|
+
* @see lib/dotgen/compound.c:makeCompoundEdge
|
|
49
|
+
*/
|
|
50
|
+
export declare function makeCompoundEdge(e: Edge, clustMap: Map<string, Graph>): void;
|
|
51
|
+
/**
|
|
52
|
+
* Clip splines at cluster boundaries for edges with lhead/ltail attributes.
|
|
53
|
+
* @see lib/dotgen/compound.c:dot_compoundEdges
|
|
54
|
+
*/
|
|
55
|
+
export declare function dotCompoundEdges(g: Graph): void;
|
|
56
|
+
//# sourceMappingURL=compound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compound.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/compound.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAUhD,OAAO,EACL,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EACvD,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAClD,gBAAgB,EAChB,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,GACpE,MAAM,oBAAoB,CAAC;AAM5B,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAOpE;AAED,qGAAqG;AACrG,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAIvD;AAMD,UAAU,SAAS;IAAG,CAAC,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AA4CzF,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAU7E;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAMD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAYlE;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAgB9D;AAED,uBAAuB;AACvB,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAG/E;AAYD,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GACpC;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAMxC;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAGvD;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAMvD;AA0BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAU5E;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAK/C"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript port of lib/dotgen/conc.c — dot_concentrate.
|
|
3
|
+
*
|
|
4
|
+
* Build edge concentrators for parallel edges with a common endpoint.
|
|
5
|
+
*
|
|
6
|
+
* @see lib/dotgen/conc.c
|
|
7
|
+
*/
|
|
8
|
+
import type { Graph } from '../../model/graph.js';
|
|
9
|
+
import type { Node } from '../../model/node.js';
|
|
10
|
+
import type { Edge } from '../../model/edge.js';
|
|
11
|
+
import type { Port } from '../../model/geom.js';
|
|
12
|
+
/** @see lib/dotgen/dotsplines.c:portcmp */
|
|
13
|
+
export declare function portcmp(p0: Port, p1: Port): number;
|
|
14
|
+
/** @see lib/dotgen/conc.c:downcandidate */
|
|
15
|
+
export declare function downcandidate(v: Node): boolean;
|
|
16
|
+
/** @see lib/dotgen/conc.c:upcandidate */
|
|
17
|
+
export declare function upcandidate(v: Node): boolean;
|
|
18
|
+
/** Walk to_orig chain to find the underlying NORMAL edge. */
|
|
19
|
+
export declare function findNormalEdge(e: Edge): Edge | undefined;
|
|
20
|
+
/** @see lib/dotgen/conc.c:samedir */
|
|
21
|
+
export declare function sameDir(e: Edge, f: Edge): boolean;
|
|
22
|
+
/** @see lib/dotgen/conc.c:bothdowncandidates */
|
|
23
|
+
export declare function bothdowncandidates(u: Node, v: Node): boolean;
|
|
24
|
+
/** @see lib/dotgen/conc.c:bothupcandidates */
|
|
25
|
+
export declare function bothupcandidates(u: Node, v: Node): boolean;
|
|
26
|
+
/** Find or create the left-side representative edge in the DOWN merge. */
|
|
27
|
+
export declare function resolveDownRep(left: Node, headNode: Node, e: Edge): Edge;
|
|
28
|
+
/** Drain all in-edges from right into f, then delete e. */
|
|
29
|
+
export declare function drainIntoDown(right: Node, f: Edge, e: Edge): void;
|
|
30
|
+
/** Merge one out-edge of right into left (DOWN direction). */
|
|
31
|
+
export declare function mergeOneOutEdge(left: Node, right: Node): void;
|
|
32
|
+
/** Find or create the left-side representative edge in the UP merge. */
|
|
33
|
+
export declare function resolveUpRep(left: Node, tailNode: Node, e: Edge): Edge;
|
|
34
|
+
/** Drain all out-edges from right into f, then delete e. */
|
|
35
|
+
export declare function drainIntoUp(right: Node, f: Edge, e: Edge): void;
|
|
36
|
+
/** Merge one in-edge of right into left (UP direction). */
|
|
37
|
+
export declare function mergeOneInEdge(left: Node, right: Node): void;
|
|
38
|
+
/** Compact the rank array after merging positions lpos+1..rpos into lpos. */
|
|
39
|
+
export declare function compactRank(g: Graph, r: number, lpos: number, rpos: number): void;
|
|
40
|
+
/** Merge right into left using DOWN semantics. */
|
|
41
|
+
export declare function absorbNodeDown(left: Node, right: Node, g: Graph): void;
|
|
42
|
+
/** Merge right into left using UP semantics. */
|
|
43
|
+
export declare function absorbNodeUp(left: Node, right: Node, g: Graph): void;
|
|
44
|
+
/** @see lib/dotgen/conc.c:mergevirtual */
|
|
45
|
+
export declare function mergeVirtual(g: Graph, r: number, lpos: number, rpos: number, dir: number): void;
|
|
46
|
+
/** @see lib/dotgen/conc.c:infuse */
|
|
47
|
+
export declare function infuse(g: Graph, n: Node): void;
|
|
48
|
+
/** Infuse virtual nodes along the to_virt/out chain of edge e. */
|
|
49
|
+
export declare function infuseEdgeChain(g: Graph, e: Edge): void;
|
|
50
|
+
/** True if virtual node n's orig edge has both endpoints in g. */
|
|
51
|
+
export declare function virtNodeInGraph(g: Graph, n: Node): boolean;
|
|
52
|
+
/** Compute the highest valid index (maxi) for one rank vlist. */
|
|
53
|
+
export declare function computeMaxi(g: Graph, r: number): number;
|
|
54
|
+
/** @see lib/dotgen/conc.c:rebuild_vlists — fill one rank's v pointer. */
|
|
55
|
+
export declare function fillRankVlist(g: Graph, r: number, root: Graph): number;
|
|
56
|
+
/** Infuse every node (and its out-edge chains) in g into rankleader. */
|
|
57
|
+
export declare function infuseAllNodes(g: Graph): void;
|
|
58
|
+
/** Fill all per-rank vlists for g using root as the master rank table. */
|
|
59
|
+
export declare function fillAllRankVlists(g: Graph): number;
|
|
60
|
+
/** Recursively rebuild vlists for all clusters of g. */
|
|
61
|
+
export declare function rebuildClusterVlists(g: Graph): number;
|
|
62
|
+
/** @see lib/dotgen/conc.c:rebuild_vlists */
|
|
63
|
+
export declare function rebuildVlists(g: Graph): number;
|
|
64
|
+
/** @see lib/dotgen/conc.c:dot_concentrate — one downward rank sweep */
|
|
65
|
+
export declare function concentrateOneRankDown(g: Graph, r: number): void;
|
|
66
|
+
/** @see lib/dotgen/conc.c:dot_concentrate — one upward rank sweep */
|
|
67
|
+
export declare function concentrateOneRankUp(g: Graph, r: number): void;
|
|
68
|
+
/** Run the downward concentration pass; return the last r examined. */
|
|
69
|
+
export declare function runDownPass(g: Graph): number;
|
|
70
|
+
/** Run the upward concentration pass from r down to 1. */
|
|
71
|
+
export declare function runUpPass(g: Graph, startR: number): void;
|
|
72
|
+
/**
|
|
73
|
+
* Build edge concentrators for parallel edges with a common endpoint.
|
|
74
|
+
*
|
|
75
|
+
* The final cluster loop here is a distinct call site from
|
|
76
|
+
* `rebuildClusterVlists`'s recursive nested-cluster loop inside
|
|
77
|
+
* `rebuildVlists` — C's `dot_concentrate` (conc.c:237-243) calls
|
|
78
|
+
* `rebuild_vlists` directly on each of `g`'s own top-level clusters and, on
|
|
79
|
+
* ANY failure (including one bubbled up from a doubly-nested cluster),
|
|
80
|
+
* reports a single `agerr(AGPREV, ...)` continuation line (no "Error:"/
|
|
81
|
+
* "Warning:" prefix — AGPREV reuses the previous call's level) and
|
|
82
|
+
* normalizes the return to -1. Do not fold this into `rebuildClusterVlists`:
|
|
83
|
+
* that helper is also called recursively from inside `rebuildVlists` itself,
|
|
84
|
+
* where C does NOT emit this message.
|
|
85
|
+
* @see lib/dotgen/conc.c:dot_concentrate
|
|
86
|
+
*/
|
|
87
|
+
export declare function dotConcentrate(g: Graph): number;
|
|
88
|
+
//# sourceMappingURL=conc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conc.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/conc.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAkBhD,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,CAQlD;AAOD,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAK9C;AAED,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAK5C;AAOD,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAMxD;AAED,qCAAqC;AACrC,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CASjD;AAOD,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAO5D;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAO1D;AAOD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAKxE;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAOjE;AAED,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAI7D;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAKtE;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAO/D;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAI5D;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUjF;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAGtE;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAGpE;AAED,0CAA0C;AAC1C,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAS/F;AAOD,oCAAoC;AACpC,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAM9C;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAQvD;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAI1D;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBvD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAoCtE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAoB7C;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAYlD;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAQrD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAU9C;AAMD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAShE;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAS9D;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAM5C;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAa/C"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** @see lib/dotgen/decomp.c @see lib/common/utils.c (UF_*) */
|
|
2
|
+
import type { Node } from '../../model/node.js';
|
|
3
|
+
import type { Graph } from '../../model/graph.js';
|
|
4
|
+
import type { EdgeList } from '../../model/nodeInfo.js';
|
|
5
|
+
/**
|
|
6
|
+
* Return `g`'s member nodes in AGSEQ order (global, root-graph-wide creation
|
|
7
|
+
* order), mirroring `agfstnode(g)`/`agnxtnode(g,n)` — NOT the subgraph-local
|
|
8
|
+
* first-insertion order that `g.nodes` (a `Map`) iterates by default.
|
|
9
|
+
*
|
|
10
|
+
* C's `agfstnode` walks a dict ordered by `agsubnodeseqcmpf`
|
|
11
|
+
* (`AGSEQ(node)`, assigned once at node creation and never touched by later
|
|
12
|
+
* `agsubnode` membership calls), independent of which subgraph a node was
|
|
13
|
+
* textually declared in. `Node.id` mirrors AGSEQ (assigned once at first
|
|
14
|
+
* global creation by `NodeRegistry.ensure`/`agnode`'s `freshNodeId`), so a
|
|
15
|
+
* `.id`-ascending sort reproduces C's order for any (sub)graph.
|
|
16
|
+
*
|
|
17
|
+
* Every C function that iterates a subgraph via `agfstnode`/`agnxtnode` must
|
|
18
|
+
* use this helper instead of `g.nodes.values()` directly — see F7's audit
|
|
19
|
+
* table in `.agent-notes/path-structure-xns-residuals.md` for the site list.
|
|
20
|
+
*
|
|
21
|
+
* @see lib/cgraph/node.c:43 (agfstnode), :50 (agnxtnode)
|
|
22
|
+
* @see lib/cgraph/node.c:283-290 (agsubnodeseqcmpf, AGSEQ comparator)
|
|
23
|
+
* @see lib/cgraph/node.c:162 (agnextseq(g,AGNODE), AGSEQ assignment at creation)
|
|
24
|
+
*/
|
|
25
|
+
export declare function nodesInSeq(g: Graph): Node[];
|
|
26
|
+
/** @see lib/common/utils.c:UF_find */
|
|
27
|
+
export declare function ufFind(n: Node): Node;
|
|
28
|
+
/**
|
|
29
|
+
* Union two UF sets. Inlines ufRoot (init + find).
|
|
30
|
+
*
|
|
31
|
+
* C's tie-break reads `ND_id(u) > ND_id(v)` — but `ND_id` is a distinct,
|
|
32
|
+
* dotgen-only `Agnodeinfo_t.id` field (lib/common/types.h:432, guarded by
|
|
33
|
+
* `#ifndef DOT_ONLY`) that is NEVER assigned anywhere in the `dot` layout
|
|
34
|
+
* engine's source (only neatogen/fdpgen/sfdpgen/sparse — unrelated engines —
|
|
35
|
+
* write it). It is therefore always 0 for both real and virtual nodes under
|
|
36
|
+
* `dot`, so `ND_id(u) > ND_id(v)` is always false and C always takes the
|
|
37
|
+
* `else` branch: the first argument's resolved root unconditionally wins.
|
|
38
|
+
* This is NOT the same field as AGID (cgraph's unique per-node id, exposed
|
|
39
|
+
* here as `Node.id`) — using `.id` for this comparison would introduce
|
|
40
|
+
* spurious branching C never performs, since AGID differs between every
|
|
41
|
+
* pair of real nodes.
|
|
42
|
+
* @see lib/common/utils.c:UF_union
|
|
43
|
+
*/
|
|
44
|
+
export declare function ufUnion(u: Node, v: Node): Node;
|
|
45
|
+
/** @see lib/common/utils.c:UF_singleton */
|
|
46
|
+
export declare function ufSingleton(u: Node): void;
|
|
47
|
+
/** @see lib/common/utils.c:UF_setname */
|
|
48
|
+
export declare function ufSetname(u: Node, v: Node): void;
|
|
49
|
+
/**
|
|
50
|
+
* Push unvisited UF-root neighbors onto the BFS stack.
|
|
51
|
+
* @see lib/dotgen/decomp.c (inlined in searchComponent)
|
|
52
|
+
*/
|
|
53
|
+
export declare function decompPushNeighbors(stk: Node[], el: EdgeList | undefined, n: Node, cmark: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* BFS over one component; builds g.info.nlist linked list (prev/next).
|
|
56
|
+
* Clears g.info.nlist before traversal.
|
|
57
|
+
* @see lib/dotgen/decomp.c:beginComponent @see lib/dotgen/decomp.c:searchComponent
|
|
58
|
+
*/
|
|
59
|
+
export declare function decompSearch(g: Graph, start: Node, cmark: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Find connected components and store in `g.info.comp`.
|
|
62
|
+
* pass=0: real nodes. pass=1: cluster skeleton leaders.
|
|
63
|
+
* @see lib/dotgen/decomp.c:decompose
|
|
64
|
+
*/
|
|
65
|
+
export declare function decompose(g: Graph, pass: 0 | 1): void;
|
|
66
|
+
//# sourceMappingURL=decomp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decomp.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/decomp.ts"],"names":[],"mappings":"AACA,+DAA+D;AAC/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAMxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,CAE3C;AAMD,sCAAsC;AACtC,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAOpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAU9C;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEzC;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAGhD;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAC5D,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAoBvE;AAcD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAWrD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge routing order for dot, matching C `dot_splines_`.
|
|
3
|
+
*
|
|
4
|
+
* C routes edges from a list built rank-major (`GD_rank[i].v[j]` out-edges of
|
|
5
|
+
* NORMAL / splineMerge nodes) then `qsort`-ed by `edgecmp`. Because
|
|
6
|
+
* `recover_slack` re-centres shared virtual nodes that other edges read as
|
|
7
|
+
* `maximal_bbox` neighbours, corridor geometry is routing-order-dependent — so
|
|
8
|
+
* the port must route in C's order, not `g.nodes.values()` insertion order.
|
|
9
|
+
*
|
|
10
|
+
* The port iterates the ORIGINAL edges directly (real tails), so `edgecmp`'s
|
|
11
|
+
* `getmainedge` mapping is the identity here and the rank/coord keys read the
|
|
12
|
+
* original endpoints. `AGSEQ` (the port's `Edge.seq`) is unique, making the
|
|
13
|
+
* comparator a total order — a stable `Array.sort` over any collection order
|
|
14
|
+
* reproduces C's `qsort` result (edgecmp-equal originals never occur, and C
|
|
15
|
+
* batches genuinely-equivalent edges via the cnt-loop, so their relative
|
|
16
|
+
* routing order is immaterial).
|
|
17
|
+
*
|
|
18
|
+
* @see lib/dotgen/dotsplines.c:dot_splines_ (edges list build + sort)
|
|
19
|
+
* @see lib/dotgen/dotsplines.c:edgecmp
|
|
20
|
+
*/
|
|
21
|
+
import type { Edge } from '../../model/edge.js';
|
|
22
|
+
/**
|
|
23
|
+
* Compare two original edges in C `dot_splines_` routing order via their
|
|
24
|
+
* lexicographic `edgecmp` keys. @see lib/dotgen/dotsplines.c:edgecmp
|
|
25
|
+
*/
|
|
26
|
+
export declare function edgeRouteCmp(a: Edge, b: Edge): number;
|
|
27
|
+
//# sourceMappingURL=edge-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-order.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-order.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AA2BhD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAOrD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arrowhead polygon geometry for dot-layout edge rendering.
|
|
3
|
+
*
|
|
4
|
+
* @see lib/common/arrows.c:arrow_type_normal0
|
|
5
|
+
* @see lib/common/arrows.c:miter_shape
|
|
6
|
+
*/
|
|
7
|
+
import type { Point } from '../../model/geom.js';
|
|
8
|
+
import type { ArrowDrawOp } from '../../common/arrows-types.js';
|
|
9
|
+
/** Arrow length in points. @see lib/common/arrows.c:#define ARROW_LENGTH 10. */
|
|
10
|
+
export declare const ARROW_LENGTH = 10;
|
|
11
|
+
/** Arrow width factor. @see lib/common/arrows.c:arrowwidth = 0.35 */
|
|
12
|
+
export declare const ARROW_WIDTH_FACTOR = 0.35;
|
|
13
|
+
/**
|
|
14
|
+
* Three-point arrowhead polygon: [rightBase, adj_tip, leftBase].
|
|
15
|
+
*
|
|
16
|
+
* Matches C's arrow_type_normal0 for a standard "normal" arrowhead:
|
|
17
|
+
* 1. delta_tip correction shifts both the polygon tip and base TOWARD the
|
|
18
|
+
* shaft by the miter-join extension length, so the filled polygon covers
|
|
19
|
+
* the miter join produced by the SVG renderer at the sharp tip vertex.
|
|
20
|
+
* Formula: (penwidth / (2 * arrowwidth)) * sqrt(1 + arrowwidth^2)
|
|
21
|
+
* 2. Polygon order is [a[1]=right_base, a[2]=adj_tip, a[3]=left_base]
|
|
22
|
+
* (matching gvrender_polygon(job, &a[1], 3)).
|
|
23
|
+
*
|
|
24
|
+
* @see lib/common/arrows.c:arrow_type_normal0
|
|
25
|
+
* @see lib/common/arrows.c:miter_shape
|
|
26
|
+
*/
|
|
27
|
+
export declare function arrowheadPolygon(arrowTip: Point, arrowDir: Point, penwidth?: number): Point[];
|
|
28
|
+
/** Minimal edge shape exposing the arrow-related attributes. */
|
|
29
|
+
interface ArrowAttrEdge {
|
|
30
|
+
attrs: Map<string, string>;
|
|
31
|
+
}
|
|
32
|
+
/** The arrowhead/arrowtail name for an edge end (default "normal"). */
|
|
33
|
+
export declare function edgeArrowName(e: ArrowAttrEdge, end: 'head' | 'tail'): string;
|
|
34
|
+
/** The `arrowsize` edge attribute (default 1.0; clamped to ≥0 like late_double). */
|
|
35
|
+
export declare function edgeArrowsize(e: ArrowAttrEdge): number;
|
|
36
|
+
/**
|
|
37
|
+
* Typed arrow draw-ops for one edge end: reads `arrowhead`/`arrowtail` +
|
|
38
|
+
* `arrowsize`, resolves the compound arrow type, and dispatches to the full
|
|
39
|
+
* geometry table (`arrowDrawOps`). `tip` is the node-boundary point, `dir`
|
|
40
|
+
* points from tip toward the shaft (away from the node).
|
|
41
|
+
*
|
|
42
|
+
* @see lib/common/arrows.c:arrow_gen
|
|
43
|
+
*/
|
|
44
|
+
export declare function arrowDrawOpsForEnd(e: ArrowAttrEdge, end: 'head' | 'tail', tip: Point, dir: Point, penwidth: number): ArrowDrawOp[];
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=edge-route-arrow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-route-arrow.d.ts","sourceRoot":"","sources":["../../../src/layout/dot/edge-route-arrow.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,gFAAgF;AAChF,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,SAAM,GAAG,KAAK,EAAE,CAe1F;AAOD,gEAAgE;AAChE,UAAU,aAAa;IAAG,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAEtD,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5E;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAC/E,WAAW,EAAE,CAKf"}
|