01: /*
02: * $RCSfile: TileFactory.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:22 $
10: * $State: Exp $
11: */
12: package javax.media.jai;
13:
14: import java.awt.Point;
15: import java.awt.image.SampleModel;
16: import java.awt.image.WritableRaster;
17:
18: /**
19: * An interface defining a mechanism which may be used to create tiles
20: * for an image. Implementations of this interface might be based for
21: * example on managing a pool of memory, recycling previously allocated
22: * memory, or using an image as a backing store.
23: *
24: * @since JAI 1.1.2
25: */
26: public interface TileFactory {
27: /**
28: * Returns a value indicating whether a tile returned by
29: * <code>createTile()</code> might be created without allocating
30: * new memory for the requisite data array.
31: */
32: boolean canReclaimMemory();
33:
34: /**
35: * Returns <code>true</code> if this object can cache in main memory
36: * any data arrays which might be made available for future use.
37: */
38: boolean isMemoryCache();
39:
40: /**
41: * Returns the amount of memory currently being consumed by data
42: * arrays cached within this object. If this object does not cache
43: * data arrays then this method will always return zero.
44: *
45: * @return The amount of memory used by internally cached data arrays,
46: * measured in bytes.
47: */
48: long getMemoryUsed();
49:
50: /**
51: * Removes references to all internally cached data arrays, if any.
52: * If such arrays are objects potentially subject to finalization,
53: * then this should make them available for garbage collection
54: * provided no references to them are held elsewhere.
55: */
56: void flush();
57:
58: // XXX Comment about optionally not clearing the data arrays?
59: /**
60: * Create a tile with the specified <code>SampleModel</code> and
61: * location, possibly using a <code>DataBuffer</code> constructed
62: * using a reclaimed data bank (array). If it is not possible to
63: * reclaim an array, a new one will be allocated so that a tile
64: * is guaranteed to be generated. If a reclaimed array is used
65: * to create the tile, its elements should be set to zero before
66: * the tile is returned to the caller.
67: *
68: * @param sampleModel The <code>SampleModel</code> to use in
69: * creating the <code>WritableRaster</code>.
70: * @param location The location (<code>minX, minY</code>) of
71: * the <code>WritableRaster</code>; if <code>null</code>,
72: * <code>(0, 0)</code> will be used.
73: * @return A <code>WritableRaster</code> which might have a
74: * <code>DataBuffer</code> created using a previously
75: * allocated array.
76: * @throws IllegalArgumentionException if <code>sampleModel</code>
77: * is <code>null</code>.
78: */
79: WritableRaster createTile(SampleModel sampleModel, Point location);
80: }
|