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 / DefaultBandInt.java @ 5484

History | View | Annotate | Download (2.64 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.BandInt;
9
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
10

    
11
/**
12
 * @author fdiaz
13
 *
14
 */
15
public class DefaultBandInt extends AbstractBand implements BandInt {
16

    
17
    int[] data;
18

    
19
    /**
20
     * @param rows
21
     * @param columns
22
     */
23
    public DefaultBandInt(int rows, int columns) {
24
        this(rows, columns, null);
25
    }
26

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

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

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

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

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

    
67
    int[] getData() {
68
        return data;
69
    }
70

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

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

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

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

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

    
100
    }
101

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

    
106
    }
107
}