@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,481 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Pure style-resolution functions: parse style strings and resolve
|
|
5
|
+
* pen/fill properties from node attributes. Data-in / data-out only —
|
|
6
|
+
* no rendering, no ObjState mutation (AD2).
|
|
7
|
+
*
|
|
8
|
+
* Exports: parseStyleFlags, resolvePenType, resolvePenWidth,
|
|
9
|
+
* resolveNodeFill, resolveNodeFillEx, resolvePenColor,
|
|
10
|
+
* resolveClusterFill, resolveClusterFillEx, findStopColor.
|
|
11
|
+
* Types: PolyStyleFlags, NodeAttrs, ClusterAttrs, ClusterFill, ResolvedFill.
|
|
12
|
+
*
|
|
13
|
+
* @see lib/common/types.h:graphviz_polygon_style_t
|
|
14
|
+
* @see lib/common/shapes.c:checkStyle
|
|
15
|
+
* @see lib/common/shapes.c:stylenode
|
|
16
|
+
* @see lib/common/shapes.c:penColor
|
|
17
|
+
* @see lib/common/shapes.c:findFill
|
|
18
|
+
* @see lib/common/emit.c:isFilled
|
|
19
|
+
* @see lib/common/emit.c:4010 parse_style
|
|
20
|
+
* @see lib/gvc/gvrender.c:481 gvrender_set_style
|
|
21
|
+
* @see lib/common/const.h (DEFAULT_COLOR="black", DEFAULT_FILL="lightgrey")
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { PenType } from '../gvc/context.js';
|
|
25
|
+
import { parseGradientSpec } from './htmltable-emit-fill.js';
|
|
26
|
+
import { parseSegs } from './multicolor.js';
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Types
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/** @see lib/common/types.h:graphviz_polygon_style_t */
|
|
33
|
+
export interface PolyStyleFlags {
|
|
34
|
+
filled: boolean;
|
|
35
|
+
dashed: boolean;
|
|
36
|
+
dotted: boolean;
|
|
37
|
+
bold: boolean;
|
|
38
|
+
invis: boolean;
|
|
39
|
+
diagonals: boolean;
|
|
40
|
+
rounded: boolean;
|
|
41
|
+
radial: boolean;
|
|
42
|
+
striped: boolean;
|
|
43
|
+
wedged: boolean;
|
|
44
|
+
underline: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Pen width from a `setlinewidth(N)` style token, or null when absent.
|
|
47
|
+
* @see lib/gvc/gvrender.c:501 gvrender_set_style (atof of paren argument)
|
|
48
|
+
*/
|
|
49
|
+
setLineWidth: number | null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Minimal node attribute bag consumed by resolveNodeFill / resolveNodeFillEx.
|
|
54
|
+
* Mirrors the subset of node attrs read by findFill / isFilled in C.
|
|
55
|
+
*/
|
|
56
|
+
export interface NodeAttrs {
|
|
57
|
+
style?: string | undefined;
|
|
58
|
+
fillcolor?: string | undefined;
|
|
59
|
+
color?: string | undefined;
|
|
60
|
+
/** @see lib/common/emit.c gradientangle attr */
|
|
61
|
+
gradientangle?: string | undefined;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Minimal cluster attribute bag consumed by resolveClusterFill /
|
|
66
|
+
* resolveClusterFillEx.
|
|
67
|
+
* Mirrors the attrs read in emit_clusters (lib/common/emit.c:3805-3853).
|
|
68
|
+
*/
|
|
69
|
+
export interface ClusterAttrs {
|
|
70
|
+
style?: string | undefined;
|
|
71
|
+
color?: string | undefined;
|
|
72
|
+
pencolor?: string | undefined;
|
|
73
|
+
fillcolor?: string | undefined;
|
|
74
|
+
bgcolor?: string | undefined;
|
|
75
|
+
penwidth?: string | undefined;
|
|
76
|
+
/** @see lib/common/emit.c gradientangle attr */
|
|
77
|
+
gradientangle?: string | undefined;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Resolved fill and pen colors for a cluster boundary polygon.
|
|
82
|
+
* @see lib/common/emit.c:emit_clusters:3805-3853
|
|
83
|
+
*/
|
|
84
|
+
export interface ClusterFill {
|
|
85
|
+
/** Whether the cluster interior should be painted. */
|
|
86
|
+
filled: boolean;
|
|
87
|
+
/** Fill color to use when filled=true. */
|
|
88
|
+
fillColor: string;
|
|
89
|
+
/** Pen (stroke) color. */
|
|
90
|
+
penColor: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Discriminated fill result (AD4, AD6).
|
|
95
|
+
* 'none' = not filled; 'solid' = single color;
|
|
96
|
+
* 'linear'/'radial' = gradient from findStopColor.
|
|
97
|
+
* @see lib/common/emit.c:4335 findStopColor
|
|
98
|
+
*/
|
|
99
|
+
export type ResolvedFill =
|
|
100
|
+
| { kind: 'none' }
|
|
101
|
+
| { kind: 'solid'; color: string }
|
|
102
|
+
| { kind: 'linear' | 'radial'; fillColor: string; stopColor: string; frac: number; angle: number };
|
|
103
|
+
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Constants — lib/common/const.h
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
|
|
108
|
+
/** @see lib/common/const.h:48 — #define DEFAULT_COLOR "black" */
|
|
109
|
+
const DEFAULT_COLOR = 'black';
|
|
110
|
+
|
|
111
|
+
/** @see lib/common/const.h:69 — #define DEFAULT_FILL "lightgrey" */
|
|
112
|
+
const DEFAULT_FILL = 'lightgrey';
|
|
113
|
+
|
|
114
|
+
/** @see lib/gvc/gvcjob.h:41 — #define PENWIDTH_BOLD 2.0 */
|
|
115
|
+
const PENWIDTH_BOLD = 2.0;
|
|
116
|
+
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
// Token → flag lookup (replaces switch to keep CCN ≤ 10)
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
|
|
121
|
+
/** Keys of PolyStyleFlags whose value is boolean (excludes setLineWidth). */
|
|
122
|
+
type BoolFlagKey = {
|
|
123
|
+
[K in keyof PolyStyleFlags]: PolyStyleFlags[K] extends boolean ? K : never;
|
|
124
|
+
}[keyof PolyStyleFlags];
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Direct-mapped tokens: token string → PolyStyleFlags boolean key.
|
|
128
|
+
* "radial" is absent here because it also sets filled=true (handled inline).
|
|
129
|
+
* @see lib/gvc/gvrender.c:481 gvrender_set_style
|
|
130
|
+
* @see lib/common/shapes.c:checkStyle
|
|
131
|
+
*/
|
|
132
|
+
const TOKEN_FLAG: Readonly<Record<string, BoolFlagKey>> = {
|
|
133
|
+
filled: 'filled',
|
|
134
|
+
dashed: 'dashed',
|
|
135
|
+
dotted: 'dotted',
|
|
136
|
+
bold: 'bold',
|
|
137
|
+
invis: 'invis',
|
|
138
|
+
diagonals: 'diagonals',
|
|
139
|
+
rounded: 'rounded',
|
|
140
|
+
striped: 'striped',
|
|
141
|
+
wedged: 'wedged',
|
|
142
|
+
underline: 'underline',
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Helpers
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
|
|
149
|
+
/** All-false sentinel returned for empty/undefined style strings. */
|
|
150
|
+
function zeroFlags(): PolyStyleFlags {
|
|
151
|
+
return {
|
|
152
|
+
filled: false, dashed: false, dotted: false, bold: false,
|
|
153
|
+
invis: false, diagonals: false, rounded: false,
|
|
154
|
+
radial: false, striped: false, wedged: false, underline: false,
|
|
155
|
+
setLineWidth: null,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** C parse_style truncates the style list at FUNLIMIT tokens. @see lib/common/emit.c:4001 */
|
|
160
|
+
const FUNLIMIT = 64;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* The raw style tokens C's parse_style produces (comma-separated, trimmed,
|
|
164
|
+
* non-empty), truncated to empty past FUNLIMIT. These are what xdot's
|
|
165
|
+
* `xdot_style` re-emits as `S` ops (it skips filled/bold/setlinewidth). The
|
|
166
|
+
* port resolves style into a PenType for SVG; xdot needs the original tokens.
|
|
167
|
+
* @see lib/common/emit.c:4010 parse_style · gvrender_core_dot.c:161 xdot_style
|
|
168
|
+
*/
|
|
169
|
+
export function styleTokens(style: string | undefined): string[] {
|
|
170
|
+
if (!style) return [];
|
|
171
|
+
const out: string[] = [];
|
|
172
|
+
let fun = 0;
|
|
173
|
+
for (const raw of style.split(',')) {
|
|
174
|
+
const token = raw.trim();
|
|
175
|
+
if (token.length === 0) continue;
|
|
176
|
+
if (fun === FUNLIMIT - 1) return [];
|
|
177
|
+
fun++;
|
|
178
|
+
out.push(token);
|
|
179
|
+
}
|
|
180
|
+
return out;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Extract the numeric argument of a `setlinewidth(N)` token, or null if the
|
|
185
|
+
* token is not a setlinewidth form. Mirrors gvrender_set_style reading
|
|
186
|
+
* `atof` of the parenthesized argument (atof → 0.0 on a non-numeric arg).
|
|
187
|
+
* @see lib/gvc/gvrender.c:501
|
|
188
|
+
*/
|
|
189
|
+
function parseSetLineWidth(token: string): number | null {
|
|
190
|
+
const m = /^setlinewidth\s*\(\s*([^)]*)\)\s*$/.exec(token);
|
|
191
|
+
if (m === null) return null;
|
|
192
|
+
const v = parseFloat(m[1]);
|
|
193
|
+
return Number.isNaN(v) ? 0 : v;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Apply a single trimmed style token to the flags in place.
|
|
198
|
+
* "radial" implies filled=true (lib/common/shapes.c:checkStyle:499-500).
|
|
199
|
+
* Unknown tokens are silently ignored.
|
|
200
|
+
*/
|
|
201
|
+
function applyToken(flags: PolyStyleFlags, token: string): void {
|
|
202
|
+
if (token === 'radial') { flags.radial = true; flags.filled = true; return; }
|
|
203
|
+
const key = TOKEN_FLAG[token];
|
|
204
|
+
if (key !== undefined) flags[key] = true;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** True when s is a non-empty string. */
|
|
208
|
+
function nonEmpty(s: string | undefined): s is string {
|
|
209
|
+
return s !== undefined && s.length > 0;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** Return s if non-empty, else fallback. */
|
|
213
|
+
function orElse(s: string | undefined, fallback: string): string {
|
|
214
|
+
return nonEmpty(s) ? s : fallback;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/** Return the first solid color from a raw color string (AD3). */
|
|
218
|
+
function firstSolidColor(raw: string): string {
|
|
219
|
+
const grad = parseGradientSpec(raw);
|
|
220
|
+
return grad !== null ? grad[0] : raw;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
// Public API
|
|
225
|
+
// ---------------------------------------------------------------------------
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Parse a graphviz style attribute string into a flag set.
|
|
229
|
+
*
|
|
230
|
+
* Splits on commas and trims. A `setlinewidth(N)` token captures its pen-width
|
|
231
|
+
* argument; other tokens containing '(' are ignored. When the non-empty token
|
|
232
|
+
* count reaches FUNLIMIT (64), C's parse_style returns early before building
|
|
233
|
+
* the style list — the observable effect is an empty style list (no flags
|
|
234
|
+
* applied), which we reproduce by returning zeroFlags().
|
|
235
|
+
*
|
|
236
|
+
* @see lib/common/emit.c:4010 parse_style (FUNLIMIT truncation)
|
|
237
|
+
* @see lib/gvc/gvrender.c:481 gvrender_set_style (setlinewidth → penwidth)
|
|
238
|
+
*/
|
|
239
|
+
export function parseStyleFlags(style: string | undefined): PolyStyleFlags {
|
|
240
|
+
const flags = zeroFlags();
|
|
241
|
+
if (!style) return flags;
|
|
242
|
+
let fun = 0;
|
|
243
|
+
for (const raw of style.split(',')) {
|
|
244
|
+
const token = raw.trim();
|
|
245
|
+
if (token.length === 0) continue;
|
|
246
|
+
// C truncates at the FUNLIMIT-th token, skipping the pointer-construction
|
|
247
|
+
// loop → the returned list is empty → no flags apply.
|
|
248
|
+
if (fun === FUNLIMIT - 1) return zeroFlags();
|
|
249
|
+
fun++;
|
|
250
|
+
const lw = parseSetLineWidth(token);
|
|
251
|
+
if (lw !== null) { flags.setLineWidth = lw; continue; }
|
|
252
|
+
if (!token.includes('(')) applyToken(flags, token);
|
|
253
|
+
}
|
|
254
|
+
return flags;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Resolve PenType from parsed style flags.
|
|
259
|
+
* Dashed is checked before dotted (lib/gvc/gvrender.c:493-495).
|
|
260
|
+
* @see lib/gvc/gvrender.c:493
|
|
261
|
+
*/
|
|
262
|
+
/**
|
|
263
|
+
* True when a style string contains the "invisible" pen alias.
|
|
264
|
+
*
|
|
265
|
+
* `gvrender_set_style` maps BOTH "invis" and "invisible" to PEN_NONE
|
|
266
|
+
* (`streq(line,"invis") || streq(line,"invisible")`), suppressing the object's
|
|
267
|
+
* draw. The exact "invis" token additionally drives emit_node/emit_edge's early
|
|
268
|
+
* return and the point shape's `{invis,filled}` whitelist (checkStyle uses exact
|
|
269
|
+
* "invis"), so it is tracked separately as `flags.invis`. This helper reports the
|
|
270
|
+
* "invisible"-only alias, which suppresses drawing for shapes that pass their raw
|
|
271
|
+
* style through gvrender_set_style (poly/record/edge) but NOT for the point shape.
|
|
272
|
+
* Tokenization mirrors parseStyleFlags (comma split, FUNLIMIT truncation).
|
|
273
|
+
* @see lib/gvc/gvrender.c:497 gvrender_set_style
|
|
274
|
+
* @see lib/common/shapes.c:point_gencode (point_style whitelist)
|
|
275
|
+
*/
|
|
276
|
+
export function styleHasInvisibleAlias(style: string | undefined): boolean {
|
|
277
|
+
if (!style) return false;
|
|
278
|
+
let fun = 0;
|
|
279
|
+
for (const raw of style.split(',')) {
|
|
280
|
+
const token = raw.trim();
|
|
281
|
+
if (token.length === 0) continue;
|
|
282
|
+
if (fun === FUNLIMIT - 1) return false;
|
|
283
|
+
fun++;
|
|
284
|
+
if (token === 'invisible') return true;
|
|
285
|
+
}
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export function resolvePenType(flags: PolyStyleFlags): PenType {
|
|
290
|
+
// invis → PEN_NONE (gvrender.c:497-498); downstream polygon/textspan emission
|
|
291
|
+
// is pen-gated. Nodes/edges never reach here with invis (emit shortcircuits).
|
|
292
|
+
if (flags.invis) return PenType.None;
|
|
293
|
+
if (flags.dashed) return PenType.Dashed;
|
|
294
|
+
if (flags.dotted) return PenType.Dotted;
|
|
295
|
+
return PenType.Solid;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Resolve pen width from flags and the raw penwidth attribute string.
|
|
300
|
+
* Precedence: explicit `penwidth` attr → `setlinewidth(N)` style →
|
|
301
|
+
* `bold` flag (2.0) → default (1.0). The explicit attr wins because stylenode
|
|
302
|
+
* applies N_penwidth after gvrender_set_style. (When both `bold` and
|
|
303
|
+
* `setlinewidth` appear in one style string, C is order-dependent; that rare
|
|
304
|
+
* combination is not modelled here — setlinewidth wins.)
|
|
305
|
+
* @see lib/common/shapes.c:539 stylenode
|
|
306
|
+
* @see lib/gvc/gvrender.c:500 gvrender_set_style (bold/setlinewidth)
|
|
307
|
+
* @see lib/gvc/gvcjob.h:41 PENWIDTH_BOLD = 2.0
|
|
308
|
+
*/
|
|
309
|
+
export function resolvePenWidth(
|
|
310
|
+
flags: PolyStyleFlags,
|
|
311
|
+
penwidthAttr: string | undefined,
|
|
312
|
+
): number {
|
|
313
|
+
if (penwidthAttr && penwidthAttr.length > 0) {
|
|
314
|
+
const v = parseFloat(penwidthAttr);
|
|
315
|
+
if (isFinite(v)) return v;
|
|
316
|
+
}
|
|
317
|
+
if (flags.setLineWidth !== null) return flags.setLineWidth;
|
|
318
|
+
if (flags.bold) return PENWIDTH_BOLD;
|
|
319
|
+
return 1.0;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Resolve fill state and fill color for a node.
|
|
324
|
+
* Precedence: fillcolor → color → DEFAULT_FILL ("lightgrey").
|
|
325
|
+
* Gradient specs return the first solid color (AD3).
|
|
326
|
+
* @see lib/common/shapes.c:401 findFillDflt
|
|
327
|
+
* @see lib/common/emit.c:705 isFilled
|
|
328
|
+
* @see lib/common/const.h:69 DEFAULT_FILL = "lightgrey"
|
|
329
|
+
*/
|
|
330
|
+
export function resolveNodeFill(attrs: NodeAttrs): {
|
|
331
|
+
filled: boolean;
|
|
332
|
+
color: string;
|
|
333
|
+
} {
|
|
334
|
+
const flags = parseStyleFlags(attrs.style);
|
|
335
|
+
if (!flags.filled) return { filled: false, color: '' };
|
|
336
|
+
const color = pickFillColor(attrs.fillcolor, attrs.color);
|
|
337
|
+
return { filled: true, color };
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/** Choose raw fill color then extract first solid (AD3). */
|
|
341
|
+
function pickFillColor(
|
|
342
|
+
fillcolor: string | undefined,
|
|
343
|
+
color: string | undefined,
|
|
344
|
+
): string {
|
|
345
|
+
const raw = nonEmpty(fillcolor) ? fillcolor
|
|
346
|
+
: nonEmpty(color) ? color
|
|
347
|
+
: DEFAULT_FILL;
|
|
348
|
+
return firstSolidColor(raw);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Resolve pen (stroke) color. Returns first solid color from colorList,
|
|
353
|
+
* or DEFAULT_COLOR ("black") when attr is absent.
|
|
354
|
+
* @see lib/common/shapes.c:389 penColor
|
|
355
|
+
* @see lib/common/const.h:48 DEFAULT_COLOR = "black"
|
|
356
|
+
*/
|
|
357
|
+
export function resolvePenColor(colorAttr: string | undefined): string {
|
|
358
|
+
if (!colorAttr || colorAttr.length === 0) return DEFAULT_COLOR;
|
|
359
|
+
return firstSolidColor(colorAttr);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// ---------------------------------------------------------------------------
|
|
363
|
+
// Cluster fill helpers (CCN ≤ 3 each)
|
|
364
|
+
// ---------------------------------------------------------------------------
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Derive raw fillcolor and pencolor from cluster attrs.
|
|
368
|
+
* color sets both; pencolor/fillcolor override their respective side.
|
|
369
|
+
* @see lib/common/emit.c:emit_clusters:3835-3840
|
|
370
|
+
*/
|
|
371
|
+
function clusterColorAttrs(
|
|
372
|
+
attrs: ClusterAttrs,
|
|
373
|
+
): { fillcolor: string | undefined; pencolor: string | undefined } {
|
|
374
|
+
const base = nonEmpty(attrs.color) ? attrs.color : undefined;
|
|
375
|
+
const pencolor = orElse(attrs.pencolor, base ?? '');
|
|
376
|
+
const fillcolor = orElse(attrs.fillcolor, base ?? '');
|
|
377
|
+
return {
|
|
378
|
+
fillcolor: nonEmpty(fillcolor) ? fillcolor : undefined,
|
|
379
|
+
pencolor: nonEmpty(pencolor) ? pencolor : undefined,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Apply bgcolor backward-compat: bgcolor activates fill when none set.
|
|
385
|
+
* @see lib/common/emit.c:emit_clusters:3846-3849
|
|
386
|
+
*/
|
|
387
|
+
function applyBgcolor(
|
|
388
|
+
attrs: ClusterAttrs,
|
|
389
|
+
filled: boolean,
|
|
390
|
+
fillcolor: string | undefined,
|
|
391
|
+
): { filled: boolean; fillcolor: string | undefined } {
|
|
392
|
+
if ((!filled || !fillcolor) && nonEmpty(attrs.bgcolor)) {
|
|
393
|
+
return { filled: true, fillcolor: attrs.bgcolor };
|
|
394
|
+
}
|
|
395
|
+
return { filled, fillcolor };
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Resolve cluster fill: filled flag, fill color, and pen color.
|
|
400
|
+
* Ports emit_clusters (lib/common/emit.c:3805-3853). GUI state branches
|
|
401
|
+
* are not ported (browser-only; states managed externally).
|
|
402
|
+
* @see lib/common/emit.c:emit_clusters:3805-3853
|
|
403
|
+
*/
|
|
404
|
+
export function resolveClusterFill(attrs: ClusterAttrs): ClusterFill {
|
|
405
|
+
const flags = parseStyleFlags(attrs.style);
|
|
406
|
+
const colors = clusterColorAttrs(attrs);
|
|
407
|
+
const bg = applyBgcolor(attrs, flags.filled, colors.fillcolor);
|
|
408
|
+
const rawPen = colors.pencolor ?? DEFAULT_COLOR;
|
|
409
|
+
const rawFill = bg.fillcolor ?? DEFAULT_FILL;
|
|
410
|
+
return {
|
|
411
|
+
filled: bg.filled,
|
|
412
|
+
fillColor: firstSolidColor(rawFill),
|
|
413
|
+
penColor: firstSolidColor(rawPen),
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
/** @see lib/common/emit.c:4335 findStopColor */
|
|
417
|
+
export function findStopColor(
|
|
418
|
+
colorlist: string,
|
|
419
|
+
): { fillColor: string; stopColor: string; frac: number } | null {
|
|
420
|
+
const { segs, error } = parseSegs(colorlist);
|
|
421
|
+
if (error === 1 || error === 2) return null;
|
|
422
|
+
if (segs.length < 2) return null;
|
|
423
|
+
const seg0 = segs[0]!;
|
|
424
|
+
const seg1 = segs[1]!;
|
|
425
|
+
if (seg0.color === null) return null;
|
|
426
|
+
const fillColor = seg0.color;
|
|
427
|
+
const stopColor = seg1.color ?? DEFAULT_COLOR;
|
|
428
|
+
const frac = seg0.hasFraction ? seg0.t
|
|
429
|
+
: seg1.hasFraction ? 1 - seg1.t
|
|
430
|
+
: 0;
|
|
431
|
+
return { fillColor, stopColor, frac };
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/** Parse gradientangle attr to integer, default 0. */
|
|
435
|
+
function parseAngle(gradientangle: string | undefined): number {
|
|
436
|
+
if (!gradientangle || gradientangle.length === 0) return 0;
|
|
437
|
+
const v = parseInt(gradientangle, 10);
|
|
438
|
+
return isFinite(v) ? v : 0;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/** Build ResolvedFill from raw color + flags. AD6: two-color → gradient. */
|
|
442
|
+
function buildResolvedFill(
|
|
443
|
+
rawColor: string,
|
|
444
|
+
flags: PolyStyleFlags,
|
|
445
|
+
angle: number,
|
|
446
|
+
): ResolvedFill {
|
|
447
|
+
const stop = findStopColor(rawColor);
|
|
448
|
+
if (stop === null) return { kind: 'solid', color: rawColor };
|
|
449
|
+
const kind = flags.radial ? 'radial' : 'linear';
|
|
450
|
+
return { kind, fillColor: stop.fillColor, stopColor: stop.stopColor, frac: stop.frac, angle };
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Discriminated fill for a node (AD4, AD6). New Ex variant — original
|
|
455
|
+
* resolveNodeFill shape unchanged for G3 compatibility.
|
|
456
|
+
* @see lib/common/emit.c:4335 findStopColor
|
|
457
|
+
* @see lib/common/shapes.c:findFill
|
|
458
|
+
*/
|
|
459
|
+
export function resolveNodeFillEx(attrs: NodeAttrs): ResolvedFill {
|
|
460
|
+
const flags = parseStyleFlags(attrs.style);
|
|
461
|
+
if (!flags.filled) return { kind: 'none' };
|
|
462
|
+
const raw = nonEmpty(attrs.fillcolor) ? attrs.fillcolor
|
|
463
|
+
: nonEmpty(attrs.color) ? attrs.color
|
|
464
|
+
: DEFAULT_FILL;
|
|
465
|
+
return buildResolvedFill(raw, flags, parseAngle(attrs.gradientangle));
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Discriminated fill for a cluster (AD4, AD6). New Ex variant — original
|
|
470
|
+
* resolveClusterFill shape unchanged for G4 compatibility.
|
|
471
|
+
* @see lib/common/emit.c:emit_clusters:3805-3853
|
|
472
|
+
* @see lib/common/emit.c:4335 findStopColor
|
|
473
|
+
*/
|
|
474
|
+
export function resolveClusterFillEx(attrs: ClusterAttrs): ResolvedFill {
|
|
475
|
+
const flags = parseStyleFlags(attrs.style);
|
|
476
|
+
const colors = clusterColorAttrs(attrs);
|
|
477
|
+
const bg = applyBgcolor(attrs, flags.filled, colors.fillcolor);
|
|
478
|
+
if (!bg.filled) return { kind: 'none' };
|
|
479
|
+
const raw = bg.fillcolor ?? DEFAULT_FILL;
|
|
480
|
+
return buildResolvedFill(raw, flags, parseAngle(attrs.gradientangle));
|
|
481
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Graph-object escape substitution: \G \N \E \T \H \L resolved against
|
|
5
|
+
* a node, edge, or graph. Used by plain-label creation (escBackslash
|
|
6
|
+
* false — \\ left for the formatting pass) and by anchor/map data
|
|
7
|
+
* (escBackslash true — \\ collapses to \).
|
|
8
|
+
*
|
|
9
|
+
* @see lib/common/labels.c:strdup_and_subst_obj0
|
|
10
|
+
* @see lib/common/labels.c:strdup_and_subst_obj
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { Node } from '../model/node.js';
|
|
14
|
+
import { Edge } from '../model/edge.js';
|
|
15
|
+
import { Graph } from '../model/graph.js';
|
|
16
|
+
import type { TextlabelT } from './types.js';
|
|
17
|
+
|
|
18
|
+
export type GraphObj = Node | Edge | Graph;
|
|
19
|
+
|
|
20
|
+
/** Resolved values per escape letter. @see strdup_and_subst_obj0 (switch) */
|
|
21
|
+
type SubstTable = Record<'G' | 'N' | 'E' | 'T' | 'H' | 'L', string>;
|
|
22
|
+
|
|
23
|
+
function labelTextOf(info: { label?: unknown }): string | null {
|
|
24
|
+
const lp = info.label as TextlabelT | undefined;
|
|
25
|
+
return lp !== undefined ? lp.text : null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Unresolvable escapes stay literal (C keeps the initial "\X" strings). */
|
|
29
|
+
const LITERAL: SubstTable = {
|
|
30
|
+
G: '\\G', N: '\\N', E: '', T: '\\T', H: '\\H', L: '\\L',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function nodeTable(n: Node): SubstTable {
|
|
34
|
+
return {
|
|
35
|
+
...LITERAL,
|
|
36
|
+
G: n.root.name,
|
|
37
|
+
N: n.name,
|
|
38
|
+
L: labelTextOf(n.info) ?? LITERAL.L,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** \E expansion: tail[:tp](->|--)head[:hp]. @see strdup_and_subst_obj0 (case 'E') */
|
|
43
|
+
function expandE(e: Edge): string {
|
|
44
|
+
// Ports are stored on edge info when present. @see ED_tail_port
|
|
45
|
+
const ti = e.info as { tail_port?: { name?: string }; head_port?: { name?: string } };
|
|
46
|
+
const tp = ti.tail_port?.name ?? '';
|
|
47
|
+
const hp = ti.head_port?.name ?? '';
|
|
48
|
+
const sep = e.tail.root.kind === 'directed' ? '->' : '--';
|
|
49
|
+
return e.tail.name + (tp !== '' ? ':' + tp : '')
|
|
50
|
+
+ sep + e.head.name + (hp !== '' ? ':' + hp : '');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function edgeTable(e: Edge): SubstTable {
|
|
54
|
+
return {
|
|
55
|
+
G: e.tail.root.name,
|
|
56
|
+
N: LITERAL.N,
|
|
57
|
+
E: expandE(e),
|
|
58
|
+
T: e.tail.name,
|
|
59
|
+
H: e.head.name,
|
|
60
|
+
L: labelTextOf(e.info) ?? LITERAL.L,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function graphTable(g: Graph): SubstTable {
|
|
65
|
+
return { ...LITERAL, G: g.name, L: labelTextOf(g.info) ?? LITERAL.L };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function substTable(obj: GraphObj): SubstTable {
|
|
69
|
+
if (obj instanceof Node) return nodeTable(obj);
|
|
70
|
+
if (obj instanceof Edge) return edgeTable(obj);
|
|
71
|
+
return graphTable(obj);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const isSubstEscape = (e: string): e is keyof SubstTable =>
|
|
75
|
+
e === 'G' || e === 'N' || e === 'E' || e === 'T' || e === 'H' || e === 'L';
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Resolve graph-object escapes in str. Other escape sequences
|
|
79
|
+
* (\n, \l, \r, …) pass through unmodified; \\ collapses to \ only
|
|
80
|
+
* when escBackslash is set, mirroring C exactly.
|
|
81
|
+
* @see lib/common/labels.c:strdup_and_subst_obj0 (assembly loop)
|
|
82
|
+
*/
|
|
83
|
+
export function substObj(str: string, obj: GraphObj, escBackslash: boolean): string {
|
|
84
|
+
if (!str.includes('\\')) return str;
|
|
85
|
+
const table = substTable(obj);
|
|
86
|
+
let out = '';
|
|
87
|
+
for (let i = 0; i < str.length; i++) {
|
|
88
|
+
const c = str[i]!;
|
|
89
|
+
if (c !== '\\' || i + 1 >= str.length) { out += c; continue; }
|
|
90
|
+
const e = str[++i]!;
|
|
91
|
+
if (isSubstEscape(e)) out += table[e];
|
|
92
|
+
else if (e === '\\' && escBackslash) out += '\\';
|
|
93
|
+
else out += '\\' + e;
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** The escBackslash=true form used for anchor/map data. @see strdup_and_subst_obj */
|
|
99
|
+
export function substObjAnchor(str: string, obj: GraphObj): string {
|
|
100
|
+
return substObj(str, obj, true);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Tooltip newline mapping: \n and \l become newline, \r carriage
|
|
105
|
+
* return, and the backslash is dropped from any other escape. C runs
|
|
106
|
+
* this BEFORE object substitution (preprocessTooltip), which is why
|
|
107
|
+
* \N in a tooltip renders as a literal "N".
|
|
108
|
+
* @see lib/common/emit.c:interpretCRNL
|
|
109
|
+
*/
|
|
110
|
+
export function interpretCRNL(str: string): string {
|
|
111
|
+
let out = '';
|
|
112
|
+
let backslash = false;
|
|
113
|
+
for (const c of str) {
|
|
114
|
+
if (backslash) {
|
|
115
|
+
if (c === 'n' || c === 'l') out += '\n';
|
|
116
|
+
else if (c === 'r') out += '\r';
|
|
117
|
+
else out += c;
|
|
118
|
+
backslash = false;
|
|
119
|
+
} else if (c === '\\') {
|
|
120
|
+
backslash = true;
|
|
121
|
+
} else {
|
|
122
|
+
out += c;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
}
|