01: /*
02: * $RCSfile: WritableRookIter.java,v $
03: *
04: * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
05: *
06: * Use is subject to license terms.
07: *
08: * $Revision: 1.1 $
09: * $Date: 2005/02/11 04:57:27 $
10: * $State: Exp $
11: */
12: package javax.media.jai.iterator;
13:
14: /**
15: * An iterator for traversing a read/write image using arbitrary
16: * up-down and left-right moves. This will generally be somewhat
17: * slower than a corresponding instance of RectIter, since it must
18: * perform bounds checks against the top and left edges of tiles in
19: * addition to their botton and right edges.
20: *
21: * <p> The iterator is initialized with a particular rectangle as its
22: * bounds, which it is illegal to exceed. This initialization takes
23: * place in a factory method and is not a part of the iterator
24: * interface itself. Once initialized, the iterator may be reset to
25: * its initial state by means of the startLine(), startPixels(), and
26: * startBands() methods. As with RectIter, its position may be
27: * advanced using the nextLine(), jumpLines(), nextPixel(),
28: * jumpPixels(), and nextBand() methods.
29: *
30: * <p> In addition, prevLine(), prevPixel(), and prevBand() methods
31: * exist to move in the upwards and leftwards directions and to access
32: * smaller band indices. The iterator may be set to the far edges of
33: * the bounding rectangle by means of the endLines(), endPixels(), and
34: * endBands() methods.
35: *
36: * <p> The iterator's position may be tested against the bounding
37: * rectangle by means of the finishedLines(), finishedPixels(), and
38: * finishedBands() methods, as well as the hybrid methods
39: * nextLineDone(), prevLineDone(), nextPixelDone(), prevPixelDone(),
40: * nextBandDone(), and prevBandDone().
41: *
42: * <p> The getSample(), getSampleFloat(), and getSampleDouble()
43: * methods are provided to allow read-only access to the source data.
44: * The various source bands may also be accessed in random fashion
45: * using the variants that accept a band index. The getPixel() methods
46: * allow retrieval of all bands simultaneously.
47: *
48: * <p> WritableRookIter adds the ability to alter the source pixel
49: * values using the various setSample() and setPixel() methods. These
50: * methods are inherited from the WritableRectIter interface
51: * unchanged.
52: *
53: * <p> An instance of WritableRookIter may be obtained by means
54: * of the RookIterFactory.createWritable() method, which returns
55: * an opaque object implementing this interface.
56: *
57: * <p> Note that a WritableRookIter inherits multiply from RookIter
58: * and WritableRectIter, and so may be passed into code expecting either
59: * interface. WritableRookIter in fact adds no methods not found in
60: * one of its parent interfaces.
61: *
62: * @see RookIter
63: * @see WritableRectIter
64: * @see RookIterFactory
65: */
66: public interface WritableRookIter extends RookIter, WritableRectIter {
67:
68: // No new methods
69: }
|