In support of #420 (and the general effort towards having sanely sized PRs for others to review :joy:,) this introduces a "middleware" layer for our curve rendering graphics engine.
The main idea here is to formalize machinery for conducting post numpy.array (normally read from ShmArray buffers), pre graphics-QPainterPath formatting and incremental update, the main purpose of which is to speed up curve rendering cycles on real-time updated data flows.
The main abstractions to review include:
the new piker.ui._pathops.IncrementalFormatter type hierarchy from ab1f15506 which introduces a the incremental update subsystem as mentioned above and which is primarily used from our ui._flow.Renderer layer: the subsys which does the work of transforming shm buffer data to the final QPainterPath graphics objects expected by Qt.
cleaning of our curve graphics types (BarItems and Curve) to remove a bunch of old cruft-code and re-implement .boundingRect() methods to be sample step agnostic by relying on geometry calcs alone.
Further details about the (rather large) set of changes can be seen in commit msgs.
In support of #420 (and the general effort towards having sanely sized PRs for others to review :joy:,) this introduces a "middleware" layer for our curve rendering graphics engine.
The main idea here is to formalize machinery for conducting post
numpy.array
(normally read fromShmArray
buffers), pre graphics-QPainterPath
formatting and incremental update, the main purpose of which is to speed up curve rendering cycles on real-time updated data flows.The main abstractions to review include:
piker.ui._pathops.IncrementalFormatter
type hierarchy from ab1f15506 which introduces a the incremental update subsystem as mentioned above and which is primarily used from ourui._flow.Renderer
layer: the subsys which does the work of transforming shm buffer data to the finalQPainterPath
graphics objects expected byQt
.BarItems
andCurve
) to remove a bunch of old cruft-code and re-implement.boundingRect()
methods to be sample step agnostic by relying on geometry calcs alone.Further details about the (rather large) set of changes can be seen in commit msgs.