JonkerVolgenant WIP. A bare skeleton.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Remove useless old track splitter.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
WIP: an algorithm that splits a track graph in contigous branches.

Deal with exotic cases
- track starts by branching
- track ends by fusion
- track has a gap after branching
- track has a gap before fusion
- complex points
- and of course normal fusion, branching and gaps.

Unhandled use cases for now:
- track merges then has a gap
- track has a gap then branches

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
TrackSplitter: correctly handles gap before split.

Now I have to adpat this to the gap after merge case, which right now
generates a lonely spot.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
TrackSplitter now handles properly fusions followed by gaps.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
TrackSplitter also builds the list of links it cuts.

So that you can use it to rebuild the track from the branches and the
links.
While at it: handle an extra special case where complex points also
involve gaps.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Polish TrackSplitter.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Rename an reengineer the track splitter.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Re-engineering the track splitter based on JUnit tests, still not ok.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
A track splitter that works, but still not optimal.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Finally a track splitter that works.

It took me ages to get there. Until I understood it makes no sense to do
it by hand. Trust the graph library we have to do it!
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Fix typo in class names.

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

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Convex branch decomposition: add a flag to forbid middle links.

So as to comply to Icy track format.
Also changed the name to something more clear.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Convex branch decomposition: more tests for the non middle links case.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
ICYTrackFormatWriter: fix the embryo.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
The ICY track exporter compiles. But it does not work.

It makes ICY crash upon importing...
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
A wroking version of the Icy exporter and its TrackMate action.

I am still waiting on Fabrice feedback, though.
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>
WIP: Manual color selection for spots and edges.

The logic to store and assign a color to a selection of edges and spot
is there. It exploits a SpotFeatureAnalyzerFactory and an EdgeAnalyzer
that declare a single feature and attribute it a default double value
when called.

This double value is casted to an int, which is used to get the RGB of a
color.

Some actions in the popup menu of TrackScheme allows to modify manually
this feature through a JColorChooser dialog.

When the manual feature is selected in the ColorByFeatureGuiPanel, some
special actions are taken: the color generators are not per feature per
se, but two new color generator that retrieve the double value stored
for the manual color, cast it to int, and return the matching color.

TODO:
- Have TrackScheme shows the manual spot color when selecting the manual
  edge color (or not, we could live with just the manual edge color
  here)
- Check that the manual color value is saved and restored to./from XML.

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