Skip to content
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
package org.micromanager.lightsheetmanager.api;

import org.micromanager.lightsheetmanager.api.data.CameraData;
import org.micromanager.lightsheetmanager.api.data.CameraMode;
import org.micromanager.lightsheetmanager.api.internal.DefaultChannelSettings;
import org.micromanager.lightsheetmanager.api.internal.DefaultSheetCalibration;
import org.micromanager.lightsheetmanager.api.internal.DefaultSliceCalibration;
import org.micromanager.lightsheetmanager.api.internal.DefaultSliceSettings;
import org.micromanager.lightsheetmanager.api.internal.DefaultSliceSettingsLS;
import org.micromanager.lightsheetmanager.api.internal.DefaultTimingSettings;
import org.micromanager.lightsheetmanager.api.internal.DefaultVolumeSettings;
import org.micromanager.lightsheetmanager.api.data.AcquisitionMode;

/**
Expand All @@ -20,7 +14,7 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings {
*
* @return a builder to create a modified copy of these settings
*/
//Builder copyBuilder();
Builder copyBuilder();

/**
* Returns the immutable DefaultChannelSettings instance.
Expand All @@ -34,28 +28,28 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings {
*
* @return immutable DefaultTimingSettings instance.
*/
DefaultTimingSettings timing();
TimingSettings timing();

/**
* Returns the immutable DefaultVolumeSettings instance.
*
* @return immutable DefaultVolumeSettings instance.
*/
DefaultVolumeSettings volume();
VolumeSettings volume();

/**
* Returns the immutable DefaultSliceSettings instance.
*
* @return immutable DefaultSliceSettings instance.
*/
DefaultSliceSettings slice();
SliceSettings slice();

/**
* Returns the immutable DefaultSliceSettingsLS instance.
*
* @return immutable DefaultSliceSettingsLS instance.
*/
DefaultSliceSettingsLS sliceLS();
SliceSettingsLightSheet sliceLS();

/**
* Returns the immutable DefaultScanSettings instance.
Expand All @@ -69,15 +63,14 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings {
*
* @return immutable DefaultSheetCalibration instance.
*/
DefaultSheetCalibration sheetCalibration(final int view);
SheetCalibration sheetCalibration(final int view);

/**
* Returns the immutable DefaultSliceCalibration instance.
*
* @return immutable DefaultSliceCalibration instance.
*/
DefaultSliceCalibration sliceCalibration(final int view);
//DefaultSliceCalibration sliceCalibration();
SliceCalibration sliceCalibration(final int view);

/**
* Returns the acquisition mode.
Expand All @@ -93,6 +86,13 @@ public interface AcquisitionSettingsDispim extends AcquisitionSettings {
*/
CameraMode cameraMode();

/**
* Returns the imaging camera order.
*
* @return the imaging camera order
*/
CameraData[] imagingCameraOrder();

/**
* Returns true if using time points.
*
Expand Down Expand Up @@ -162,6 +162,14 @@ interface Builder<T extends AcquisitionSettings.Builder<T>> extends AcquisitionS
*/
T cameraMode(final CameraMode cameraMode);

/**
* Sets the imaging camera order.
*
* @param order the imaging camera order
* @return {@code this} builder
*/
T imagingCameraOrder(final CameraData[] order);

/**
* Sets the acquisition to use time points.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
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.internal.DefaultSheetCalibration;
import org.micromanager.lightsheetmanager.api.internal.DefaultSliceCalibration;
import org.micromanager.lightsheetmanager.api.internal.DefaultSliceSettings;
import org.micromanager.lightsheetmanager.api.internal.DefaultTimingSettings;
import org.micromanager.lightsheetmanager.api.internal.DefaultVolumeSettings;

/**
* Acquisition settings for SCAPE microscopes.
Expand All @@ -19,12 +14,12 @@ public interface AcquisitionSettingsScape extends AcquisitionSettings {
*
* @return a builder to create a modified copy of these settings
*/
//Builder copyBuilder();
Builder copyBuilder();

/**
* Returns the immutable DefaultChannelSettings instance.
* Returns the immutable ChannelSettings instance.
*
* @return immutable DefaultChannelSettings instance.
* @return immutable ChannelSettings instance.
*/
ChannelSettings channels();

