Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.fmap.dal.file.jimi / src / main / java / org / gvsig / fmap / dal / file / jimi / MemoryImageBandPageManager.java @ 6220

History | View | Annotate | Download (2.57 KB)

1
package org.gvsig.fmap.dal.file.jimi;
2

    
3
import java.io.IOException;
4
import java.nio.Buffer;
5
import java.nio.ByteBuffer;
6
import java.nio.DoubleBuffer;
7
import java.nio.FloatBuffer;
8
import java.nio.IntBuffer;
9
import java.nio.ShortBuffer;
10

    
11
import org.gvsig.raster.lib.buffer.api.BandPageManager;
12
import org.gvsig.raster.lib.buffer.api.BufferLocator;
13
import org.gvsig.raster.lib.buffer.api.BufferManager;
14

    
15
/**
16
 * Band Page Managaer for a Memory Image
17
 * @author dmartinezizquierdo
18
 *
19
 */
20
public class MemoryImageBandPageManager implements BandPageManager{
21

    
22
    private MemoryImage image;
23
    private int band;
24
    private int dataSize = -1;
25
    private int dataType = BufferManager.TYPE_UNDEFINED;
26

    
27

    
28
    /**
29
     * @param image
30
     * @param band
31
     */
32
    public MemoryImageBandPageManager(MemoryImage image, int band){
33
        this.image=image;
34
        this.band=band;
35
    }
36

    
37
    @Override
38
    public boolean isSupportedSave() {
39
        return false;
40
    }
41

    
42
    @Override
43
    public void load(Buffer buffer, int firstRow, int numberRows, int dataType)
44
        throws IOException {
45

    
46
        int firstCell =  firstRow * image.columns;
47
        int lastCell = firstCell + numberRows*image.columns;
48
        byte[] bandBuffer = image.buffer[band];
49

    
50
        switch(dataType) {
51
            case BufferManager.TYPE_INT:
52
                for( int cell =firstCell ; cell<lastCell ; cell++ ) {
53
                    ((IntBuffer) buffer).put(cell, bandBuffer[cell]);
54
                }
55
                break;
56
            case BufferManager.TYPE_BYTE:
57
                for( int cell =firstCell ; cell<lastCell ; cell++ ) {
58
                    ((ByteBuffer) buffer).put(cell, bandBuffer[cell]);
59
                }
60
                break;
61
            case BufferManager.TYPE_DOUBLE:
62
                for( int cell =firstCell ; cell<lastCell ; cell++ ) {
63
                    ((DoubleBuffer) buffer).put(cell, bandBuffer[cell]);
64
                }
65
                break;
66
            case BufferManager.TYPE_FLOAT:
67
                for( int cell =firstCell ; cell<lastCell ; cell++ ) {
68
                    ((FloatBuffer) buffer).put(cell, bandBuffer[cell]);
69
                }
70
                break;
71
            case BufferManager.TYPE_SHORT:
72
            case BufferManager.TYPE_USHORT:
73
                for( int cell =firstCell ; cell<lastCell ; cell++ ) {
74
                    ((ShortBuffer) buffer).put(cell, bandBuffer[cell]);
75
                }
76
                break;
77
        }
78
    }
79

    
80
    @Override
81
    public void save(Buffer buffer, int row, int rows, int dataType)
82
        throws IOException {
83
        throw new UnsupportedOperationException();
84

    
85
    }
86

    
87
}