From c621eaad3849fb93731c4288e0ef8059b65ba41b Mon Sep 17 00:00:00 2001 From: Stephane Dallongeville <stephane@outlook.com> Date: Mon, 14 Sep 2020 17:36:07 +0200 Subject: [PATCH] Fixed merging from mavenization (restored all lost changes hopefully) + minors changes. --- .classpath | 38 ------------ export.jardesc | 2 +- .../SequenceFileImporterGetImage.java | 20 ++++--- .../SequenceFileImporterLoadSequence.java | 12 ++-- .../sequenceblocks/infos/GetFileName.java | 2 +- .../loop/SequenceChannelBatch.java | 7 +-- .../loop/SequenceFileImporterBatch.java | 43 ++++++++++++- .../SequenceFileImporterChannelBatch.java | 3 +- .../loop/SequenceFileImporterFrameBatch.java | 3 +- .../loop/SequenceFileImporterRegionBatch.java | 8 ++- .../loop/SequenceFileImporterSeriesBatch.java | 41 +++++++++++-- .../loop/SequenceFileImporterSliceBatch.java | 5 +- .../loop/SequenceFileImporterTileBatch.java | 51 ++++++++++++---- .../loop/SequenceFrameBatch.java | 2 +- .../loop/SequenceRegionBatch.java | 60 ++++++++++++------- .../loop/SequenceSliceBatch.java | 4 +- 16 files changed, 190 insertions(+), 111 deletions(-) diff --git a/.classpath b/.classpath index f31c84e..396fa4f 100644 --- a/.classpath +++ b/.classpath @@ -2,47 +2,9 @@ <classpath> <classpathentry kind="src" path="src/main/java"/> <classpathentry kind="src" path="src/main/resources"/> - <classpathentry kind="src" path="src/test/java"/> <classpathentry kind="lib" path="/Icy-App/plugins/adufour/ezplug/EzPlug.jar"/> <classpathentry kind="lib" path="/Icy-App/plugins/adufour/blocks/Blocks.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="var" path="ICY_JAR"/> - <classpathentry kind="lib" path="F:/SDKs/Java/jdk1.8.0_241/lib/tools.jar"/> - <classpathentry kind="var" path="USER_HOME/SDKs/Java/jdk1.8.0_251/lib/tools.jar"/> - <classpathentry kind="var" path="USER_HOME/SDKs/Java/jdk1.8.0_251/lib/tools.jar"/> - <classpathentry kind="var" path="USER_HOME/SDKs/Java/jdk1.8.0_251/lib/tools.jar"/> - <classpathentry kind="var" path="USER_HOME/SDKs/Java/jdk1.8.0_251/lib/tools.jar"/> - <classpathentry kind="var" path="USER_HOME/SDKs/Java/jdk1.8.0_251/lib/tools.jar"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-kernel:2.1.0"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: net.sf.ehcache:ehcache:2.10.6"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.slf4j:slf4j-api:1.7.25"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-bioformats:6.3.1"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-insubstantial:7.3.7"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-vtk:6.3.0.1"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: net.imagej:ij:1.52q"/> - <classpathentry kind="lib" path="D:/SDKs/Java/jdk1.8.0_241/lib/tools.jar"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.media:jai-core:1.1.3"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.media:jai-codec:1.1.3"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all:2.1.5-01"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all-natives-linux-amd64:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all-natives-linux-i586:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all-natives-macosx-universal:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all-natives-windows-amd64:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.jogl:jogl-all-natives-windows-i586:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt:2.1.5-01"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt-natives-linux-amd64:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt-natives-linux-i586:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt-natives-macosx-universal:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-amd64:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jogamp.gluegen:gluegen-rt-natives-windows-i586:2.1.5"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.javassist:javassist:3.22.0-GA"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: net.sourceforge.jexcelapi:jxl:2.6.12"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: log4j:log4j:1.2.14"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.swinglabs.swingx:swingx-all:1.6.5-1"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-blocks:1.0.1"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-protocols:3.0.9"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-javadocparser:1.0.0"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.nativelibs4java:ochafik-util:0.12"/> - <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.bioimageanalysis.icy:icy-ezplug:3.15.13"/> <classpathentry kind="output" path="target/classes"/> </classpath> diff --git a/export.jardesc b/export.jardesc index 718e9ce..690764f 100644 --- a/export.jardesc +++ b/export.jardesc @@ -11,6 +11,6 @@ </sealing> </manifest> <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false"> - <javaElement handleIdentifier="=SequenceBlocks/src"/> + <javaElement handleIdentifier="=SequenceBlocks/src\/main\/java"/> </selectedElements> </jardesc> diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterGetImage.java b/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterGetImage.java index 3720a15..20f07dc 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterGetImage.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterGetImage.java @@ -38,11 +38,11 @@ public class SequenceFileImporterGetImage extends Plugin implements IOBlock, Plu super(); importer = new Var<PositionedSequenceFileImporter>("Importer", PositionedSequenceFileImporter.class); - series = new VarInteger("Series", 0); + series = new VarInteger("Series", -1); resolution = new VarInteger("Resolution (0=full, 1=1/2, ..)", 0); region = new VarROIArray("XY region (ROI)", null); - zIndex = new VarInteger("Z (slice) index", 0); - tIndex = new VarInteger("T (frame) index", 0); + zIndex = new VarInteger("Z (slice) index", -1); + tIndex = new VarInteger("T (frame) index", -1); cIndex = new VarInteger("C (channel) index", -1); image = new Var<IcyBufferedImage>("Image", IcyBufferedImage.class); @@ -71,17 +71,21 @@ public class SequenceFileImporterGetImage extends Plugin implements IOBlock, Plu Rectangle rect = ((rois != null) && (rois.length > 0)) ? rois[0].getBounds5D().toRectangle2D().getBounds() : null; - // default values ? use internal position if any defined - if ((s == 0) && (pi.s != -1)) + // undefined values ? use internal position if any defined + if ((s == -1) && (pi.s != -1)) s = pi.s; - if ((z == 0) && (pi.z != -1)) + if ((z == -1) && (pi.z != -1)) z = pi.z; - if ((t == 0) && (pi.t != -1)) + if ((t == -1) && (pi.t != -1)) t = pi.t; - if ((c == 0) && (pi.c != -1)) + if ((c == -1) && (pi.c != -1)) c = pi.c; if ((rect == null) && (pi.xyRegion != null)) rect = pi.xyRegion; + + // still undefined ? --> set default value for series + if (s == -1) + s = 0; try { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterLoadSequence.java b/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterLoadSequence.java index 34c8ba2..666f65c 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterLoadSequence.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/importer/SequenceFileImporterLoadSequence.java @@ -43,7 +43,7 @@ public class SequenceFileImporterLoadSequence extends Plugin implements IOBlock, importer = new Var<PositionedSequenceFileImporter>("Importer", PositionedSequenceFileImporter.class); - series = new VarInteger("Series", 0); + series = new VarInteger("Series", -1); resolution = new VarInteger("Resolution (0=full, 1=1/2, ..)", 0); region = new VarROIArray("XY region (ROI)", null); minZIndex = new VarInteger("Z min (slice)", -1); @@ -80,8 +80,8 @@ public class SequenceFileImporterLoadSequence extends Plugin implements IOBlock, Rectangle rect = ((rois != null) && (rois.length > 0)) ? rois[0].getBounds5D().toRectangle2D().getBounds() : null; - // default values ? use internal position if any defined - if ((s == 0) && (pi.s != -1)) + // undefined values ? use internal position if any defined + if ((s == -1) && (pi.s != -1)) s = pi.s; if ((minZ == -1) && (maxZ == -1) && (pi.z != -1)) { @@ -93,10 +93,14 @@ public class SequenceFileImporterLoadSequence extends Plugin implements IOBlock, minT = pi.t; maxT = pi.t; } - if ((c == 0) && (pi.c != -1)) + if ((c == -1) && (pi.c != -1)) c = pi.c; if ((rect == null) && (pi.xyRegion != null)) rect = pi.xyRegion; + + // still undefined ? --> set default value for series + if (s == -1) + s = 0; try { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetFileName.java b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetFileName.java index 477a915..2bf3699 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetFileName.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/infos/GetFileName.java @@ -42,7 +42,7 @@ public class GetFileName extends Plugin implements SequenceBlock, PluginBundled result = FileUtil.getFileName(result); // remove extension ? if (!withExtension.getValue().booleanValue()) - FileUtil.setExtension(result, ""); + result = FileUtil.setExtension(result, ""); filename.setValue(result); } diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceChannelBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceChannelBatch.java index f227dcd..763ccaa 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceChannelBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceChannelBatch.java @@ -17,15 +17,10 @@ import plugins.tprovoost.sequenceblocks.SequenceBlocks; */ public class SequenceChannelBatch extends Batch implements SequenceBlock, PluginLibrary, PluginBundled { - // important to not initialize and create them in getBatchSource() and getBatchElement() + // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() protected VarSequence inputSequence; protected VarSequence element; - public SequenceChannelBatch() - { - super(); - } - @Override public VarSequence getBatchSource() { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterBatch.java index 782c76c..d487731 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterBatch.java @@ -1,11 +1,15 @@ package plugins.tprovoost.sequenceblocks.loop; +import java.util.List; + import icy.file.SequenceFileImporter; import icy.plugin.interface_.PluginBundled; import icy.plugin.interface_.PluginLibrary; import plugins.adufour.blocks.lang.Batch; import plugins.adufour.blocks.tools.sequence.SequenceBlock; +import plugins.adufour.blocks.util.VarList; import plugins.adufour.vars.lang.Var; +import plugins.adufour.vars.lang.VarInteger; import plugins.adufour.vars.util.VarException; import plugins.tprovoost.sequenceblocks.SequenceBlocks; import plugins.tprovoost.sequenceblocks.importer.PositionedSequenceFileImporter; @@ -20,6 +24,7 @@ public abstract class SequenceFileImporterBatch extends Batch implements Sequenc // important to not initialize and create them in getBatchSource() and getBatchElement() protected Var<PositionedSequenceFileImporter> positionedImporter; protected Var<PositionedSequenceFileImporter> element; + protected VarInteger series; // internal protected int limit; @@ -58,8 +63,42 @@ public abstract class SequenceFileImporterBatch extends Batch implements Sequenc if (imp.getOpened() == null) throw new VarException(positionedImporter, "Importer is not opened !"); - // init element with a copy of current positioned importer - element.setValue(new PositionedSequenceFileImporter(value)); + // create new positioned importer for element initialization + final PositionedSequenceFileImporter pi = new PositionedSequenceFileImporter(value); + + final int s = series.getValue().intValue(); + + // defined series ? --> set series position + if (s != -1) + pi.s = s; + + // init element with a copy of current positioned importer (and eventually set serie position) + element.setValue(pi); + } + + @Override + public void declareInput(VarList inputMap) + { + super.declareInput(inputMap); + + // lazy creation + if (series == null) + series = new VarInteger("Series", -1); + + inputMap.add("series", series); + } + + @Override + public void declareLoopVariables(List<Var<?>> loopVariables) + { + // need to be called after + super.declareLoopVariables(loopVariables); + + // lazy creation + if (series == null) + series = new VarInteger("Series", -1); + + loopVariables.add(series); } @Override diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterChannelBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterChannelBatch.java index 46640c5..afc3b04 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterChannelBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterChannelBatch.java @@ -17,7 +17,8 @@ public class SequenceFileImporterChannelBatch extends SequenceFileImporterBatch { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); try { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterFrameBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterFrameBatch.java index e91d5f4..ba8bf10 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterFrameBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterFrameBatch.java @@ -17,7 +17,8 @@ public class SequenceFileImporterFrameBatch extends SequenceFileImporterBatch { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); try { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterRegionBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterRegionBatch.java index 0bbd8bb..05f0518 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterRegionBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterRegionBatch.java @@ -24,6 +24,7 @@ import plugins.tprovoost.sequenceblocks.importer.PositionedSequenceFileImporter; */ public class SequenceFileImporterRegionBatch extends SequenceFileImporterBatch { + // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() protected VarROIArray rois; protected VarInteger inputRoisResolution; protected VarInteger inputRoisMargin; @@ -34,7 +35,8 @@ public class SequenceFileImporterRegionBatch extends SequenceFileImporterBatch { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); // can iterate over XY dimension ? if ((pi.xyRegion == null) && (rois.getValue() != null)) @@ -114,6 +116,8 @@ public class SequenceFileImporterRegionBatch extends SequenceFileImporterBatch @Override public void declareLoopVariables(List<Var<?>> loopVariables) { + super.declareLoopVariables(loopVariables); + // lazy creation if (rois == null) rois = new VarROIArray("XY regions (ROIs)"); @@ -125,8 +129,6 @@ public class SequenceFileImporterRegionBatch extends SequenceFileImporterBatch loopVariables.add(rois); loopVariables.add(inputRoisResolution); loopVariables.add(inputRoisMargin); - - super.declareLoopVariables(loopVariables); } @Override diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSeriesBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSeriesBatch.java index 255c14c..ffb8e57 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSeriesBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSeriesBatch.java @@ -1,7 +1,11 @@ package plugins.tprovoost.sequenceblocks.loop; +import java.util.List; + import icy.file.SequenceFileImporter; import icy.sequence.MetaDataUtil; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.Var; import plugins.adufour.vars.util.VarException; import plugins.tprovoost.sequenceblocks.importer.PositionedSequenceFileImporter; @@ -17,12 +21,16 @@ public class SequenceFileImporterSeriesBatch extends SequenceFileImporterBatch { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); try { - // force series iteration as by default series is set to 0 - limit = MetaDataUtil.getNumSeries(pi.getMetadata()); + // can iterate over S dimension ? + if (pi.s == -1) + limit = MetaDataUtil.getNumSeries(pi.getMetadata()); + else + limit = 1; } catch (Exception e) { @@ -31,13 +39,34 @@ public class SequenceFileImporterSeriesBatch extends SequenceFileImporterBatch } } + @Override + public void declareInput(VarList inputMap) + { + super.declareInput(inputMap); + + // we don't want it here + inputMap.remove(series); + } + + @Override + public void declareLoopVariables(List<Var<?>> loopVariables) + { + super.declareLoopVariables(loopVariables); + + // we don't want it here + loopVariables.remove(series); + } + @Override public void beforeIteration() { // set current position S - element.getValue().s = getIterationCounter().getValue().intValue(); - // force element changed event so loop get correctly executed - element.valueChanged(element, element.getValue(), element.getValue()); + if (positionedImporter.getValue().s == -1) + { + element.getValue().s = getIterationCounter().getValue().intValue(); + // force element changed event so loop get correctly executed + element.valueChanged(element, element.getValue(), element.getValue()); + } } @Override diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSliceBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSliceBatch.java index 061b76d..16f1dad 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSliceBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterSliceBatch.java @@ -17,8 +17,9 @@ public class SequenceFileImporterSliceBatch extends SequenceFileImporterBatch { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); - + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); + try { // can iterate over Z dimension ? diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterTileBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterTileBatch.java index 5386fb6..4d6e434 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterTileBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFileImporterTileBatch.java @@ -6,6 +6,8 @@ import java.util.List; import icy.file.SequenceFileImporter; import icy.image.ImageUtil; import icy.sequence.MetaDataUtil; +import plugins.adufour.blocks.util.VarList; +import plugins.adufour.vars.lang.Var; import plugins.adufour.vars.lang.VarInteger; import plugins.adufour.vars.util.VarException; import plugins.tprovoost.sequenceblocks.importer.PositionedSequenceFileImporter; @@ -17,25 +19,19 @@ import plugins.tprovoost.sequenceblocks.importer.PositionedSequenceFileImporter; */ public class SequenceFileImporterTileBatch extends SequenceFileImporterBatch { - protected final VarInteger tileW; - protected final VarInteger tileH; + // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() + protected VarInteger tileW; + protected VarInteger tileH; protected List<Rectangle> tiles; - public SequenceFileImporterTileBatch() - { - super(); - - tileW = new VarInteger("Tile width (-1 = auto)", 0); - tileH = new VarInteger("Tile height (-1 = auto)", 0); - } - @Override public void initializeLoop() { super.initializeLoop(); - final PositionedSequenceFileImporter pi = positionedImporter.getValue(); + // can take position from element which should have been initialized here + final PositionedSequenceFileImporter pi = element.getValue(); // can iterate over XY dimension ? if (pi.xyRegion == null) @@ -63,7 +59,7 @@ public class SequenceFileImporterTileBatch extends SequenceFileImporterBatch } catch (Exception e) { - throw new VarException(positionedImporter, + throw new VarException(element, "Error while initializing SequenceFileImporter tile batch: " + e.getMessage()); } @@ -89,6 +85,37 @@ public class SequenceFileImporterTileBatch extends SequenceFileImporterBatch limit = 1; } + @Override + public void declareInput(VarList inputMap) + { + super.declareInput(inputMap); + + // lazy creation + if (tileW == null) + tileW = new VarInteger("Tile width (-1 = auto)", -1); + if (tileH == null) + tileH = new VarInteger("Tile height (-1 = auto)", -1); + + inputMap.add("tileWidht", tileW); + inputMap.add("tileHeight", tileH); + } + + @Override + public void declareLoopVariables(List<Var<?>> loopVariables) + { + // need to be called after + super.declareLoopVariables(loopVariables); + + // lazy creation + if (tileW == null) + tileW = new VarInteger("Tile width (-1 = auto)", -1); + if (tileH == null) + tileH = new VarInteger("Tile height (-1 = auto)", -1); + + loopVariables.add(tileW); + loopVariables.add(tileH); + } + @Override public void beforeIteration() { diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFrameBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFrameBatch.java index d06b0a6..2a77e4f 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFrameBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceFrameBatch.java @@ -40,7 +40,7 @@ public class SequenceFrameBatch extends Batch implements PluginLibrary, PluginBu { // initialize element if needed if (element == null) - element = new VarSequence("Channel Sequence", null); + element = new VarSequence("Frame Sequence", null); return element; } diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java index 548ba91..8da2ca7 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceRegionBatch.java @@ -4,6 +4,7 @@ import java.util.List; import icy.plugin.interface_.PluginBundled; import icy.plugin.interface_.PluginLibrary; +import icy.roi.ROI; import icy.sequence.Sequence; import icy.sequence.SequenceUtil; import plugins.adufour.blocks.lang.Batch; @@ -22,38 +23,57 @@ import plugins.tprovoost.sequenceblocks.SequenceBlocks; */ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginLibrary, PluginBundled { - // important to not initialize and create them in getBatchSource() and getBatchElement() + // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() protected VarSequence inputSequence; protected VarSequence element; - protected final VarROIArray rois; + protected VarROIArray rois; + protected VarROIArray currentRoi; public SequenceRegionBatch() { super(); - - rois = new VarROIArray("ROI(s)"); } @Override - public VarSequence getBatchSource() + public VarROIArray getBatchSource() { - // initialize variable if needed - if (inputSequence == null) - inputSequence = new VarSequence("Sequence", null); + if (rois == null) + rois = new VarROIArray("ROI(s)"); - return inputSequence; + return rois; } @Override public VarSequence getBatchElement() { - // initialize element if needed if (element == null) - element = new VarSequence("Channel Sequence", null); + element = new VarSequence("Region Sequence", null); return element; } + @Override + public void declareInput(VarList inputMap) + { + super.declareInput(inputMap); + + if (inputSequence == null) + inputSequence = new VarSequence("Sequence", null); + + inputMap.add(inputSequence.getName(), inputSequence); + } + + @Override + public void declareOutput(VarList outputMap) + { + super.declareOutput(outputMap); + + if (currentRoi == null) + currentRoi = new VarROIArray("Current ROI"); + + outputMap.add(currentRoi.getName(), currentRoi); + } + @Override public void initializeLoop() { @@ -70,8 +90,10 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL public void beforeIteration() { // set result in element - element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(), - rois.getValue()[getIterationCounter().getValue().intValue()])); + final ROI roi = rois.getValue()[getIterationCounter().getValue().intValue()]; + + element.setValue(SequenceUtil.getSubSequence(inputSequence.getValue(), roi)); + currentRoi.setValue(new ROI[] {roi}); } @Override @@ -80,20 +102,12 @@ public class SequenceRegionBatch extends Batch implements SequenceBlock, PluginL return getIterationCounter().getValue().intValue() >= rois.getValue().length; } - @Override - public void declareInput(VarList inputMap) - { - super.declareInput(inputMap); - - inputMap.add("ROIs", rois); - } - @Override public void declareLoopVariables(List<Var<?>> loopVariables) { super.declareLoopVariables(loopVariables); - - loopVariables.add(rois); + loopVariables.add(inputSequence); + loopVariables.add(currentRoi); } @Override diff --git a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceSliceBatch.java b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceSliceBatch.java index d1bc689..e8c2003 100644 --- a/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceSliceBatch.java +++ b/src/main/java/plugins/tprovoost/sequenceblocks/loop/SequenceSliceBatch.java @@ -17,7 +17,7 @@ import plugins.tprovoost.sequenceblocks.SequenceBlocks; */ public class SequenceSliceBatch extends Batch implements SequenceBlock, PluginLibrary, PluginBundled { - // important to not initialize and create them in getBatchSource() and getBatchElement() + // important to not initialize here (even with null) and create them in getBatchSource() and getBatchElement() protected VarSequence inputSequence; protected VarSequence element; @@ -36,7 +36,7 @@ public class SequenceSliceBatch extends Batch implements SequenceBlock, PluginLi { // initialize element if needed if (element == null) - element = new VarSequence("Channel Sequence", null); + element = new VarSequence("Slice Sequence", null); return element; } -- GitLab