diff options
Diffstat (limited to 'src/layout.js')
| -rw-r--r-- | src/layout.js | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/layout.js b/src/layout.js deleted file mode 100644 index c9c2a4d..0000000 --- a/src/layout.js +++ /dev/null @@ -1,48 +0,0 @@ -import Viz from './viz.es'; - -const toNumber = (i) => Number(i); -const gv = new Viz({ workerURL: 'lib/lite.render.js' }); - -export default class Layout { - constructor() { - this.src = 'digraph { node [shape="rectangle"];\n'; - } - - addNode(id, width, height) { - this.src += ` "${id}" [fixedsize=true; width=${width / 72}; height=${height / 72}];\n`; - } - - addLink(from, to) { - this.src += ` "${from}" -> "${to}";\n`; - } - - async render() { - this.src += '}'; - - const info = await gv.renderJSONObject(this.src, { format: 'json0' }); - info.objects ||= []; - info.edges ||= []; - const [width, height] = info.bb.split(',').map(toNumber).slice(2); - - const positions = {}; - for (const object of info.objects) { - const [x, y] = object.pos.split(',').map(toNumber); - positions[object.name] = [ x, height - y ]; - } - - const links = info.edges.map((edge) => { - const pos = edge.pos.slice(2); - return pos.split(' ').map(p => { - const [x, y] = p.split(','); - return [toNumber(x), height - toNumber(y)]; - }); - - }); - - return { - width, height, - positions, - links, - }; - } -} |
