content: package edu.stanford.rsl.conrad.pipeline;
  
  import java.io.IOException;
  
  import edu.stanford.rsl.conrad.data.numeric.Grid2D;
  
  /**
   * Interface to model an arbitrary projection source
   * 
   * @author akmaier
   *
   */
  public interface ProjectionSource {
  
  	/**
  	 * Initializes the the ProjectionSource. This can either be a filename or a String that describes how to initialize the source.
  	 * 
  	 * @param filename the name of the file to read
  	 * @throws IOException may happen
  	 */
  	public void initStream(String filename) throws IOException;
  	
  	/**
  	 * Writes the next projection into an IndividualImagePipelineFiltering tool, i.e. reads the projection and sets the right projection number in a synchornized manner.
  	 * <BR>
  	 * @param tool the tool to write to
  	 */
  	public void getNextProjection(IndividualImagePipelineFilteringTool tool);
  	
  	/**
  	 * Returns the current projection number
  	 * @return the number
  	 * 
  	 * @see #getNextProjection()
  	 * @see #getNextProjection(IndividualImagePipelineFilteringTool tool)
  	 */
  	public int getCurrentProjectionNumber();
  	
  	/**
  	 * Returns the next projection. Note that this call may be out of sync with getCurrentProjectionNumber()
  	 * @return the projection
  	 * 
  	 * @see #getCurrentProjectionNumber()
  	 * @see #getNextProjection(IndividualImagePipelineFilteringTool tool)
  	 */
  	public Grid2D getNextProjection();
  	
  }
  /*
   * Copyright (C) 2010-2014 Andreas Maier
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */