@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
package/src/gvc/job.ts
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* RenderJob — full implementation, replacing the T25 scaffold.
|
|
5
|
+
*
|
|
6
|
+
* Ports GVJ_s and obj_state_s from lib/gvc/gvcjob.h.
|
|
7
|
+
*
|
|
8
|
+
* @see lib/gvc/gvcjob.h:GVJ_s
|
|
9
|
+
* @see lib/gvc/gvcjob.h:obj_state_s
|
|
10
|
+
* @see lib/gvc/gvdevice.c:gvprintdouble
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { Graph } from '../model/graph.js';
|
|
14
|
+
import type { Node } from '../model/node.js';
|
|
15
|
+
import type { Edge } from '../model/edge.js';
|
|
16
|
+
import type { Point, Box } from '../model/geom.js';
|
|
17
|
+
import type { GVColor } from '../common/color.js';
|
|
18
|
+
import type { TextMeasurer } from '../common/textmeasure.js';
|
|
19
|
+
import type { RendererPlugin } from './context.js';
|
|
20
|
+
import { PenType, FillType } from './context.js';
|
|
21
|
+
import { printfFixed } from '../util/printf-round.js';
|
|
22
|
+
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Enums — values must match C exactly
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
/** @see lib/gvc/gvcjob.h:obj_type */
|
|
28
|
+
export const enum ObjType {
|
|
29
|
+
RootGraph = 0,
|
|
30
|
+
Cluster = 1,
|
|
31
|
+
Node = 2,
|
|
32
|
+
Edge = 3,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** @see lib/gvc/gvcjob.h:emit_state_t */
|
|
36
|
+
export const enum EmitState {
|
|
37
|
+
GDraw = 0,
|
|
38
|
+
CDraw = 1,
|
|
39
|
+
TDraw = 2,
|
|
40
|
+
HDraw = 3,
|
|
41
|
+
GLabel = 4,
|
|
42
|
+
CLabel = 5,
|
|
43
|
+
TLabel = 6,
|
|
44
|
+
HLabel = 7,
|
|
45
|
+
NDraw = 8,
|
|
46
|
+
EDraw = 9,
|
|
47
|
+
NLabel = 10,
|
|
48
|
+
ELabel = 11,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** @see lib/gvc/gvcjob.h:map_shape_t */
|
|
52
|
+
export const enum MapShape {
|
|
53
|
+
Rectangle = 0,
|
|
54
|
+
Circle = 1,
|
|
55
|
+
Polygon = 2,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Flag bit constants — @see lib/gvc/gvcjob.h
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
export const EMIT_SORTED = 1 << 0;
|
|
63
|
+
export const EMIT_COLORS = 1 << 1;
|
|
64
|
+
export const EMIT_CLUSTERS_LAST = 1 << 2;
|
|
65
|
+
export const EMIT_PREORDER = 1 << 3;
|
|
66
|
+
export const EMIT_EDGE_SORTED = 1 << 4;
|
|
67
|
+
export const GVDEVICE_DOES_PAGES = 1 << 5;
|
|
68
|
+
export const GVDEVICE_DOES_LAYERS = 1 << 6;
|
|
69
|
+
export const GVDEVICE_EVENTS = 1 << 7;
|
|
70
|
+
export const GVDEVICE_DOES_TRUECOLOR = 1 << 8;
|
|
71
|
+
export const GVDEVICE_BINARY_FORMAT = 1 << 9;
|
|
72
|
+
export const GVDEVICE_COMPRESSED_FORMAT = 1 << 10;
|
|
73
|
+
export const GVDEVICE_NO_WRITER = 1 << 11;
|
|
74
|
+
export const GVRENDER_Y_GOES_DOWN = 1 << 12;
|
|
75
|
+
export const GVRENDER_DOES_TRANSFORM = 1 << 13;
|
|
76
|
+
export const GVRENDER_DOES_LABELS = 1 << 15;
|
|
77
|
+
export const GVRENDER_DOES_MAPS = 1 << 16;
|
|
78
|
+
export const GVRENDER_DOES_MAP_RECTANGLE = 1 << 17;
|
|
79
|
+
export const GVRENDER_DOES_MAP_CIRCLE = 1 << 18;
|
|
80
|
+
export const GVRENDER_DOES_MAP_POLYGON = 1 << 19;
|
|
81
|
+
export const GVRENDER_DOES_MAP_ELLIPSE = 1 << 20;
|
|
82
|
+
export const GVRENDER_DOES_MAP_BSPLINE = 1 << 21;
|
|
83
|
+
export const GVRENDER_DOES_TOOLTIPS = 1 << 22;
|
|
84
|
+
export const GVRENDER_DOES_TARGETS = 1 << 23;
|
|
85
|
+
export const GVRENDER_DOES_Z = 1 << 24;
|
|
86
|
+
export const GVRENDER_NO_WHITE_BG = 1 << 25;
|
|
87
|
+
export const LAYOUT_NOT_REQUIRED = 1 << 26;
|
|
88
|
+
export const OUTPUT_NOT_REQUIRED = 1 << 27;
|
|
89
|
+
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// ObjState — @see lib/gvc/gvcjob.h:obj_state_s
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
|
|
94
|
+
/** TypeScript equivalent of obj_state_t. @see lib/gvc/gvcjob.h:obj_state_s */
|
|
95
|
+
export interface ObjState {
|
|
96
|
+
parent: ObjState | null;
|
|
97
|
+
type: ObjType;
|
|
98
|
+
graphObj: Graph | Node | Edge | null;
|
|
99
|
+
emitState: EmitState;
|
|
100
|
+
penColor: GVColor;
|
|
101
|
+
fillColor: GVColor;
|
|
102
|
+
stopColor: GVColor;
|
|
103
|
+
gradientAngle: number;
|
|
104
|
+
gradientFrac: number;
|
|
105
|
+
pen: PenType;
|
|
106
|
+
fill: FillType;
|
|
107
|
+
penWidth: number;
|
|
108
|
+
rawStyle: string[];
|
|
109
|
+
label: string | null;
|
|
110
|
+
xlabel: string | null;
|
|
111
|
+
tailLabel: string | null;
|
|
112
|
+
headLabel: string | null;
|
|
113
|
+
url: string | null;
|
|
114
|
+
id: string | null;
|
|
115
|
+
labelUrl: string | null;
|
|
116
|
+
tailUrl: string | null;
|
|
117
|
+
headUrl: string | null;
|
|
118
|
+
tooltip: string | null;
|
|
119
|
+
labelTooltip: string | null;
|
|
120
|
+
tailTooltip: string | null;
|
|
121
|
+
headTooltip: string | null;
|
|
122
|
+
target: string | null;
|
|
123
|
+
labelTarget: string | null;
|
|
124
|
+
tailTarget: string | null;
|
|
125
|
+
headTarget: string | null;
|
|
126
|
+
explicitTooltip: boolean;
|
|
127
|
+
explicitTailTooltip: boolean;
|
|
128
|
+
explicitHeadTooltip: boolean;
|
|
129
|
+
explicitLabelTooltip: boolean;
|
|
130
|
+
explicitTailTarget: boolean;
|
|
131
|
+
explicitHeadTarget: boolean;
|
|
132
|
+
explicitEdgeTarget: boolean;
|
|
133
|
+
explicitTailUrl: boolean;
|
|
134
|
+
explicitHeadUrl: boolean;
|
|
135
|
+
labelEdgeAligned: boolean;
|
|
136
|
+
urlMapShape: MapShape;
|
|
137
|
+
urlMapPts: Point[];
|
|
138
|
+
urlBsplineMapPts: Point[][];
|
|
139
|
+
tailEndMapPts: Point[];
|
|
140
|
+
headEndMapPts: Point[];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// createObjState — @see lib/common/emit.c:push_obj_state
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
|
|
147
|
+
/** Default paint fields for a new obj-state. @see lib/common/emit.c:push_obj_state */
|
|
148
|
+
function defaultObjPaint(): Pick<ObjState,
|
|
149
|
+
| 'penColor' | 'fillColor' | 'stopColor'
|
|
150
|
+
| 'gradientAngle' | 'gradientFrac'
|
|
151
|
+
| 'pen' | 'fill' | 'penWidth' | 'rawStyle'
|
|
152
|
+
> {
|
|
153
|
+
return {
|
|
154
|
+
penColor: { type: 'string', s: 'black' },
|
|
155
|
+
fillColor: { type: 'string', s: 'white' },
|
|
156
|
+
stopColor: { type: 'none' },
|
|
157
|
+
gradientAngle: 0, gradientFrac: 0,
|
|
158
|
+
pen: PenType.Solid, fill: FillType.None, penWidth: 1.0,
|
|
159
|
+
rawStyle: [],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Default URL/label string fields for a new obj-state. Null everywhere. */
|
|
164
|
+
function defaultObjStrings(): Pick<ObjState,
|
|
165
|
+
| 'label' | 'xlabel' | 'tailLabel' | 'headLabel'
|
|
166
|
+
| 'url' | 'id' | 'labelUrl' | 'tailUrl' | 'headUrl'
|
|
167
|
+
| 'tooltip' | 'labelTooltip' | 'tailTooltip' | 'headTooltip'
|
|
168
|
+
| 'target' | 'labelTarget' | 'tailTarget' | 'headTarget'
|
|
169
|
+
> {
|
|
170
|
+
return {
|
|
171
|
+
label: null, xlabel: null, tailLabel: null, headLabel: null,
|
|
172
|
+
url: null, id: null, labelUrl: null, tailUrl: null, headUrl: null,
|
|
173
|
+
tooltip: null, labelTooltip: null, tailTooltip: null, headTooltip: null,
|
|
174
|
+
target: null, labelTarget: null, tailTarget: null, headTarget: null,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** Default explicit-flag and map fields for a new obj-state. All false/empty. */
|
|
179
|
+
function defaultObjFlags(): Pick<ObjState,
|
|
180
|
+
| 'explicitTooltip' | 'explicitTailTooltip' | 'explicitHeadTooltip'
|
|
181
|
+
| 'explicitLabelTooltip' | 'explicitTailTarget' | 'explicitHeadTarget'
|
|
182
|
+
| 'explicitEdgeTarget' | 'explicitTailUrl' | 'explicitHeadUrl'
|
|
183
|
+
| 'labelEdgeAligned'
|
|
184
|
+
| 'urlMapShape' | 'urlMapPts' | 'urlBsplineMapPts'
|
|
185
|
+
| 'tailEndMapPts' | 'headEndMapPts'
|
|
186
|
+
> {
|
|
187
|
+
return {
|
|
188
|
+
explicitTooltip: false, explicitTailTooltip: false,
|
|
189
|
+
explicitHeadTooltip: false, explicitLabelTooltip: false,
|
|
190
|
+
explicitTailTarget: false, explicitHeadTarget: false,
|
|
191
|
+
explicitEdgeTarget: false, explicitTailUrl: false,
|
|
192
|
+
explicitHeadUrl: false, labelEdgeAligned: false,
|
|
193
|
+
urlMapShape: MapShape.Rectangle,
|
|
194
|
+
urlMapPts: [], urlBsplineMapPts: [],
|
|
195
|
+
tailEndMapPts: [], headEndMapPts: [],
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Allocate a fresh default ObjState matching C's push_obj_state (no parent).
|
|
201
|
+
* pen=SOLID, fill=NONE, penWidth=1.0; penColor black, fillColor white so
|
|
202
|
+
* emitStyle emits "fill=none stroke=black" for unstyled objects (byte-stable).
|
|
203
|
+
* Batch-2 callers overwrite type/graphObj/emitState per object.
|
|
204
|
+
*
|
|
205
|
+
* NOTE: fresh object per call; do NOT pool prematurely — profile first.
|
|
206
|
+
* @see lib/common/emit.c:push_obj_state
|
|
207
|
+
*/
|
|
208
|
+
export function createObjState(type: ObjType = ObjType.Node): ObjState {
|
|
209
|
+
return {
|
|
210
|
+
parent: null, type, graphObj: null, emitState: EmitState.NDraw,
|
|
211
|
+
...defaultObjPaint(),
|
|
212
|
+
...defaultObjStrings(),
|
|
213
|
+
...defaultObjFlags(),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// printDouble helpers — @see lib/gvc/gvdevice.c:gv_trim_zeros
|
|
219
|
+
// ---------------------------------------------------------------------------
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Format to 2 decimal places, rounding exact ties half-to-even as C's
|
|
223
|
+
* snprintf("%.2f") does under FE_TONEAREST; Number.toFixed rounds them
|
|
224
|
+
* half-away-from-zero instead. Delegates to the general-purpose
|
|
225
|
+
* {@link printfFixed} (exact-decimal BigInt rounding), which subsumes the
|
|
226
|
+
* `%.Nf` case for arbitrary `decimals`, not just 2.
|
|
227
|
+
*
|
|
228
|
+
* @see lib/gvc/gvdevice.c:gvprintdouble
|
|
229
|
+
*/
|
|
230
|
+
export function toFixed2HalfEven(n: number): string {
|
|
231
|
+
return printfFixed(n, 2);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Mirrors gv_trim_zeros: given a "%.02f" result, return the trimmed string.
|
|
236
|
+
* Assumes input has exactly 2 decimal places.
|
|
237
|
+
*
|
|
238
|
+
* @see lib/gvc/gvdevice.c:gv_trim_zeros
|
|
239
|
+
*/
|
|
240
|
+
function trimZeros(buf: string): string {
|
|
241
|
+
const dotIdx = buf.indexOf('.');
|
|
242
|
+
if (dotIdx < 0) {
|
|
243
|
+
return buf;
|
|
244
|
+
}
|
|
245
|
+
// buf has exactly 2 decimal digits after the dot (from %.02f)
|
|
246
|
+
const d1 = buf[dotIdx + 1];
|
|
247
|
+
const d2 = buf[dotIdx + 2];
|
|
248
|
+
if (d2 === '0') {
|
|
249
|
+
if (d1 === '0') {
|
|
250
|
+
return buf.slice(0, dotIdx);
|
|
251
|
+
}
|
|
252
|
+
return buf.slice(0, dotIdx + 2);
|
|
253
|
+
}
|
|
254
|
+
return buf;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// ---------------------------------------------------------------------------
|
|
258
|
+
// RenderJob — @see lib/gvc/gvcjob.h:GVJ_s
|
|
259
|
+
// ---------------------------------------------------------------------------
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Render job context.
|
|
263
|
+
*
|
|
264
|
+
* Ports GVJ_s from lib/gvc/gvcjob.h, adapted for the TypeScript
|
|
265
|
+
* string-accumulator output model (no FILE* / output_data).
|
|
266
|
+
*
|
|
267
|
+
* @see lib/gvc/gvcjob.h:GVJ_s
|
|
268
|
+
*/
|
|
269
|
+
export class RenderJob {
|
|
270
|
+
readonly output: string[] = [];
|
|
271
|
+
readonly measurer: TextMeasurer;
|
|
272
|
+
readonly format: string;
|
|
273
|
+
|
|
274
|
+
bb: Box = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
275
|
+
pad: Point = { x: 0, y: 0 };
|
|
276
|
+
/** Graph-level `margin=` (init_job_margin); page-pagination margin, distinct
|
|
277
|
+
* from node/cluster label margin. @see lib/common/emit.c:3309-3331 */
|
|
278
|
+
margin: Point = { x: 0, y: 0 };
|
|
279
|
+
zoom: number = 1.0;
|
|
280
|
+
dpi: Point = { x: 96, y: 96 };
|
|
281
|
+
rotation: number = 0;
|
|
282
|
+
scale: Point = { x: 1, y: 1 };
|
|
283
|
+
translation: Point = { x: 0, y: 0 };
|
|
284
|
+
devscale: Point = { x: 1, y: 1 };
|
|
285
|
+
flags: number = 0;
|
|
286
|
+
numLayers: number = 1;
|
|
287
|
+
layerNum: number = 1;
|
|
288
|
+
/** Layer names indexed 1..numLayers (set when rendering a layered graph). */
|
|
289
|
+
layerIDs: (string | null)[] = [];
|
|
290
|
+
nodeId: number = 0;
|
|
291
|
+
edgeId: number = 0;
|
|
292
|
+
/** Monotonic counter for linear gradient ids per render.
|
|
293
|
+
* @see AD1; plugin/core/gvrender_core_svg.c:572 (static gradId) */
|
|
294
|
+
linearGradId: number = 0;
|
|
295
|
+
/** Monotonic counter for radial gradient ids per render.
|
|
296
|
+
* @see AD1; plugin/core/gvrender_core_svg.c:608 (static rgradId) */
|
|
297
|
+
radialGradId: number = 0;
|
|
298
|
+
/** Whether the graph being rendered is directed (edge titles use -> vs --). */
|
|
299
|
+
directed: boolean = true;
|
|
300
|
+
/** Root graph's `id` attribute (GD_drawing(root)->id), '' if unset. Used as
|
|
301
|
+
* the `<gid>_` prefix for non-root object ids. @see lib/common/emit.c:getObjId */
|
|
302
|
+
drawingId: string = '';
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Resolve an object's SVG id like C's getObjId (steps after layerPagePrefix):
|
|
306
|
+
* a non-empty DOT `id` attr wins verbatim; otherwise non-root objects are
|
|
307
|
+
* prefixed with `<drawingId>_` when the root graph has an id.
|
|
308
|
+
* @see lib/common/emit.c:getObjId:209
|
|
309
|
+
*/
|
|
310
|
+
objId(idAttr: string | undefined, defaultId: string, isRoot = false): string {
|
|
311
|
+
if (idAttr !== undefined && idAttr.length > 0) return idAttr;
|
|
312
|
+
if (!isRoot && this.drawingId.length > 0) return this.drawingId + '_' + defaultId;
|
|
313
|
+
return defaultId;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/** Active renderer plugin; set by render() before walkNodes. */
|
|
317
|
+
renderer?: RendererPlugin;
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* When set, overrides the label emit-state that {@link gvrenderTextspan} and
|
|
321
|
+
* withLabelEmitState would otherwise derive from the object type. Used to route
|
|
322
|
+
* an edge's HEAD/TAIL label into EMIT_HLABEL/EMIT_TLABEL (→ `_hldraw_`/
|
|
323
|
+
* `_tldraw_`) rather than the default EMIT_ELABEL. Null outside that window.
|
|
324
|
+
* @see lib/common/emit.c:emit_edge (head/tail label emit_state)
|
|
325
|
+
*/
|
|
326
|
+
labelEmitOverride: EmitState | null = null;
|
|
327
|
+
|
|
328
|
+
private readonly objStack: ObjState[] = [];
|
|
329
|
+
|
|
330
|
+
constructor(format: string, measurer: TextMeasurer) {
|
|
331
|
+
this.format = format;
|
|
332
|
+
this.measurer = measurer;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/** Layer id prefix for layers after the first (C layerPagePrefix).
|
|
336
|
+
* @see lib/common/emit.c:197 */
|
|
337
|
+
idLayerPrefix(): string {
|
|
338
|
+
return this.layerNum > 1 ? this.layerIDs[this.layerNum] + '_' : '';
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/** Layer id suffix appended to node/edge group ids (svg_begin_node idx).
|
|
342
|
+
* @see plugin/core/gvrender_core_svg.c svg_begin_node/edge */
|
|
343
|
+
idLayerSuffix(): string {
|
|
344
|
+
return this.layerNum > 1 ? '_' + this.layerIDs[this.layerNum] : '';
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/** Top of the object-state stack, or null if empty. */
|
|
348
|
+
get obj(): ObjState | null {
|
|
349
|
+
const len = this.objStack.length;
|
|
350
|
+
return len > 0 ? (this.objStack[len - 1] ?? null) : null;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/** Push an object state onto the stack. */
|
|
354
|
+
pushObj(state: ObjState): void {
|
|
355
|
+
this.objStack.push(state);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Pop the top object state from the stack.
|
|
360
|
+
* @throws Error if the stack is empty.
|
|
361
|
+
*/
|
|
362
|
+
popObj(): void {
|
|
363
|
+
if (this.objStack.length === 0) {
|
|
364
|
+
throw new Error('RenderJob.popObj: stack is empty');
|
|
365
|
+
}
|
|
366
|
+
this.objStack.pop();
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/** Append a string to the output buffer. */
|
|
370
|
+
write(s: string): void {
|
|
371
|
+
this.output.push(s);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Format a number and write it.
|
|
376
|
+
* Replicates gvprintdouble from lib/gvc/gvdevice.c exactly:
|
|
377
|
+
* - Values in (-0.005, 0.005) emit "0" (suppresses -0).
|
|
378
|
+
* - Otherwise: format to 2 dp, strip trailing zeros / decimal point.
|
|
379
|
+
*
|
|
380
|
+
* @see lib/gvc/gvdevice.c:gvprintdouble
|
|
381
|
+
*/
|
|
382
|
+
printDouble(n: number): void {
|
|
383
|
+
if (n > -0.005 && n < 0.005) {
|
|
384
|
+
this.output.push('0');
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const buf = toFixed2HalfEven(n);
|
|
388
|
+
this.output.push(trimZeros(buf));
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Write a point as two space-separated numbers.
|
|
393
|
+
*
|
|
394
|
+
* @see lib/gvc/gvdevice.c:gvprintpointf
|
|
395
|
+
*/
|
|
396
|
+
printPoint(p: Point): void {
|
|
397
|
+
this.printDouble(p.x);
|
|
398
|
+
this.output.push(' ');
|
|
399
|
+
this.printDouble(p.y);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Text layout selection and measurement.
|
|
5
|
+
*
|
|
6
|
+
* Ports gvtextlayout_select and gvtextlayout from lib/gvc/gvtextlayout.c,
|
|
7
|
+
* simplified for the TypeScript model where the text-layout engine is always
|
|
8
|
+
* the context's registered TextMeasurer (no dynamic plugin loading).
|
|
9
|
+
*
|
|
10
|
+
* @see lib/gvc/gvtextlayout.c:gvtextlayout_select
|
|
11
|
+
* @see lib/gvc/gvtextlayout.c:gvtextlayout
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { GvcContext } from './context.js';
|
|
15
|
+
import type { TextMeasurer } from '../common/textmeasure.js';
|
|
16
|
+
import type { TextSpan } from '../common/emit-types.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Return the text measurer registered on ctx.
|
|
20
|
+
*
|
|
21
|
+
* Replaces gvtextlayout_select / plugin load with direct access to the
|
|
22
|
+
* context's measurer, per AD-2 (static registration, no libltdl).
|
|
23
|
+
*
|
|
24
|
+
* @see lib/gvc/gvtextlayout.c:gvtextlayout_select
|
|
25
|
+
*/
|
|
26
|
+
export function selectTextLayout(ctx: GvcContext): TextMeasurer {
|
|
27
|
+
return ctx.textMeasurer;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Measure a text span and write the result into span.size.
|
|
32
|
+
*
|
|
33
|
+
* Mirrors gvtextlayout: calls the engine's textlayout method to populate
|
|
34
|
+
* the size field on the span. Falls back to 'Times-Roman' / 14pt when
|
|
35
|
+
* fontName or fontSize are unspecified.
|
|
36
|
+
*
|
|
37
|
+
* @see lib/gvc/gvtextlayout.c:gvtextlayout
|
|
38
|
+
*/
|
|
39
|
+
export function measure(span: TextSpan, ctx: GvcContext): void {
|
|
40
|
+
const fontName = span.fontName ?? 'Times-Roman';
|
|
41
|
+
const fontSize = span.fontSize > 0 ? span.fontSize : 14;
|
|
42
|
+
const size = ctx.textMeasurer.measure(span.str, fontName, fontSize);
|
|
43
|
+
span.size = { x: size.w, y: size.h };
|
|
44
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
//
|
|
3
|
+
// gvrender_textspan: the single choke point through which every label text
|
|
4
|
+
// span is emitted. Mirrors lib/gvc/gvrender.c:gvrender_textspan — a span is
|
|
5
|
+
// emitted only when its string is non-empty and (unless there is no object)
|
|
6
|
+
// the object's pen is not PEN_NONE. Blank lines (zero-length spans, e.g. the
|
|
7
|
+
// leading "\n\n" of a "\n\nDecl" record field) and PEN_NONE objects are
|
|
8
|
+
// skipped; callers still advance their text baseline unconditionally so blank
|
|
9
|
+
// lines reserve vertical space.
|
|
10
|
+
|
|
11
|
+
import type { Point } from '../model/geom.js';
|
|
12
|
+
import type { TextSpan } from '../common/emit-types.js';
|
|
13
|
+
import type { RendererPlugin } from './context.js';
|
|
14
|
+
import { PenType } from './context.js';
|
|
15
|
+
import type { RenderJob } from './job.js';
|
|
16
|
+
import { EmitState, ObjType } from './job.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The label emit-state for the current object type — the `EMIT_*LABEL` value C
|
|
20
|
+
* passes to `emit_label(job, EMIT_xLABEL, lp)` at each call site (a node label
|
|
21
|
+
* is EMIT_NLABEL, a graph label EMIT_GLABEL, etc.). Every span reaching
|
|
22
|
+
* gvrenderTextspan IS a label, so its emit-state is always the label variant of
|
|
23
|
+
* the enclosing object. Centralizing it here (rather than threading the value
|
|
24
|
+
* through each caller as C does) is an SVG-safe adaptation: the SVG renderer
|
|
25
|
+
* ignores emit_state, while the xdot renderer routes each op into the object's
|
|
26
|
+
* label xbuf by exactly this value. @see lib/common/labels.c:emit_label
|
|
27
|
+
*/
|
|
28
|
+
export function labelEmitState(type: ObjType): EmitState {
|
|
29
|
+
switch (type) {
|
|
30
|
+
case ObjType.RootGraph: return EmitState.GLabel;
|
|
31
|
+
case ObjType.Cluster: return EmitState.CLabel;
|
|
32
|
+
case ObjType.Edge: return EmitState.ELabel;
|
|
33
|
+
default: return EmitState.NLabel;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** The label emit-state for the current object, honoring a job-level override
|
|
38
|
+
* (set for an edge's head/tail label → EMIT_HLABEL/EMIT_TLABEL). */
|
|
39
|
+
function currentLabelEmitState(job: RenderJob, type: ObjType): EmitState {
|
|
40
|
+
return job.labelEmitOverride ?? labelEmitState(type);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Run `fn` with the object's label emit-state active (restored afterward) —
|
|
45
|
+
* the emit_label window that routes EVERY draw op of a label (HTML-table
|
|
46
|
+
* borders/fills AND text spans) into the object's LABEL xbuf, not its DRAW
|
|
47
|
+
* xbuf. Needed for HTML labels, whose box/fill polygons reach the renderer via
|
|
48
|
+
* gvrender_polygon (not gvrenderTextspan). SVG-safe: SVG ignores emit_state.
|
|
49
|
+
* @see lib/common/labels.c:224/274 emit_label (emit_state save/set/restore)
|
|
50
|
+
*/
|
|
51
|
+
export function withLabelEmitState(job: RenderJob, fn: () => void): void {
|
|
52
|
+
const obj = job.obj;
|
|
53
|
+
if (obj === null) { fn(); return; }
|
|
54
|
+
const saved = obj.emitState;
|
|
55
|
+
obj.emitState = currentLabelEmitState(job, obj.type);
|
|
56
|
+
try { fn(); } finally { obj.emitState = saved; }
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Whether a label span should be emitted: non-empty string, and (unless no
|
|
61
|
+
* obj) a visible pen.
|
|
62
|
+
* @see lib/gvc/gvrender.c:419 gvrender_textspan
|
|
63
|
+
* if (span->str && span->str[0] && (!job->obj || job->obj->pen != PEN_NONE))
|
|
64
|
+
*/
|
|
65
|
+
export function spanIsVisible(span: TextSpan, job: RenderJob): boolean {
|
|
66
|
+
if (span.str.length === 0) return false;
|
|
67
|
+
return job.obj === null || job.obj.pen !== PenType.None;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Emit one text span through the renderer, applying C's visibility guard.
|
|
72
|
+
* All label emitters (node/record labels, edge/graph labels, cluster labels,
|
|
73
|
+
* HTML-table text runs) route through here, exactly as C routes every
|
|
74
|
+
* emission through gvrender_textspan.
|
|
75
|
+
* @see lib/gvc/gvrender.c:414 gvrender_textspan
|
|
76
|
+
*/
|
|
77
|
+
export function gvrenderTextspan(
|
|
78
|
+
renderer: RendererPlugin,
|
|
79
|
+
pos: Point,
|
|
80
|
+
span: TextSpan,
|
|
81
|
+
job: RenderJob,
|
|
82
|
+
): void {
|
|
83
|
+
if (!spanIsVisible(span, job)) return;
|
|
84
|
+
// Route the span into the object's LABEL emit-state, restoring afterward —
|
|
85
|
+
// mirrors emit_label's save/set/restore of obj->emit_state around a label.
|
|
86
|
+
// No-op for SVG (ignores emit_state); routes xdot label ops to the _ldraw_
|
|
87
|
+
// buffer instead of the _draw_ buffer. @see lib/common/labels.c:224/274
|
|
88
|
+
const obj = job.obj;
|
|
89
|
+
if (obj === null) {
|
|
90
|
+
renderer.textspan(pos, span, job);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const saved = obj.emitState;
|
|
94
|
+
obj.emitState = currentLabelEmitState(job, obj.type);
|
|
95
|
+
try {
|
|
96
|
+
renderer.textspan(pos, span, job);
|
|
97
|
+
} finally {
|
|
98
|
+
obj.emitState = saved;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EPL-2.0
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* User-shape (image) size resolution for HTML <IMG> labels.
|
|
5
|
+
*
|
|
6
|
+
* C resolves image dimensions through a process-global dictionary
|
|
7
|
+
* (gvusershape.c ImageDict) populated from the filesystem — browser-
|
|
8
|
+
* hostile. Per AD3, the port exposes a caller-injected ImageSizer in
|
|
9
|
+
* the same global-registry position: callers register a sizer before
|
|
10
|
+
* rendering; absent or unresolvable sources reproduce C's
|
|
11
|
+
* missing-image behavior (warning + zero size).
|
|
12
|
+
*
|
|
13
|
+
* @see lib/gvc/gvusershape.c (ImageDict, gvusershape_find/size)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { ImageSizer } from '../common/htmltable-types.js';
|
|
17
|
+
|
|
18
|
+
export type { ImageSizer } from '../common/htmltable-types.js';
|
|
19
|
+
|
|
20
|
+
let activeSizer: ImageSizer | null = null;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Register (or clear, with null) the global image sizer consulted by
|
|
24
|
+
* HTML <IMG> sizing. Mirrors gvusershape's process-global dictionary.
|
|
25
|
+
*/
|
|
26
|
+
export function setImageSizer(sizer: ImageSizer | null): void {
|
|
27
|
+
activeSizer = sizer;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Resolve an image source via the registered sizer; null if unresolved. */
|
|
31
|
+
export function findImageSize(src: string): { w: number; h: number } | null {
|
|
32
|
+
return activeSizer !== null ? activeSizer(src) : null;
|
|
33
|
+
}
|