Make a static value a static field.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Give up creating new frames in the 3D viewer.

There is a problem when you try to manually add a spot in an empty frame, with
the 3D viewer on.  We normally create a ContentInstant per frame. But since it
cannot be empty, we skip creating one for empty frames. But then, you cannot
add a new ContentInstant to the 3D viewer spot Content once it is there.

We then just give up. I dig really hard on an elegant way to add a new
ContentInstant for a missing frame, but found no satisfying way. There is no
good way to add spots to an empty frame. The way I found is very similar to
closing the 3D viewer and re-opening it, therefore I let the user do it.

So because of this, the SpotDisplayer3D is only a partial ModelListener.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Code style changes.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
More zoom levels in TrackScheme.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Fix TrackScheme decoration misalignment bug.

Before this commit, the vertical lanes of each track displayed in
TrackScheme were not properly aligned with their track when zooming out.
This is now fixed, thanks to working around cumulative rounding errors.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Add new dimension: rate.

Rate is in # / (units of time)
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Spots can now be colored by features of the track they belong to.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>