A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.
Here are some notes for low-priority things that may be good to be addressed at some point in the future:
Axis
[ ] The code for determining the Axis scale/ticks/range should be cleaned up. At the moment there are many different overloads and it is unclear when to use which.
[ ] Fix OscilloscopeAxis zero offset
[ ] The tick generation should be easier to extend. Setting the ticks should not require creating a new axis.
[ ] The tick generator should generate decomposed doubles w/o rounding errors and explicitly set precision. This would make the string conversion easier and fix some issues with rounding errors around zero.
[ ] The grid should be drawn within the Axes. That'd make it easier to support grids for multiple axes with different colors
[ ] Change autoRanging / growRanging / user to be an enum rather than two mutually exclusive booleans
[ ] make min/max/tickUnit properties ReadOnly to match scale and length. Alternatively, make them bindable and throw an error if the properties get bound while auto-ranging is enabled
Renderer
[ ] Replace the axisList inside Renderers with dedicated setXAxis() / setYAxis()
DataSet
[ ] Provide a batch export (e.g., DataSet::export(DataExport)) so that data can be exported more efficiently (memcpy) than looping over getX(i) / getY(i). The result would be something like a more generic version of the CachedDataPoints in the ErrorDataSetRenderer.
Chart
[ ] Make colors looked-up colors and natively support AtlantaFX and Modena-style themes
[ ] Remove deprecated Chart::getAllDataSets and Chart::getDataSets? Maybe also remove the default renderer?
Sampler
[ ] Maybe migrate from the FXSampler to the AtlantaFX sampler?
[ ] Add examples for an ImageRenderer and an OpenGL line renderer
Here are some notes for low-priority things that may be good to be addressed at some point in the future:
Axis
Renderer
DataSet
DataSet::export(DataExport)
) so that data can be exported more efficiently (memcpy) than looping overgetX(i) / getY(i)
. The result would be something like a more generic version of theCachedDataPoints
in theErrorDataSetRenderer
.Chart
Chart::getAllDataSets
andChart::getDataSets
? Maybe also remove the default renderer?Sampler