diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettings.java index 714d10f..b0912a9 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettings.java @@ -1,5 +1,6 @@ package org.micromanager.lightsheetmanager.api; +import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import org.micromanager.lightsheetmanager.api.data.CameraData; import org.micromanager.lightsheetmanager.api.data.CameraMode; import org.micromanager.lightsheetmanager.api.data.SaveMode; @@ -103,6 +104,17 @@ interface Builder> { */ T timePointInterval(final double timePointInterval); + /** + * Sets the acquisition mode. + *

+ * If the mode is a stage scanning mode, + * set the stage scanning flag to true. + * + * @param mode the acquisition mode + * @return {@code this} builder + */ + T acquisitionMode(final AcquisitionMode mode); + /** * Returns the autofocus settings builder. * @@ -219,6 +231,13 @@ interface Builder> { */ double timePointInterval(); + /** + * Returns the acquisition mode. + * + * @return the acquisition mode. + */ + AcquisitionMode acquisitionMode(); + /** * Returns the autofocus settings. * diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsDispim.java b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsDispim.java index cebb810..f834332 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsDispim.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsDispim.java @@ -1,7 +1,5 @@ package org.micromanager.lightsheetmanager.api; -import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; - /** * Acquisition settings for diSPIM microscopes. */ @@ -63,13 +61,6 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings { */ SliceCalibration sliceCalibration(final int view); - /** - * Returns the acquisition mode. - * - * @return the acquisition mode. - */ - AcquisitionMode acquisitionMode(); - /** * Returns true if using hardware time points. * @@ -88,14 +79,6 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings { interface Builder> extends AcquisitionSettings.Builder { - /** - * Sets the acquisition mode. - * - * @param acqMode the acquisition mode - * @return {@code this} builder - */ - T acquisitionMode(final AcquisitionMode acqMode); - /** * Sets the acquisition to use hardware time points. * diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsScape.java b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsScape.java index 05e4c87..180b749 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsScape.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsScape.java @@ -1,7 +1,5 @@ package org.micromanager.lightsheetmanager.api; -import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; - /** * Acquisition settings for SCAPE microscopes. */ @@ -56,13 +54,6 @@ public interface AcquisitionSettingsScape extends AcquisitionSettings { */ SliceCalibration sliceCalibration(); - /** - * Returns the acquisition mode. - * - * @return the acquisition mode. - */ - AcquisitionMode acquisitionMode(); - /** * Returns true if using hardware time points. * @@ -79,17 +70,6 @@ public interface AcquisitionSettingsScape extends AcquisitionSettings { interface Builder> extends AcquisitionSettings.Builder { - /** - * Sets the acquisition mode. - *

- * If the mode is a stage scanning mode, - * set the stage scanning flag to true. - * - * @param mode the acquisition mode - * @return {@code this} builder - */ - T acquisitionMode(final AcquisitionMode mode); - /** * Sets the acquisition to use hardware time points. * diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/BaseAcquisitionSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/BaseAcquisitionSettings.java index 395d795..20044b9 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/BaseAcquisitionSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/BaseAcquisitionSettings.java @@ -11,6 +11,7 @@ import org.micromanager.lightsheetmanager.api.StageScanSettings; import org.micromanager.lightsheetmanager.api.TimingSettings; import org.micromanager.lightsheetmanager.api.VolumeSettings; +import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import org.micromanager.lightsheetmanager.api.data.CameraData; import org.micromanager.lightsheetmanager.api.data.CameraMode; import org.micromanager.lightsheetmanager.api.data.SaveMode; @@ -34,6 +35,7 @@ public abstract static class Builder> implements Acquisitio private boolean useTimePoints_ = false; private int numTimePoints_ = 1; private double timePointInterval_ = 0.0; + private AcquisitionMode acquisitionMode_ = AcquisitionMode.NO_SCAN; private DefaultAutofocusSettings.Builder afBuilder_ = DefaultAutofocusSettings.builder(); private ChannelSettings.Builder channelBuilder_ = DefaultChannelSettings.builder(); @@ -54,6 +56,7 @@ public Builder(final AcquisitionSettings settings) { useTimePoints_ = settings.isUsingTimePoints(); numTimePoints_ = settings.numTimePoints(); timePointInterval_ = settings.timePointInterval(); + acquisitionMode_ = settings.acquisitionMode(); afBuilder_ = settings.autofocus().copyBuilder(); channelBuilder_ = settings.channels().copyBuilder(); } @@ -197,6 +200,34 @@ public T timePointInterval(final double timePointInterval) { return self(); } + /** + * Sets the acquisition mode. + *

+ * If the mode is a stage scanning mode, + * set the stage scanning flag to true. + * + * @param mode the acquisition mode + * @return {@code this} builder + */ + @Override + public T acquisitionMode(final AcquisitionMode mode) { + acquisitionMode_ = mode; + final boolean scanEnabled = (mode == AcquisitionMode.STAGE_SCAN + || mode == AcquisitionMode.STAGE_SCAN_INTERLEAVED + || mode == AcquisitionMode.STAGE_SCAN_UNIDIRECTIONAL); + stageScanBuilder().enabled(scanEnabled); + return self(); + } + + /** + * Returns the geometry-specific stage-scan sub-builder. + * Bridges {@link #acquisitionMode} (base) to each concrete geometry's + * own {@code StageScanSettings.Builder}, which is not itself hoisted yet. + * + * @return the stage-scan sub-builder + */ + protected abstract StageScanSettings.Builder stageScanBuilder(); + @Override public DefaultAutofocusSettings.Builder autofocusBuilder() { return afBuilder_; @@ -241,6 +272,7 @@ public ChannelSettings.Builder channelBuilder() { private final boolean useTimePoints_; private final int numTimePoints_; private final double timePointInterval_; + private final AcquisitionMode acquisitionMode_; private final DefaultAutofocusSettings autofocus_; private final ChannelSettings channels_; @@ -264,6 +296,7 @@ protected BaseAcquisitionSettings(Builder builder) { useTimePoints_ = builder.useTimePoints_; numTimePoints_ = builder.numTimePoints_; timePointInterval_ = builder.timePointInterval_; + acquisitionMode_ = builder.acquisitionMode_; autofocus_ = builder.afBuilder_.build(); channels_ = builder.channelBuilder_.build(); } @@ -388,6 +421,16 @@ public double timePointInterval() { return timePointInterval_; } + /** + * Returns the acquisition mode. + * + * @return the acquisition mode + */ + @Override + public AcquisitionMode acquisitionMode() { + return acquisitionMode_; + } + /** * Returns the autofocus settings. * diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DispimAcquisitionSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DispimAcquisitionSettings.java index 495e3a6..5d2c9f1 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DispimAcquisitionSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DispimAcquisitionSettings.java @@ -8,7 +8,6 @@ import org.micromanager.lightsheetmanager.api.StageScanSettings; import org.micromanager.lightsheetmanager.api.TimingSettings; import org.micromanager.lightsheetmanager.api.VolumeSettings; -import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import java.util.Arrays; import java.util.Objects; @@ -23,8 +22,6 @@ public class DispimAcquisitionSettings extends BaseAcquisitionSettings implement private final SheetCalibration[] sheetCalibrations_; private final SliceCalibration[] sliceCalibrations_; - private final AcquisitionMode acquisitionMode_; - private final boolean useHardwareTimePoints_; private final boolean useAdvancedTiming_; @@ -43,7 +40,6 @@ private DispimAcquisitionSettings(Builder builder) { sheetCalibrations_[i] = builder.shcb_[i].build(); sliceCalibrations_[i] = builder.slcb_[i].build(); } - acquisitionMode_ = builder.acquisitionMode_; useHardwareTimePoints_ = builder.useHardwareTimePoints_; useAdvancedTiming_ = builder.useAdvancedTiming_; liveScanPeriod_= builder.liveScanPeriod_; @@ -98,11 +94,6 @@ public SliceCalibration sliceCalibration(final int view) { return sliceCalibrations_[view-1]; } - @Override - public AcquisitionMode acquisitionMode() { - return acquisitionMode_; - } - @Override public boolean isUsingHardwareTimePoints() { return useHardwareTimePoints_; @@ -136,7 +127,7 @@ public boolean equals(Object obj) { Objects.equals(stageScan_, other.stageScan_) && // Objects.equals(sheetCalibration_, other.sheetCalibration_) && // Objects.equals(sliceCalibration_, other.sliceCalibration_) && - acquisitionMode_ == other.acquisitionMode_ && + acquisitionMode() == other.acquisitionMode() && cameraMode() == other.cameraMode() && Arrays.equals(imagingCameraOrder(), other.imagingCameraOrder()) && isUsingTimePoints() == other.isUsingTimePoints() && @@ -160,7 +151,7 @@ public int hashCode() { stageScan_, // sheetCalibration_, // sliceCalibration_, - acquisitionMode_, + acquisitionMode(), cameraMode(), Arrays.hashCode(imagingCameraOrder()), isUsingTimePoints(), @@ -192,8 +183,6 @@ public static class Builder private SheetCalibration.Builder[] shcb_ = new DefaultSheetCalibration.Builder[2]; private SliceCalibration.Builder[] slcb_ = new DefaultSliceCalibration.Builder[2]; - private AcquisitionMode acquisitionMode_ = AcquisitionMode.NO_SCAN; - private boolean useHardwareTimePoints_ = false; private boolean useAdvancedTiming_ = false; @@ -217,18 +206,11 @@ public Builder(final DispimAcquisitionSettings settings) { slcb_[i] = settings.sliceCalibrations_[i].copyBuilder(); shcb_[i] = settings.sheetCalibrations_[i].copyBuilder(); } - acquisitionMode_ = settings.acquisitionMode(); useHardwareTimePoints_ = settings.isUsingHardwareTimePoints(); useAdvancedTiming_ = settings.isUsingAdvancedTiming(); liveScanPeriod_ = settings.liveScanPeriod(); } - @Override - public Builder acquisitionMode(final AcquisitionMode mode) { - acquisitionMode_ = mode; - return this; - } - @Override public Builder useHardwareTimePoints(final boolean state) { useHardwareTimePoints_ = state; @@ -264,6 +246,7 @@ public SliceSettingsLightSheet.Builder sliceLSBuilder() { return ssbLS_; } + @Override public StageScanSettings.Builder stageScanBuilder() { return stageScanBuilder_; } diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/ScapeAcquisitionSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/ScapeAcquisitionSettings.java index b562e3a..23cd024 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/ScapeAcquisitionSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/ScapeAcquisitionSettings.java @@ -7,7 +7,6 @@ import org.micromanager.lightsheetmanager.api.StageScanSettings; import org.micromanager.lightsheetmanager.api.TimingSettings; import org.micromanager.lightsheetmanager.api.VolumeSettings; -import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import java.util.Arrays; import java.util.Objects; @@ -21,8 +20,6 @@ public class ScapeAcquisitionSettings extends BaseAcquisitionSettings implements private final SheetCalibration sheetCalibration_; private final SliceCalibration sliceCalibration_; - private final AcquisitionMode acquisitionMode_; - private final boolean useHardwareTimePoints_; private final boolean useAdvancedTiming_; @@ -34,7 +31,6 @@ private ScapeAcquisitionSettings(Builder builder) { stageScan_ = builder.stageScanBuilder().build(); sheetCalibration_ = builder.sheetCalibrationBuilder().build(); sliceCalibration_ = builder.sliceCalibrationBuilder().build(); - acquisitionMode_ = builder.acquisitionMode_; useHardwareTimePoints_ = builder.useHardwareTimePoints_; useAdvancedTiming_ = builder.useAdvancedTiming_; } @@ -83,11 +79,6 @@ public SliceCalibration sliceCalibration() { return sliceCalibration_; } - @Override - public AcquisitionMode acquisitionMode() { - return acquisitionMode_; - } - @Override public boolean isUsingHardwareTimePoints() { return useHardwareTimePoints_; @@ -114,7 +105,7 @@ public boolean equals(Object obj) { Objects.equals(stageScan_, other.stageScan_) && Objects.equals(sheetCalibration_, other.sheetCalibration_) && Objects.equals(sliceCalibration_, other.sliceCalibration_) && - acquisitionMode_ == other.acquisitionMode_ && + acquisitionMode() == other.acquisitionMode() && cameraMode() == other.cameraMode() && Arrays.equals(imagingCameraOrder(), other.imagingCameraOrder()) && isUsingTimePoints() == other.isUsingTimePoints() && @@ -136,7 +127,7 @@ public int hashCode() { stageScan_, sheetCalibration_, sliceCalibration_, - acquisitionMode_, + acquisitionMode(), cameraMode(), Arrays.hashCode(imagingCameraOrder()), isUsingTimePoints(), @@ -167,8 +158,6 @@ public static class Builder private SheetCalibration.Builder sheetCalibBuilder_ = DefaultSheetCalibration.builder(); private SliceCalibration.Builder sliceCalibBuilder_ = DefaultSliceCalibration.builder(); - private AcquisitionMode acquisitionMode_ = AcquisitionMode.NO_SCAN; - private boolean useHardwareTimePoints_ = false; private boolean useAdvancedTiming_ = false; @@ -183,21 +172,10 @@ public Builder(final ScapeAcquisitionSettings settings) { stageScanBuilder_ = settings.stageScan().copyBuilder(); sheetCalibBuilder_ = settings.sheetCalibration().copyBuilder(); sliceCalibBuilder_ = settings.sliceCalibration().copyBuilder(); - acquisitionMode_ = settings.acquisitionMode(); useHardwareTimePoints_ = settings.isUsingHardwareTimePoints(); useAdvancedTiming_ = settings.isUsingAdvancedTiming(); } - @Override - public Builder acquisitionMode(final AcquisitionMode mode) { - acquisitionMode_ = mode; - final boolean scanEnabled = (mode == AcquisitionMode.STAGE_SCAN - || mode == AcquisitionMode.STAGE_SCAN_INTERLEAVED - || mode == AcquisitionMode.STAGE_SCAN_UNIDIRECTIONAL); - stageScanBuilder_.enabled(scanEnabled); - return this; - } - @Override public Builder useHardwareTimePoints(final boolean state) { useHardwareTimePoints_ = state; @@ -223,6 +201,7 @@ public SliceSettings.Builder sliceBuilder() { return sliceBuilder_; } + @Override public StageScanSettings.Builder stageScanBuilder() { return stageScanBuilder_; }