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 @ 5485

History | View | Annotate | Download (2.76 KB)

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

    
3
import java.util.Arrays;
4

    
5
import org.gvsig.raster.lib.buffer.api.Band;
6
import org.gvsig.raster.lib.buffer.api.BufferManager;
7
import org.gvsig.raster.lib.buffer.api.NoData;
8
import org.gvsig.raster.lib.buffer.api.Band.BandByte;
9
import org.gvsig.raster.lib.buffer.api.RasterLocator;
10
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
11

    
12
/**
13
 * @author fdiaz
14
 *
15
 */
16
public class DefaultBandByte extends AbstractBand implements BandByte {
17

    
18
    byte[] data;
19

    
20
    /**
21
     * @param rows
22
     * @param columns
23
     */
24
    public DefaultBandByte(int rows, int columns) {
25
        this(rows, columns, RasterLocator.getBufferManager().createNoData(null, null));
26
    }
27

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

    
40
    @Override
41
    public int getDataType() {
42
        return BufferManager.TYPE_BYTE;
43
    }
44

    
45
    @Override
46
    public Object get(int row, int column) {
47
        return getValue(row, column);
48
    }
49

    
50
    @Override
51
    public void set(int row, int column, Object value) {
52
        setValue(row, column, (byte) value);
53
    }
54

    
55
    @Override
56
    public void fill(Object value) {
57
        if (value == null) {
58
            if (getNoData().isDefined()) {
59
                value = getNoData().getValue();
60
            } else {
61
                // Do nothing, no data value is defined
62
                return;
63
            }
64
        }
65
        Arrays.fill(data, (byte) value);
66
    }
67

    
68
    byte[] getData() {
69
        return data;
70
    }
71

    
72
    @Override
73
    public void copyFrom(Band source) throws CopyFromBandException {
74
        if (this.getColumns() != source.getColumns() || this.getRows() != source.getRows()
75
            || !(source instanceof DefaultBandByte)) {
76
            throw new CopyFromBandException(source, this);
77
        }
78
        System.arraycopy(((DefaultBandByte) source).getData(), 0, this.data, 0, this.getRows()
79
            * this.getColumns());
80
    }
81

    
82
    @Override
83
    public byte getValue(int row, int column) {
84
        return data[row + column * getColumns()];
85
    }
86

    
87
    @Override
88
    public void setValue(int row, int column, byte value) {
89
        data[row + column * getColumns()] = value;
90
    }
91

    
92
    @Override
93
    public byte[] createRowBuffer() {
94
        return new byte[getColumns()];
95
    }
96

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

    
101
    }
102

    
103
    @Override
104
    public void putRow(int row, Object rowBuffer) {
105
        System.arraycopy((byte[]) rowBuffer, 0, data, row * getColumns(), getColumns());
106

    
107
    }
108

    
109
}