Add support for 'streaming mode' which draws animated graphs from stdin #105
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Essentially, it treats stdin as a stream of null-delimited frames. Each time a complete frame is read, the graph is updated. The effect is that changes to the graph are "animated". This also avoids touching the disk when the graph output is dynamically generated.
To make the effect less visually disorienting, I modified
set_dotcode
and friends to take an optionalpreserve_viewport
parameter. This keeps the current scroll position and zoom ratio when the graph is updated. If the new frame is "sufficiently similar" to the old frame, the effect is quite seamless.I added a test script
tests/streaming.sh
which demonstrates usage.If there's interest, perhaps some scheme could be devised to help "pin" the "origin" of the image to a particular feature (node id, edge, subgraph), which might help keep you oriented across large structural changes to the graph, at the expense of some extra complexity.
A further enhancement would be to save up to the last
n
frames, and add some key bindings to allow seeking arbitrarily through the history.