package edu.stanford.rsl.conrad.pipeline;
import edu.stanford.rsl.apps.gui.Citeable;
import edu.stanford.rsl.apps.gui.GUIConfigurable;
import edu.stanford.rsl.conrad.data.numeric.Grid2D;
import edu.stanford.rsl.conrad.data.numeric.Grid3D;
import edu.stanford.rsl.conrad.io.ImagePlusDataSink;
import edu.stanford.rsl.conrad.io.IndividualFilesProjectionDataSink;
import edu.stanford.rsl.conrad.io.SafeSerializable;
import edu.stanford.rsl.conrad.utils.Configuration;
public abstract class BufferedProjectionSink implements ProjectionSink, GUIConfigurable, Citeable, SafeSerializable {
/**
*
*/
private static final long serialVersionUID = 8818811805620422888L;
protected Grid3D projectionVolume;
protected boolean configured = false;
protected boolean showStatus = false;
public void setShowStatus(boolean showStatus){
this.showStatus = showStatus;
}
public abstract void process(Grid2D projection, int projectionNumber) throws Exception;
public abstract String getName();
public Grid3D getResult(){
configured = false;
adjustViewRange();
return projectionVolume;
}
public Grid3D getProjectionVolume() {
return projectionVolume;
}
public abstract void setConfiguration(Configuration config);
public static BufferedProjectionSink [] getProjectionDataSinks (){
BufferedProjectionSink [] sinks = {
new ImagePlusDataSink(),
new IndividualFilesProjectionDataSink(),
};
return sinks;
}
public String toString(){
return getName();
}
public void adjustViewRange(){
}
@Override
public void prepareForSerialization(){
configured = false;
projectionVolume = null;
}
public boolean isConfigured() {
return configured;
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/