Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.buffer / org.gvsig.raster.lib.buffer.impl / src / main / java / org / gvsig / raster / lib / buffer / impl / DefaultBandByte.java @ 5445

History | View | Annotate | Download (2.41 KB)

1
package org.gvsig.raster.lib.buffer.impl;
2

    
3
import org.gvsig.raster.lib.buffer.api.Band;
4
import org.gvsig.raster.lib.buffer.api.BufferManager;
5
import org.gvsig.raster.lib.buffer.api.NoData;
6
import org.gvsig.raster.lib.buffer.api.Band.BandByte;
7

    
8
/**
9
 * @author fdiaz
10
 *
11
 */
12
public class DefaultBandByte extends AbstractBand implements BandByte{
13

    
14
    byte[] data;
15

    
16

    
17
    /**
18
     * @param rows
19
     * @param columns
20
     */
21
    public DefaultBandByte(int rows, int columns) {
22
        this(rows, columns, null);
23
    }
24

    
25
    /**
26
     * @param rows
27
     * @param columns
28
     * @param noData
29
     */
30
    public DefaultBandByte(int rows, int columns, NoData noData) {
31
        this.rows = rows;
32
        this.columns = columns;
33
        data = new byte[rows*columns];
34
        this.noData = noData;
35
    }
36

    
37
    @Override
38
    public int getDataType() {
39
        return BufferManager.TYPE_BYTE;
40
    }
41

    
42
    @Override
43
    public Object get(int row, int column) {
44
        return getValue(row, column);
45
    }
46

    
47
    @Override
48
    public void set(int row, int column, Object value) {
49
        setValue(row, column, (byte)value);
50
    }
51

    
52
    @Override
53
    public void fill(Object value) {
54
        byte aux = (byte) getNoData().getValue();
55
        if(value != null){
56
            aux = (byte)value;
57
        }
58
        for (int i = 0; i < data.length; i++) {
59
            data[i] = aux;
60
        }
61
    }
62

    
63
    byte[] getData(){
64
        return data;
65
    }
66

    
67
    @Override
68
    public void copyFrom(Band source) {
69
        if(this.getColumns()!=source.getColumns() || this.getRows()!=source.getRows() || !(source instanceof DefaultBandByte)){
70
            //FIXME:
71
            throw new RuntimeException();
72
        }
73
        System.arraycopy(((DefaultBandByte)source).getData(), 0, this.data, 0, this.getRows()*this.getColumns());
74
    }
75

    
76
    @Override
77
    public byte getValue(int row, int column) {
78
        return data[row+column*getColumns()];
79
    }
80

    
81
    @Override
82
    public void setValue(int row, int column, byte value) {
83
        data[row+column*getColumns()] = value;
84
    }
85

    
86
    @Override
87
    public byte[] createRowBuffer() {
88
        return new byte[getColumns()];
89
    }
90

    
91
    @Override
92
    public void fetchRow(int row, Object rowBuffer) {
93
        System.arraycopy(data, row*getColumns(), (byte[])rowBuffer, 0, getColumns());
94

    
95
    }
96

    
97
    @Override
98
    public void putRow(int row, Object rowBuffer) {
99
        System.arraycopy((byte[])rowBuffer, 0, data, row*getColumns(), getColumns());
100

    
101
    }
102

    
103
}