forresto / dataflow-prototyping

prototypes for making meemoo + dataflow + noflo
https://forresto.github.io/dataflow-prototyping/react/
52 stars 6 forks source link

testing react.js with svg graph rendering #2

Open forresto opened 10 years ago

forresto commented 10 years ago

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

forresto commented 10 years ago

wheel zoom react-svg-zui

forresto commented 10 years ago

zui prototyping

svg-icon-zui

subtleGradient commented 10 years ago

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

forresto commented 10 years ago

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.)

subtleGradient commented 10 years ago

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

sebmarkbage commented 10 years ago

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 commented 10 years ago

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

subtleGradient commented 10 years ago

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

sebmarkbage commented 10 years ago

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.

forresto commented 10 years ago

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" notifications@github.com 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 .