We are already walking through all the frames so we can guess this better
than what is in the capture file. This helps ensure that loading older
captures still has the end clamped to the last event we'll see.
The goal here is to be able to connect data series such as
SysprofTimeSeries or SysprofXYSeries to various chart layers. Those
chart layers get stacked in a SysprofChart.
Some glue code will be necessary to go from frames into data series but
we can experiment with how to automate that later on.
This is meant to contain information about XY coordinates that we can
store in a normalized form. That allows them to be reused across different
scales without regenerating them.
It also includes a back-pointer to the model index so that we can pull out
the real object when necessary for drawing.
We still don't want to fully rely on the CSS machinery because that would
require widgets, which is far too heavy for the number of render nodes we
need to regularly draw.
We don't need to render text in most cases. Additionally, that requires
inflating a GObject to extract from the capture.
Instead, try to determine if we will even want to render the text before
causing any of that work to happen.
Also setup the pixel range for the layout so it may ellipsize as necessary.
This allows us to pre-calculate the values and re-use them, while also
allowing for us to avoid inflating GObject's for marks unless it becomes
necessary to access additional information.
This includes a helper to generate timeseries items such as marks which
have a point in time and optionally a duration.
The TimeSpan has also been beefed up to gain a few operations that are
useful for implementing that.
That way we can use it for the document itself, and have it update the
timespan of the recording in case it didn't get updated due to ctrl+c or
something prematurely stopping.
This is just playing around to get things to render. There is much to do
to ensure that we interact with this well (and cache some values for
faster generation on allocation changes).