svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.buffer.impl / src / main / java / org / gvsig / raster / lib / buffer / impl / AwtRasterBandPageManager.java @ 44831
History | View | Annotate | Download (2.97 KB)
1 |
package org.gvsig.raster.lib.buffer.impl; |
---|---|
2 |
|
3 |
import java.awt.image.Raster; |
4 |
import java.io.IOException; |
5 |
import java.nio.Buffer; |
6 |
import java.nio.ByteBuffer; |
7 |
import java.nio.ShortBuffer; |
8 |
|
9 |
import org.gvsig.raster.lib.buffer.api.BandInfo; |
10 |
import org.gvsig.raster.lib.buffer.api.BandPageManager; |
11 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
12 |
import org.gvsig.tools.ToolsLocator; |
13 |
import org.gvsig.tools.dispose.Disposable; |
14 |
import org.gvsig.tools.dispose.DisposeUtils; |
15 |
import org.gvsig.tools.dispose.impl.AbstractDisposable; |
16 |
import org.gvsig.tools.exception.BaseException; |
17 |
|
18 |
|
19 |
/**
|
20 |
* @author fdiaz
|
21 |
*
|
22 |
*/
|
23 |
public class AwtRasterBandPageManager extends AbstractDisposable implements BandPageManager { |
24 |
|
25 |
private Raster img; |
26 |
private int band; |
27 |
|
28 |
/**
|
29 |
* @param img
|
30 |
* @param band
|
31 |
* @throws IOException
|
32 |
*/
|
33 |
public AwtRasterBandPageManager(Raster img, int band) { |
34 |
this.img = img;
|
35 |
this.band = band;
|
36 |
// DisposeUtils.bind(this);
|
37 |
} |
38 |
|
39 |
@Override
|
40 |
public void load(Buffer buffer, int row, int rows, int dataType) throws IOException { |
41 |
|
42 |
buffer.rewind(); |
43 |
|
44 |
int columns = img.getWidth();
|
45 |
switch (dataType) {
|
46 |
case BufferManager.TYPE_BYTE:
|
47 |
int[] intArray = new int[buffer.capacity()]; |
48 |
img.getSamples(0, row, columns, rows, band, intArray);// buffer.array()); |
49 |
for( int cell =0 ; cell<intArray.length ; cell++ ) { |
50 |
((ByteBuffer) buffer).put((int)(cell), (byte)intArray[cell]); |
51 |
} |
52 |
break;
|
53 |
case BufferManager.TYPE_SHORT:
|
54 |
case BufferManager.TYPE_USHORT:
|
55 |
intArray = new int[buffer.capacity()]; |
56 |
img.getSamples(row, 0, columns, rows, band, intArray);// buffer.array()); |
57 |
for( int cell =0 ; cell<intArray.length ; cell++ ) { |
58 |
((ShortBuffer) buffer).put((int)(cell), (short)intArray[cell]); |
59 |
} |
60 |
break;
|
61 |
case BufferManager.TYPE_INT:
|
62 |
img.getSamples(row, 0, columns, rows, band, (int[])(buffer.array())); |
63 |
break;
|
64 |
case BufferManager.TYPE_FLOAT:
|
65 |
img.getSamples(row, 0, columns, rows, band, (float[])(buffer.array())); |
66 |
break;
|
67 |
|
68 |
case BufferManager.TYPE_DOUBLE:
|
69 |
img.getSamples(row, 0, columns, rows, band, (double[])(buffer.array())); |
70 |
break;
|
71 |
|
72 |
default:
|
73 |
throw new IllegalArgumentException("Data Type " + dataType + " not supported."); |
74 |
} |
75 |
|
76 |
|
77 |
} |
78 |
|
79 |
@Override
|
80 |
public void save(Buffer buffer, int row, int rows, int dataType) throws IOException { |
81 |
//Do nothing
|
82 |
} |
83 |
|
84 |
@Override
|
85 |
public boolean isSupportedSave() { |
86 |
return false; |
87 |
} |
88 |
|
89 |
@Override
|
90 |
public BandInfo getBandInfo() {
|
91 |
return null; |
92 |
} |
93 |
|
94 |
// @Override
|
95 |
// public void dispose() {
|
96 |
// if ( ToolsLocator.getDisposableManager().release(this) ) {
|
97 |
// this.img = null;
|
98 |
// }
|
99 |
// }
|
100 |
|
101 |
@Override
|
102 |
protected void doDispose() throws BaseException { |
103 |
this.img = null; |
104 |
} |
105 |
} |