001: /*
002: * $RCSfile: WritableRectIter.java,v $
003: *
004: * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
005: *
006: * Use is subject to license terms.
007: *
008: * $Revision: 1.1 $
009: * $Date: 2005/02/11 04:57:27 $
010: * $State: Exp $
011: */
012: package javax.media.jai.iterator;
013:
014: /**
015: * An iterator for traversing a read/write image in top-to-bottom,
016: * left-to-right order. This will generally be the fastest style of
017: * iterator, since it does not need to perform bounds checks against
018: * the top or left edges of tiles.
019: *
020: * <p> The iterator is initialized with a particular rectangle as its
021: * bounds, which it is illegal to exceed. This initialization takes
022: * place in a factory method and is not a part of the iterator
023: * interface itself. Once initialized, the iterator may be reset to
024: * its initial state by means of the startLine(), startPixels(), and
025: * startBands() methods. Its position may be advanced using the
026: * nextLine(), jumpLines(), nextPixel(), jumpPixels(), and nextBand()
027: * methods.
028: *
029: * <p> The iterator's position may be tested against the bounding
030: * rectangle by means of the finishedLines(), finishedPixels(),
031: * and finishedBands() methods, as well as the hybrid methods
032: * nextLineDone(), nextPixelDone(), and nextBandDone().
033: *
034: * <p> The getSample(), getSampleFloat(), and getSampleDouble()
035: * methods are provided to allow read-only access to the source data.
036: * The various source bands may also be accessed in random fashion
037: * using the variants that accept a band index. The getPixel() methods
038: * allow retrieval of all bands simultaneously.
039: *
040: * <p> WritableRookIter adds the ability to alter the source pixel
041: * values using the various setSample() and setPixel() methods.
042: *
043: * <p> An instance of WritableRectIter may be obtained by means
044: * of the RectIterFactory.createWritable() method, which returns
045: * an opaque object implementing this interface.
046: *
047: * @see RectIter
048: * @see RectIterFactory
049: */
050: public interface WritableRectIter extends RectIter {
051:
052: /**
053: * Sets the current sample to an integral value.
054: */
055: void setSample(int s);
056:
057: /**
058: * Sets the specified sample of the current pixel to an integral value.
059: */
060: void setSample(int b, int s);
061:
062: /**
063: * Sets the current sample to a float value.
064: */
065: void setSample(float s);
066:
067: /**
068: * Sets the specified sample of the current pixel to a float value.
069: */
070: void setSample(int b, float s);
071:
072: /**
073: * Sets the current sample to a double value.
074: */
075: void setSample(double x);
076:
077: /**
078: * Sets the specified sample of the current pixel to a double value.
079: */
080: void setSample(int b, double s);
081:
082: /**
083: * Sets all samples of the current pixel to a set of int values.
084: *
085: * @param iArray an int array containing a value for each band.
086: */
087: void setPixel(int[] iArray);
088:
089: /**
090: * Sets all samples of the current pixel to a set of float values.
091: *
092: * @param fArray a float array containing a value for each band.
093: */
094: void setPixel(float[] fArray);
095:
096: /**
097: * Sets all samples of the current pixel to a set of double values.
098: *
099: * @param dArray a double array containing a value for each band.
100: */
101: void setPixel(double[] dArray);
102: }
|