From 9e87d5a6bb6b8f8b11540406284e59f21953756a Mon Sep 17 00:00:00 2001 From: Stephan Saalfeld Date: Tue, 17 Aug 2010 00:12:39 +0200 Subject: [PATCH] Fixed bug 202 http://pacific.mpi-cbg.de/cgi-bin/bugzilla/show_bug.cgi?id=202 --- ini/trakem2/display/Display.java | 2 +- mpicbg/trakem2/align/AlignLayersTask.java | 36 ++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/ini/trakem2/display/Display.java b/ini/trakem2/display/Display.java index 63185da1..8977bd59 100644 --- a/ini/trakem2/display/Display.java +++ b/ini/trakem2/display/Display.java @@ -3803,7 +3803,7 @@ public final class Display extends DBObject implements ActionListener, IJEventLi } else if (command.equals("Apply transform propagating to last layer")) { if (mode.getClass() == AffineTransformMode.class || mode.getClass() == NonLinearTransformMode.class) { final LayerSet ls = getLayerSet(); - final HashSet subset = new HashSet(ls.getLayers(ls.indexOf(Display.this.layer)+1, ls.size())); // +1 to exclude current layer + final HashSet subset = new HashSet(ls.getLayers(ls.indexOf(Display.this.layer)+1, ls.size()-1)); // +1 to exclude current layer if (mode.getClass() == AffineTransformMode.class) ((AffineTransformMode)mode).applyAndPropagate(subset); else if (mode.getClass() == NonLinearTransformMode.class) ((NonLinearTransformMode)mode).apply(subset); setMode(new DefaultMode(Display.this)); diff --git a/mpicbg/trakem2/align/AlignLayersTask.java b/mpicbg/trakem2/align/AlignLayersTask.java index 7af0667c..6c7d8f37 100644 --- a/mpicbg/trakem2/align/AlignLayersTask.java +++ b/mpicbg/trakem2/align/AlignLayersTask.java @@ -23,6 +23,7 @@ import ij.process.ImageProcessor; import ini.trakem2.display.Display; import ini.trakem2.display.Displayable; import ini.trakem2.display.Layer; +import ini.trakem2.display.LayerSet; import ini.trakem2.display.Patch; import ini.trakem2.persistence.Loader; import ini.trakem2.utils.Bureaucrat; @@ -138,13 +139,7 @@ final public class AlignLayersTask if (index < cstart.getSelectedIndex()) cstart.select(index); if (index < cref.getSelectedIndex()) cref.select(index); } - }); - - Align.param.addFields( gd ); - gd.addCheckbox( "use bUnwarpJ (non-linear cubic B-Splines)", useBUnwarpJ ); - - gd.addMessage( "Miscellaneous:" ); - gd.addCheckbox( "propagate after last transform", propagateTransform ); + }); gd.showDialog(); if ( gd.wasCanceled() ) return; @@ -152,11 +147,22 @@ final public class AlignLayersTask final int first = gd.getNextChoiceIndex(); final int ref = gd.getNextChoiceIndex(); final int last = gd.getNextChoiceIndex(); + + final GenericDialog gd2 = new GenericDialog( "Align Layers" ); + + Align.param.addFields( gd2 ); + gd2.addCheckbox( "use bUnwarpJ (non-linear cubic B-Splines)", useBUnwarpJ ); - Align.param.readFields( gd ); + gd2.addMessage( "Miscellaneous:" ); + gd2.addCheckbox( "propagate after last transform", propagateTransform ); - useBUnwarpJ = gd.getNextBoolean(); - propagateTransform = gd.getNextBoolean(); + gd2.showDialog(); + if ( gd2.wasCanceled() ) return; + + Align.param.readFields( gd2 ); + + useBUnwarpJ = gd2.getNextBoolean(); + propagateTransform = gd2.getNextBoolean(); if (useBUnwarpJ && !elasticParam.showDialog()) return; @@ -334,9 +340,13 @@ final public class AlignLayersTask } if ( propagateTransform ) { - for (Layer la : l.getParent().getLayers(last > first ? last +1 : first -1, last > first ? l.getParent().size() -1 : 0)) { - AlignTask.transformPatchesAndVectorData(la, a); - } + final LayerSet layerSet = l.getParent(); + if ( last > first && last < layerSet.size() - 2 ) + for ( final Layer la : layerSet.getLayers( last + 1, layerSet.size() - 1 ) ) + AlignTask.transformPatchesAndVectorData( la, a ); + else if ( first > last && last > 0 ) + for ( final Layer la : layerSet.getLayers( 0, last - 1 ) ) + AlignTask.transformPatchesAndVectorData( la, a ); } } -- 2.11.4.GIT