Expand All @@ -33,19 +28,19 @@ public interface AcquisitionSettingsScape extends AcquisitionSettings {
*
* @return immutable DefaultTimingSettings instance.
*/
DefaultTimingSettings timing();
TimingSettings timing();

/**
* Returns the immutable DefaultVolumeSettings instance.
*
* @return immutable DefaultVolumeSettings instance.
*/
DefaultVolumeSettings volume();
VolumeSettings volume();

/**
* Returns the immutable DefaultSliceSettings instance.
* Returns the immutable SliceSettings instance.
*
* @return immutable DefaultSliceSettings instance.
* @return immutable SliceSettings instance.
*/
SliceSettings slice();

Expand All @@ -61,14 +56,14 @@ public interface AcquisitionSettingsScape extends AcquisitionSettings {
*
* @return immutable DefaultSheetCalibration instance.
*/
DefaultSheetCalibration sheetCalibration();
SheetCalibration sheetCalibration();

/**
* Returns the immutable DefaultSliceCalibration instance.
*
* @return immutable DefaultSliceCalibration instance.
*/
DefaultSliceCalibration sliceCalibration();
SliceCalibration sliceCalibration();

/**
* Returns the acquisition mode.
Expand Down Expand Up @@ -144,6 +139,9 @@ interface Builder<T extends AcquisitionSettings.Builder<T>> extends AcquisitionS

/**
* Sets the acquisition mode.
* <p>
* If the mode is a stage scanning mode,
* set the stage scanning flag to true.
*
* @param mode the acquisition mode
* @return {@code this} builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ interface Builder {
*/
Builder delayBeforeView(final double viewDelayMs);

Builder slicesPerView(final int n);
Builder slicesPerView(final int numSlices);

Builder sliceStepSize(final double um);
Builder sliceStepSize(final double stepSizeUm);

/**
* Sets the volume bounds, automatically computing numSlices and centerPosition.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
import com.google.gson.JsonDeserializer;
import org.micromanager.lightsheetmanager.api.AcquisitionSettings;
import org.micromanager.lightsheetmanager.api.ChannelSettings;
import org.micromanager.lightsheetmanager.api.SheetCalibration;
import org.micromanager.lightsheetmanager.api.SliceCalibration;
import org.micromanager.lightsheetmanager.api.SliceSettings;
import org.micromanager.lightsheetmanager.api.StageScanSettings;
import org.micromanager.lightsheetmanager.api.TimingSettings;
import org.micromanager.lightsheetmanager.api.VolumeSettings;
import org.micromanager.lightsheetmanager.model.DataStorage;

/**
Expand Down Expand Up @@ -221,21 +225,41 @@ public String toPrettyJson() {

public static <T extends AcquisitionSettings> T fromJson(final String json, final Class<T> cls) {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StageScanSettings.class, (JsonDeserializer<StageScanSettings>)
.registerTypeAdapter(ChannelSettings.class, (JsonDeserializer<ChannelSettings>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultStageScanSettings.class);
return context.deserialize(jsonElement, DefaultChannelSettings.class);
})
.registerTypeAdapter(ChannelSettings.class, (JsonDeserializer<ChannelSettings>)
.registerTypeAdapter(TimingSettings.class, (JsonDeserializer<TimingSettings>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultChannelSettings.class);
return context.deserialize(jsonElement, DefaultTimingSettings.class);
})
.registerTypeAdapter(VolumeSettings.class, (JsonDeserializer<VolumeSettings>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultVolumeSettings.class);
})
.registerTypeAdapter(StageScanSettings.class, (JsonDeserializer<StageScanSettings>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultStageScanSettings.class);
})
.registerTypeAdapter(SliceSettings.class, (JsonDeserializer<SliceSettings>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultSliceSettings.class);
})
.registerTypeAdapter(SheetCalibration.class, (JsonDeserializer<SheetCalibration>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultSheetCalibration.class);
})
.registerTypeAdapter(SliceCalibration.class, (JsonDeserializer<SliceCalibration>)
(jsonElement, typeOfT, context) -> {
// This forces Gson to use the concrete implementation class
return context.deserialize(jsonElement, DefaultSliceCalibration.class);
})
.create();
return gson.fromJson(json, cls);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ private DefaultSheetCalibration(Builder builder) {
scanOffset_ = builder.scanOffset_;
}

// Note: used by GSON library for deserialization
private DefaultSheetCalibration() {
this(new Builder());
}

public static Builder builder() {
return new Builder();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ private DefaultSliceCalibration(Builder builder) {
offset_ = builder.offset_;
}

// Note: used by GSON library for deserialization
private DefaultSliceCalibration() {
this(new Builder());
}

public static Builder builder() {
return new Builder();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ private DefaultTimingSettings(Builder builder) {
alternateScanDirection_ = builder.alternateScanDirection_;
}

// Note: used by GSON library for deserialization
private DefaultTimingSettings() {
this(new Builder());
}

public static Builder builder() {
return new Builder();
}
Expand Down
Loading
Loading