@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,76 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
//
|
|
3
|
+
// SVG object id + class resolution, faithful to C's getObjId
|
|
4
|
+
// (lib/common/emit.c:209) and svg_print_id_class
|
|
5
|
+
// (plugin/core/gvrender_core_svg.c). A non-empty DOT `id` attribute wins
|
|
6
|
+
// verbatim; otherwise the generated `<pfx><seq>` id is used, with a `<gid>_`
|
|
7
|
+
// prefix on non-root objects when the root graph carries an `id` attribute
|
|
8
|
+
// (job.drawingId). The DOT `class` attribute, when present, is appended to the
|
|
9
|
+
// SVG class string. Attribute reads use C's `agget` semantics (defaults
|
|
10
|
+
// inherited) via nodeAttr / clusterAttr.
|
|
11
|
+
|
|
12
|
+
import type { Node } from '../model/node.js';
|
|
13
|
+
import type { Edge } from '../model/edge.js';
|
|
14
|
+
import type { Graph } from '../model/graph.js';
|
|
15
|
+
import type { RenderJob } from '../gvc/job.js';
|
|
16
|
+
import { escapeXmlTitle } from './xml-escape.js';
|
|
17
|
+
import { nodeAttr } from '../common/poly-init.js';
|
|
18
|
+
import { clusterAttr } from '../gvc/device-cluster.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* `class="<kind>"`, with the DOT `class` attribute appended (` <class>`,
|
|
22
|
+
* xml-escaped) when present — mirroring svg_print_id_class.
|
|
23
|
+
* @see plugin/core/gvrender_core_svg.c:svg_print_id_class
|
|
24
|
+
*/
|
|
25
|
+
export function svgClass(kind: string, classAttr: string | undefined): string {
|
|
26
|
+
return classAttr !== undefined && classAttr.length > 0
|
|
27
|
+
? 'class="' + kind + ' ' + escapeXmlTitle(classAttr) + '"'
|
|
28
|
+
: 'class="' + kind + '"';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// getObjId reads the object's OWN `id` (agget returns "" for a subgraph/node
|
|
32
|
+
// that has no id set unless the `id` attribute was declared before the object
|
|
33
|
+
// was created — a cgraph declaration-order quirk we do not model). Using the
|
|
34
|
+
// own id avoids over-inheriting the root graph's id, which the gid prefix
|
|
35
|
+
// already supplies separately. @see lib/common/emit.c:getObjId
|
|
36
|
+
|
|
37
|
+
/** SVG id for a node: own DOT `id` attr, else `node<seq>` (with gid prefix). */
|
|
38
|
+
export function svgNodeId(n: Node, job: RenderJob): string {
|
|
39
|
+
return job.objId(n.attrs.get('id'), 'node' + (n.id + 1));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** SVG id for an edge: own DOT `id` attr, else `edge<graphSeq>` (gid prefix). */
|
|
43
|
+
export function svgEdgeId(e: Edge, job: RenderJob): string {
|
|
44
|
+
return job.objId(e.attrs.get('id'), 'edge' + e.graphSeq);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** SVG id for a cluster: own DOT `id` attr, else `clust<AGSEQ seq>` (gid prefix).
|
|
48
|
+
* @see lib/common/emit.c:getObjId */
|
|
49
|
+
export function svgClusterId(sg: Graph, job: RenderJob): string {
|
|
50
|
+
return job.objId(sg.attrs.get('id'), 'clust' + sg.seq);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** SVG id for the root graph group: DOT `id` attr, else `graph0` (no prefix). */
|
|
54
|
+
export function svgGraphId(g: Graph, job: RenderJob): string {
|
|
55
|
+
return job.objId(g.attrs.get('id'), 'graph0', true);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** `class="node[ <class>]"`, reading the inherited DOT `class` attribute. */
|
|
59
|
+
export function svgNodeClass(n: Node): string {
|
|
60
|
+
return svgClass('node', nodeAttr(n, n.root, 'class'));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** `class="edge[ <class>]"`. */
|
|
64
|
+
export function svgEdgeClass(e: Edge): string {
|
|
65
|
+
return svgClass('edge', e.attrs.get('class'));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** `class="cluster[ <class>]"`, reading the inherited cluster `class` attr. */
|
|
69
|
+
export function svgClusterClass(sg: Graph): string {
|
|
70
|
+
return svgClass('cluster', clusterAttr(sg, 'class'));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** `class="graph[ <class>]"`. */
|
|
74
|
+
export function svgGraphClass(g: Graph): string {
|
|
75
|
+
return svgClass('graph', g.attrs.get('class'));
|
|
76
|
+
}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Multicolor region fills: stripedBox and wedgedEllipse.
|
|
5
|
+
*
|
|
6
|
+
* Ports the REGION-fill functions from lib/common/emit.c and the
|
|
7
|
+
* arc-to-Bézier machinery from lib/common/ellipse.c. These are called
|
|
8
|
+
* from poly-gencode (S1) for style=striped polygon nodes and style=wedged
|
|
9
|
+
* ellipse nodes when fillcolor is a multi-segment color list.
|
|
10
|
+
*
|
|
11
|
+
* @see lib/common/emit.c:595 stripedBox
|
|
12
|
+
* @see lib/common/emit.c:549 wedgedEllipse
|
|
13
|
+
* @see lib/common/ellipse.c:274 ellipticWedge
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { Point } from '../model/geom.js';
|
|
17
|
+
import type { RenderJob } from '../gvc/job.js';
|
|
18
|
+
import type { RendererPlugin } from '../gvc/context.js';
|
|
19
|
+
import { parseSegs } from '../common/multicolor.js';
|
|
20
|
+
import { resolveRenderColor } from './color-resolve.js';
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Constants
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Thin-line pen width used for multicolor band/wedge outlines.
|
|
28
|
+
* @see lib/common/emit.c:538 #define THIN_LINE 0.5
|
|
29
|
+
*/
|
|
30
|
+
export const THIN_LINE = 0.5;
|
|
31
|
+
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// ellipticWedge — arc-to-Bézier approximation
|
|
34
|
+
// @see lib/common/ellipse.c:274
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
|
|
37
|
+
/** Rational function (x*(x*c[0]+c[1])+c[2]) / (x+c[3]). */
|
|
38
|
+
function rationalFunction(x: number, c: readonly number[]): number {
|
|
39
|
+
return (x * (x * c[0]! + c[1]!) + c[2]!) / (x + c[3]!);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Error coefficients for b/a < 0.25. @see lib/common/ellipse.c:97 */
|
|
43
|
+
const COEFFS3LOW: readonly (readonly number[])[][] = [
|
|
44
|
+
[
|
|
45
|
+
[3.85268, -21.229, -0.330434, 0.0127842],
|
|
46
|
+
[-1.61486, 0.706564, 0.225945, 0.263682],
|
|
47
|
+
[-0.910164, 0.388383, 0.00551445, 0.00671814],
|
|
48
|
+
[-0.630184, 0.192402, 0.0098871, 0.0102527],
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
[-0.162211, 9.94329, 0.13723, 0.0124084],
|
|
52
|
+
[-0.253135, 0.00187735, 0.0230286, 0.01264],
|
|
53
|
+
[-0.0695069, -0.0437594, 0.0120636, 0.0163087],
|
|
54
|
+
[-0.0328856, -0.00926032, -0.00173573, 0.00527385],
|
|
55
|
+
],
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
/** Error coefficients for 0.25 <= b/a <= 1. @see lib/common/ellipse.c:110 */
|
|
59
|
+
const COEFFS3HIGH: readonly (readonly number[])[][] = [
|
|
60
|
+
[
|
|
61
|
+
[0.0899116, -19.2349, -4.11711, 0.183362],
|
|
62
|
+
[0.138148, -1.45804, 1.32044, 1.38474],
|
|
63
|
+
[0.230903, -0.450262, 0.219963, 0.414038],
|
|
64
|
+
[0.0590565, -0.101062, 0.0430592, 0.0204699],
|
|
65
|
+
],
|
|
66
|
+
[
|
|
67
|
+
[0.0164649, 9.89394, 0.0919496, 0.00760802],
|
|
68
|
+
[0.0191603, -0.0322058, 0.0134667, -0.0825018],
|
|
69
|
+
[0.0156192, -0.017535, 0.00326508, -0.228157],
|
|
70
|
+
[-0.0236752, 0.0405821, -0.0173086, 0.176187],
|
|
71
|
+
],
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
/** Safety factors for error bound. @see lib/common/ellipse.c:122 */
|
|
75
|
+
const SAFETY3 = [0.001, 4.98, 0.207, 0.0067] as const;
|
|
76
|
+
|
|
77
|
+
/** Estimate maximum Bézier approximation error for a sub-arc. */
|
|
78
|
+
function estimateError(
|
|
79
|
+
a: number, b: number, etaA: number, etaB: number,
|
|
80
|
+
): number {
|
|
81
|
+
const eta = 0.5 * (etaA + etaB);
|
|
82
|
+
const x = b / a;
|
|
83
|
+
const dEta = etaB - etaA;
|
|
84
|
+
const cos2 = Math.cos(2 * eta);
|
|
85
|
+
const cos4 = Math.cos(4 * eta);
|
|
86
|
+
const cos6 = Math.cos(6 * eta);
|
|
87
|
+
const c = x < 0.25 ? COEFFS3LOW : COEFFS3HIGH;
|
|
88
|
+
const c0 = rationalFunction(x, c[0]![0]!) +
|
|
89
|
+
cos2 * rationalFunction(x, c[0]![1]!) +
|
|
90
|
+
cos4 * rationalFunction(x, c[0]![2]!) +
|
|
91
|
+
cos6 * rationalFunction(x, c[0]![3]!);
|
|
92
|
+
const c1 = rationalFunction(x, c[1]![0]!) +
|
|
93
|
+
cos2 * rationalFunction(x, c[1]![1]!) +
|
|
94
|
+
cos4 * rationalFunction(x, c[1]![2]!) +
|
|
95
|
+
cos6 * rationalFunction(x, c[1]![3]!);
|
|
96
|
+
return rationalFunction(x, SAFETY3) * a * Math.exp(c0 + c1 * dEta);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** Scan n subdivisions; return true if all satisfy the error threshold. */
|
|
100
|
+
function allSubdivsBelowThreshold(
|
|
101
|
+
a: number, b: number, eta1: number, n: number, dEta: number,
|
|
102
|
+
): boolean {
|
|
103
|
+
let etaA = eta1;
|
|
104
|
+
for (let i = 0; i < n; i++) {
|
|
105
|
+
if (estimateError(a, b, etaA, etaA + dEta) > 0.00001) return false;
|
|
106
|
+
etaA += dEta;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Return the number of Bézier curves needed to approximate the arc.
|
|
113
|
+
* @see lib/common/ellipse.c:genEllipticPath (subdivision loop)
|
|
114
|
+
*/
|
|
115
|
+
function numSubdivisions(
|
|
116
|
+
a: number, b: number, eta1: number, eta2: number,
|
|
117
|
+
): number {
|
|
118
|
+
let n = 1;
|
|
119
|
+
while (n < 1024) {
|
|
120
|
+
const dEta = (eta2 - eta1) / n;
|
|
121
|
+
if (dEta <= 0.5 * Math.PI && allSubdivsBelowThreshold(a, b, eta1, n, dEta)) break;
|
|
122
|
+
n <<= 1;
|
|
123
|
+
}
|
|
124
|
+
return n;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** Ellipse geometry parameters. */
|
|
128
|
+
interface EllipseParams { cx: number; cy: number; xsemi: number; ysemi: number; }
|
|
129
|
+
|
|
130
|
+
/** Mutable arc tangent+position state for the genEllipticPath loop. */
|
|
131
|
+
interface ArcState { xB: number; yB: number; xBDot: number; yBDot: number; }
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Build the initial path prefix and return arc state.
|
|
135
|
+
* @see lib/common/ellipse.c:220-233
|
|
136
|
+
*/
|
|
137
|
+
function initArcPath(pts: Point[], e: EllipseParams, eta1: number): ArcState {
|
|
138
|
+
const cosE = Math.cos(eta1); const sinE = Math.sin(eta1);
|
|
139
|
+
const xB = e.cx + e.xsemi * cosE; const yB = e.cy + e.ysemi * sinE;
|
|
140
|
+
pts.push({ x: e.cx, y: e.cy }, { x: e.cx, y: e.cy },
|
|
141
|
+
{ x: xB, y: yB }, { x: xB, y: yB });
|
|
142
|
+
return { xB, yB, xBDot: -e.xsemi * sinE, yBDot: e.ysemi * cosE };
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Step parameters for one Bézier arc segment. */
|
|
146
|
+
interface StepParams { etaB: number; dEta: number; alpha: number; }
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Append one cubic Bézier step; advance arc state. Returns new etaB.
|
|
150
|
+
* @see lib/common/ellipse.c:238-258
|
|
151
|
+
*/
|
|
152
|
+
function stepBezier(
|
|
153
|
+
pts: Point[], state: ArcState, e: EllipseParams, sp: StepParams,
|
|
154
|
+
): number {
|
|
155
|
+
const xA = state.xB; const yA = state.yB;
|
|
156
|
+
const xADot = state.xBDot; const yADot = state.yBDot;
|
|
157
|
+
const newEta = sp.etaB + sp.dEta;
|
|
158
|
+
const cosE = Math.cos(newEta); const sinE = Math.sin(newEta);
|
|
159
|
+
state.xB = e.cx + e.xsemi * cosE; state.yB = e.cy + e.ysemi * sinE;
|
|
160
|
+
state.xBDot = -e.xsemi * sinE; state.yBDot = e.ysemi * cosE;
|
|
161
|
+
pts.push({ x: xA + sp.alpha * xADot, y: yA + sp.alpha * yADot });
|
|
162
|
+
pts.push({ x: state.xB - sp.alpha * state.xBDot, y: state.yB - sp.alpha * state.yBDot });
|
|
163
|
+
pts.push({ x: state.xB, y: state.yB });
|
|
164
|
+
return newEta;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Return cubic Bézier path points approximating an elliptic wedge sector.
|
|
169
|
+
* Coordinates are in graphviz y-UP space — caller negates y for SVG.
|
|
170
|
+
*
|
|
171
|
+
* @see lib/common/ellipse.c:195 genEllipticPath
|
|
172
|
+
* @see lib/common/ellipse.c:274 ellipticWedge
|
|
173
|
+
*/
|
|
174
|
+
export function ellipticWedge(
|
|
175
|
+
e: EllipseParams, angle0: number, angle1: number,
|
|
176
|
+
): Point[] {
|
|
177
|
+
const TWOPI = 2 * Math.PI;
|
|
178
|
+
const eta1 = Math.atan2(Math.sin(angle0) / e.ysemi, Math.cos(angle0) / e.xsemi);
|
|
179
|
+
let eta2 = Math.atan2(Math.sin(angle1) / e.ysemi, Math.cos(angle1) / e.xsemi);
|
|
180
|
+
eta2 -= TWOPI * Math.floor((eta2 - eta1) / TWOPI);
|
|
181
|
+
if (angle1 - angle0 > Math.PI && eta2 - eta1 < Math.PI) eta2 += TWOPI;
|
|
182
|
+
const n = numSubdivisions(e.xsemi, e.ysemi, eta1, eta2);
|
|
183
|
+
const dEta = (eta2 - eta1) / n;
|
|
184
|
+
const t = Math.tan(0.5 * dEta);
|
|
185
|
+
const alpha = Math.sin(dEta) * (Math.sqrt(4 + 3 * t * t) - 1) / 3;
|
|
186
|
+
const pts: Point[] = [];
|
|
187
|
+
const state = initArcPath(pts, e, eta1);
|
|
188
|
+
let sp: StepParams = { etaB: eta1, dEta, alpha };
|
|
189
|
+
for (let i = 0; i < n; i++) sp = { ...sp, etaB: stepBezier(pts, state, e, sp) };
|
|
190
|
+
pts.push({ x: state.xB, y: state.yB }, { x: e.cx, y: e.cy }, { x: e.cx, y: e.cy });
|
|
191
|
+
return pts;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
// Shared render context
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
|
|
198
|
+
/** Render job + plugin pair threaded through helpers. */
|
|
199
|
+
interface RenderCtx { job: RenderJob; renderer: RendererPlugin; }
|
|
200
|
+
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// wedgedEllipse
|
|
203
|
+
// @see lib/common/emit.c:549
|
|
204
|
+
// ---------------------------------------------------------------------------
|
|
205
|
+
|
|
206
|
+
/** One wedge segment descriptor. */
|
|
207
|
+
interface WedgeSeg { angle0: number; t: number; isLast: boolean; color: string; }
|
|
208
|
+
|
|
209
|
+
/** Draw one wedge; return updated angle0. */
|
|
210
|
+
function drawWedge(seg: WedgeSeg, e: EllipseParams, ctx: RenderCtx): number {
|
|
211
|
+
const TWOPI = 2 * Math.PI;
|
|
212
|
+
const angle1 = seg.isLast ? TWOPI : seg.angle0 + TWOPI * seg.t;
|
|
213
|
+
const obj = ctx.job.obj;
|
|
214
|
+
// Resolve the wedge segment color (C's gvrender_set_fillcolor) so a raw
|
|
215
|
+
// fillcolor spec cannot reach fill="..." as a verbatim type:'string' paint.
|
|
216
|
+
if (obj !== null) obj.fillColor = resolveRenderColor(seg.color);
|
|
217
|
+
const ptsUp = ellipticWedge(e, seg.angle0, angle1);
|
|
218
|
+
ctx.renderer.bezier(ptsUp.map((p) => ({ x: p.x, y: -p.y })), true, ctx.job);
|
|
219
|
+
return angle1;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Fill an ellipse with multiple pie-wedge sectors, one per color segment.
|
|
224
|
+
*
|
|
225
|
+
* `pf` is a 2-point bounding-box array in SVG y-DOWN device coordinates.
|
|
226
|
+
* Thin pen (THIN_LINE) for each wedge; caller draws boundary unfilled after.
|
|
227
|
+
*
|
|
228
|
+
* Returns 0 → ok; 1 or 2 → parse error.
|
|
229
|
+
*
|
|
230
|
+
* @see lib/common/emit.c:549 wedgedEllipse
|
|
231
|
+
*/
|
|
232
|
+
export function wedgedEllipse(
|
|
233
|
+
job: RenderJob, pf: Point[], clrs: string, renderer: RendererPlugin,
|
|
234
|
+
): number {
|
|
235
|
+
const { segs, error } = parseSegs(clrs);
|
|
236
|
+
if (error === 1 || error === 2) return error;
|
|
237
|
+
const ctrX = (pf[0]!.x + pf[1]!.x) / 2;
|
|
238
|
+
const ctrY = (pf[0]!.y + pf[1]!.y) / 2;
|
|
239
|
+
const e: EllipseParams = {
|
|
240
|
+
cx: ctrX, cy: -ctrY,
|
|
241
|
+
xsemi: pf[1]!.x - ctrX, ysemi: Math.abs(pf[1]!.y - ctrY),
|
|
242
|
+
};
|
|
243
|
+
const ctx: RenderCtx = { job, renderer };
|
|
244
|
+
const obj = job.obj;
|
|
245
|
+
const saved = obj !== null ? obj.penWidth : 1.0;
|
|
246
|
+
if (obj !== null && saved > THIN_LINE) obj.penWidth = THIN_LINE;
|
|
247
|
+
let angle0 = 0;
|
|
248
|
+
for (let i = 0; i < segs.length; i++) {
|
|
249
|
+
const s = segs[i]!;
|
|
250
|
+
if (s.color === null) break;
|
|
251
|
+
if (s.t > 0) {
|
|
252
|
+
angle0 = drawWedge({ angle0, t: s.t, isLast: i + 1 === segs.length, color: s.color }, e, ctx);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (obj !== null && saved > THIN_LINE) obj.penWidth = saved;
|
|
256
|
+
return error;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// ---------------------------------------------------------------------------
|
|
260
|
+
// stripedBox
|
|
261
|
+
// @see lib/common/emit.c:595
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
263
|
+
|
|
264
|
+
/** One stripe band descriptor. */
|
|
265
|
+
interface BandSeg { color: string; isLast: boolean; segWidth: number; lastx: number; }
|
|
266
|
+
|
|
267
|
+
/** Draw one stripe band; advance p[0].x and p[3].x in place. */
|
|
268
|
+
function drawBand(p: Point[], seg: BandSeg, ctx: RenderCtx): void {
|
|
269
|
+
const obj = ctx.job.obj;
|
|
270
|
+
if (obj !== null) obj.fillColor = resolveRenderColor(seg.color);
|
|
271
|
+
p[1]!.x = p[2]!.x = seg.isLast ? seg.lastx : p[0]!.x + seg.segWidth;
|
|
272
|
+
ctx.renderer.polygon([...p], true, ctx.job);
|
|
273
|
+
p[0]!.x = p[3]!.x = p[1]!.x;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Fill a rectangular box with vertical color stripes.
|
|
278
|
+
*
|
|
279
|
+
* `pts` is a 4-point array in SVG y-DOWN device coordinates.
|
|
280
|
+
* `rotate` swaps corner order (true = vertical stripes, C default).
|
|
281
|
+
* Thin pen; caller draws boundary polygon unfilled after.
|
|
282
|
+
*
|
|
283
|
+
* Returns 0 → ok; 1 or 2 → parse error.
|
|
284
|
+
*
|
|
285
|
+
* @see lib/common/emit.c:595 stripedBox
|
|
286
|
+
*/
|
|
287
|
+
export function stripedBox(
|
|
288
|
+
job: RenderJob, pts: Point[], clrs: string,
|
|
289
|
+
rotate: boolean, renderer: RendererPlugin,
|
|
290
|
+
): number {
|
|
291
|
+
const { segs, error } = parseSegs(clrs);
|
|
292
|
+
if (error === 1 || error === 2) return error;
|
|
293
|
+
// @see lib/common/emit.c:605-615 rotate swap
|
|
294
|
+
const p: Point[] = rotate
|
|
295
|
+
? [{ ...pts[2]! }, { ...pts[3]! }, { ...pts[0]! }, { ...pts[1]! }]
|
|
296
|
+
: [{ ...pts[0]! }, { ...pts[1]! }, { ...pts[2]! }, { ...pts[3]! }];
|
|
297
|
+
const lastx = p[1]!.x;
|
|
298
|
+
const xdelta = p[1]!.x - p[0]!.x;
|
|
299
|
+
p[1]!.x = p[2]!.x = p[0]!.x;
|
|
300
|
+
const ctx: RenderCtx = { job, renderer };
|
|
301
|
+
const obj = job.obj;
|
|
302
|
+
const saved = obj !== null ? obj.penWidth : 1.0;
|
|
303
|
+
if (obj !== null && saved > THIN_LINE) obj.penWidth = THIN_LINE;
|
|
304
|
+
for (let i = 0; i < segs.length; i++) {
|
|
305
|
+
const s = segs[i]!;
|
|
306
|
+
if (s.color === null) break;
|
|
307
|
+
if (s.t > 0) {
|
|
308
|
+
drawBand(p, { color: s.color, isLast: i + 1 === segs.length, segWidth: xdelta * s.t, lastx }, ctx);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (obj !== null && saved > THIN_LINE) obj.penWidth = saved;
|
|
312
|
+
return error;
|
|
313
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Parallel multi-color Bézier edge emission (M1).
|
|
5
|
+
*
|
|
6
|
+
* Ports the `else if (numc)` branch of emit_edge_graphics from
|
|
7
|
+
* lib/common/emit.c:2442-2528. Each color in a "c1:c2:…" color-list
|
|
8
|
+
* produces one Bézier path offset SEP=2.0 graph-units perpendicular to
|
|
9
|
+
* the routed spline. Arrow colors follow C's headcolor/tailcolor rule:
|
|
10
|
+
* headcolor = first color (cnum 0), tailcolor = second color (cnum 1, else
|
|
11
|
+
* same as headcolor).
|
|
12
|
+
*
|
|
13
|
+
* AD1: per-curve pen flows through job.obj (caller sets penColor before
|
|
14
|
+
* each curve; we mutate obj.penColor here so the T4 path emitters see
|
|
15
|
+
* the right color).
|
|
16
|
+
* AD4: caller passes the raw color-list string; numc is computed here.
|
|
17
|
+
*
|
|
18
|
+
* @see lib/common/emit.c:2442 (else if numc branch)
|
|
19
|
+
* @see lib/common/emit.c:2364 (#define SEP 2.0)
|
|
20
|
+
* @see lib/common/emit.c:2481-2496 (headcolor/tailcolor assignment)
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import type { Edge } from '../model/edge.js';
|
|
24
|
+
import type { RenderJob } from '../gvc/job.js';
|
|
25
|
+
import type { Point, Bezier } from '../model/geom.js';
|
|
26
|
+
import { buildOffsetLists, advanceTmpList } from '../common/edge-offset.js';
|
|
27
|
+
import { transformPoint } from '../gvc/device.js';
|
|
28
|
+
import { emitBezierPath, emitDash, emitPenWidth } from './svg-helpers.js';
|
|
29
|
+
import { resolveRenderColor, colorPaint, colorOpacity } from './color-resolve.js';
|
|
30
|
+
import { parseSegs } from '../common/multicolor.js';
|
|
31
|
+
|
|
32
|
+
const PENWIDTH_NORMAL = 1.0;
|
|
33
|
+
const PENWIDTH_THRESHOLD = 0.005;
|
|
34
|
+
const DEFAULT_COLOR = 'black';
|
|
35
|
+
|
|
36
|
+
/** Return value carrying the head/tail arrow colors for the caller. */
|
|
37
|
+
export interface ParallelEdgeResult {
|
|
38
|
+
headColor: string;
|
|
39
|
+
tailColor: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Emit one offset Bézier path for a single color in the parallel-curve loop.
|
|
44
|
+
* Mutates job.obj.penColor so subsequent arrow emitters see the right color.
|
|
45
|
+
* @see lib/common/emit.c:2501-2506
|
|
46
|
+
*/
|
|
47
|
+
function emitOffsetBezier(tmplist: Point[], job: RenderJob, color: string): void {
|
|
48
|
+
const obj = job.obj;
|
|
49
|
+
const resolved = resolveRenderColor(color);
|
|
50
|
+
if (obj !== null) {
|
|
51
|
+
obj.penColor = resolved;
|
|
52
|
+
}
|
|
53
|
+
job.write('<path fill="none" stroke="' + colorPaint(resolved) + '"');
|
|
54
|
+
if (obj !== null && Math.abs(obj.penWidth - PENWIDTH_NORMAL) >= PENWIDTH_THRESHOLD) {
|
|
55
|
+
emitPenWidth(job, obj.penWidth);
|
|
56
|
+
}
|
|
57
|
+
if (obj !== null) emitDash(job, obj.pen);
|
|
58
|
+
// C svg_grstyle emits stroke-opacity (after stroke-width/dasharray) for an
|
|
59
|
+
// RGBA paint with partial alpha, e.g. an edge color="#rrggbbaa".
|
|
60
|
+
// @see plugin/core/gvrender_core_svg.c:207-210 svg_grstyle
|
|
61
|
+
const op = colorOpacity(resolved);
|
|
62
|
+
if (op !== null) job.write(' stroke-opacity="' + op + '"');
|
|
63
|
+
job.write(' d="');
|
|
64
|
+
emitBezierPath(job, tmplist);
|
|
65
|
+
job.write('"/>\n');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Emit parallel offset Bézier curves, one per color in `colorList`.
|
|
70
|
+
* Returns the head and tail arrow colors so the caller can emit arrows.
|
|
71
|
+
*
|
|
72
|
+
* Algorithm (ports emit.c:2442-2528):
|
|
73
|
+
* 1. numc = count of ':' in colorList; numc2 = (2+numc)/2
|
|
74
|
+
* 2. For each bezier segment, compute offlist + init tmplist to outermost lane
|
|
75
|
+
* 3. For each color token (cnum=0,1,…): advance tmplist by one offset step,
|
|
76
|
+
* emit path in that color; set headColor (cnum==0), tailColor (cnum==1).
|
|
77
|
+
*
|
|
78
|
+
* @see lib/common/emit.c:2442-2528
|
|
79
|
+
*/
|
|
80
|
+
type SegLists = { offlist: Point[]; tmplist: Point[] };
|
|
81
|
+
|
|
82
|
+
/** Pre-build per-segment offset + working lists (graph/pre-transform space). */
|
|
83
|
+
function buildSegData(bzList: (Bezier | undefined)[], numc2: number): SegLists[] {
|
|
84
|
+
const segData: SegLists[] = [];
|
|
85
|
+
for (const bz of bzList) {
|
|
86
|
+
if (bz === undefined || bz.size < 4) {
|
|
87
|
+
segData.push({ offlist: [], tmplist: [] });
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
segData.push(buildOffsetLists(bz.list, numc2));
|
|
91
|
+
}
|
|
92
|
+
return segData;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Emit one parallel offset curve per color, advancing the working list each pass. */
|
|
96
|
+
function emitColorPasses(segData: SegLists[], colors: string[], job: RenderJob): void {
|
|
97
|
+
for (const color of colors) {
|
|
98
|
+
for (const sd of segData) {
|
|
99
|
+
if (sd.offlist.length === 0) continue;
|
|
100
|
+
advanceTmpList(sd.tmplist, sd.offlist);
|
|
101
|
+
emitOffsetBezier(sd.tmplist.map((p) => transformPoint(p, job)), job, color);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function emitParallelEdgePaths(
|
|
107
|
+
e: Edge,
|
|
108
|
+
job: RenderJob,
|
|
109
|
+
colorList: string,
|
|
110
|
+
): ParallelEdgeResult {
|
|
111
|
+
const spl = e.info.spl;
|
|
112
|
+
const numc = (colorList.match(/:/g) ?? []).length;
|
|
113
|
+
const segData = buildSegData((spl?.list ?? []) as (Bezier | undefined)[], (2 + numc) / 2);
|
|
114
|
+
// parseSegs strips any ';weight', so the semicolon syntax (which C routes
|
|
115
|
+
// to split-along-length multicolor — a follow-up) at least yields valid
|
|
116
|
+
// parallel colors instead of an invalid "red;0.5" stroke.
|
|
117
|
+
const colors = parseSegs(colorList).segs.map((s) => s.color ?? DEFAULT_COLOR);
|
|
118
|
+
emitColorPasses(segData, colors, job);
|
|
119
|
+
return {
|
|
120
|
+
headColor: colors[0] ?? DEFAULT_COLOR,
|
|
121
|
+
tailColor: colors[1] ?? colors[0] ?? DEFAULT_COLOR,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
//
|
|
3
|
+
// SVG emit for `style="tapered"` edges. Ports the `if (tapered)` branch of
|
|
4
|
+
// emit_edge_graphics: draw the first Bézier as a filled taper polygon
|
|
5
|
+
// (pencolor transparent, fillcolor = edge color) and then the arrowheads.
|
|
6
|
+
//
|
|
7
|
+
// @see lib/common/emit.c:2422 emit_edge_graphics (tapered branch)
|
|
8
|
+
|
|
9
|
+
import type { Edge } from '../model/edge.js';
|
|
10
|
+
import type { RenderJob } from '../gvc/job.js';
|
|
11
|
+
import { taper, taperfun } from '../common/taper.js';
|
|
12
|
+
import { svgPolygon, svgArrowPolygons } from './svg-helpers.js';
|
|
13
|
+
import { transformPoint } from '../gvc/device.js';
|
|
14
|
+
import { isDirected } from './dot.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* True if `style="tapered"` is among the edge's style tokens, mirroring
|
|
18
|
+
* emit_edge_graphics' scan of the parse_style list. Tokens are comma-separated
|
|
19
|
+
* (parse_style), so a bare `tapered` matches. @see lib/common/emit.c:2371
|
|
20
|
+
*/
|
|
21
|
+
export function edgeIsTapered(e: Edge): boolean {
|
|
22
|
+
const style = e.attrs.get('style');
|
|
23
|
+
if (style === undefined || style === '') return false;
|
|
24
|
+
return style.split(',').some((t) => t.trim() === 'tapered');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Emit a tapered edge: the taper polygon followed by the arrowheads. C sets
|
|
29
|
+
* pencolor "transparent" and fillcolor = edge color for the polygon, then
|
|
30
|
+
* restores pencolor = color before the arrows. The port carries pen/fill on
|
|
31
|
+
* job.obj, so we swap them around the polygon and restore for
|
|
32
|
+
* svgArrowPolygons (which paints in obj.penColor).
|
|
33
|
+
* @see lib/common/emit.c:2422
|
|
34
|
+
*/
|
|
35
|
+
export function svgTaperedEdge(e: Edge, job: RenderJob): void {
|
|
36
|
+
const spl = e.info.spl;
|
|
37
|
+
const obj = job.obj;
|
|
38
|
+
if (spl === undefined || spl.list.length === 0 || obj === null) return;
|
|
39
|
+
const bz = spl.list[0]!;
|
|
40
|
+
const radfunc = taperfun(e.attrs.get('dir'), isDirected(e.tail.root));
|
|
41
|
+
// taper() works in layout coords (y-up); svgPolygon emits emit-space points,
|
|
42
|
+
// so map through transformPoint (devscale.y=-1 + translation) like node polys.
|
|
43
|
+
const verts = taper(bz, radfunc, obj.penWidth).map((p) => transformPoint(p, job));
|
|
44
|
+
|
|
45
|
+
const savedPen = obj.penColor;
|
|
46
|
+
const savedFill = obj.fillColor;
|
|
47
|
+
// pencolor -> transparent (renders stroke="none"); fillcolor -> edge color.
|
|
48
|
+
obj.fillColor = savedPen;
|
|
49
|
+
obj.penColor = { type: 'string', s: 'transparent' };
|
|
50
|
+
svgPolygon(verts, true, job);
|
|
51
|
+
obj.penColor = savedPen;
|
|
52
|
+
obj.fillColor = savedFill;
|
|
53
|
+
|
|
54
|
+
// Arrowheads (bz.sflag/eflag) — precomputed head/tail ops, painted in color.
|
|
55
|
+
svgArrowPolygons(e, job);
|
|
56
|
+
}
|