/*
* $Id$
*
* Copyright 2011 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package omero.util;
/**
* A single iteration of a tile for each loop.
* @author Chris Allan <callan at blackcat dot ca>
* @since OMERO Beta-4.3.0
*/
public interface TileLoopIteration
{
/**
* Invoke a single loop iteration.
* @param data the tile access strategy
* @param z Z section counter of the loop.
* @param c Channel counter of the loop.
* @param t Timepoint counter of the loop.
* @param x X offset within the plane specified by the section, channel and
* timepoint counters.
* @param y Y offset within the plane specified by the section, channel and
* timepoint counters.
* @param tileWidth Width of the tile requested. The tile request
* itself may be smaller than the original tile width requested if
* <code>x + tileWidth > sizeX</code>.
* @param tileHeight Height of the tile requested. The tile request
* itself may be smaller if <code>y + tileHeight > sizeY</code>.
* @param tileCount Counter of the tile since the beginning of the loop.
*/
void run(TileData data, int z, int c, int t, int x, int y,
int tileWidth, int tileHeight, int tileCount);
}