dataflow-prototyping icon indicating copy to clipboard operation
dataflow-prototyping copied to clipboard

testing react.js with svg graph rendering

Open forresto opened this issue 11 years ago • 10 comments

http://forresto.github.io/prototyping/react-svg.html

forresto avatar Jan 03 '14 08:01 forresto

wheel zoom react-svg-zui

forresto avatar Jan 03 '14 16:01 forresto

zui prototyping

svg-icon-zui

forresto avatar Jan 08 '14 07:01 forresto

Consider using react-ART? https://github.com/facebook/react-art

subtleGradient avatar Jan 08 '14 19:01 subtleGradient

Just prototyping with the one new thing + vanilla svg. But I'm interested to see if ART+canvas can speed stuff up to 60fps. From working with vanilla canvas 2d, I imagine that the number of draw commands would be fine. Seems like React's functional structure will make it easy to switch.

The big constraint for us is clicking on overlapping curves, and SVG makes that easy. Somebody said art might do that level of hit testing... @subtleGradient know if that's right?

(SVG Font Awesome looks pretty good in there too, and css is easy... but we'll go canvas if it's worth it.)

forresto avatar Jan 08 '14 19:01 forresto

ART can render to SVG, canvas or VML. I'm not sure about the hit testing. @sebmarkbage How's ART for hit-testing?

subtleGradient avatar Jan 08 '14 19:01 subtleGradient

ART does hit testing the same way SVG does. Uses isPointInPath.

Also working on a different hit testing that can trace nearest path without actually hitting it.

sebmarkbage avatar Jan 08 '14 21:01 sebmarkbage

Oh actually, we may not handle hit testing on strokes. Should fix that.

sebmarkbage avatar Jan 08 '14 21:01 sebmarkbage

You'd probably want to expand the stroke's hit area far larger than its visible pixels.

subtleGradient avatar Jan 09 '14 03:01 subtleGradient

People tend to do that by doing a fat invisible stroke. That's a naive solution though because when you have overlapping lines, the nearest line to your pointer may not be the top invisible one. Which gives a bad experience. That's why we don't use this technique and don't have a strong need to support hit testing on strokes.

Instead, I want to release the hit testing plugin for React that tracks the nearest line rather than an invisible hit area. That's a much better solution.

It works like this http://bl.ocks.org/mbostock/8027637 but uses a more efficient algorithm for common use cases.

sebmarkbage avatar Jan 09 '14 03:01 sebmarkbage

We already do something like that with our svg edges, and it works well for our case. On Jan 9, 2014 5:45 AM, "Thomas Aylott" [email protected] wrote:

You'd probably want to expand the stroke's hit area far larger than its visible pixels.

— Reply to this email directly or view it on GitHubhttps://github.com/forresto/prototyping/issues/2#issuecomment-31900520 .

forresto avatar Jan 09 '14 04:01 forresto