Statistics
| Revision:

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
}