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

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

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

    
18
    int[] data;
19

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

    
28
    /**
29
     * @param rows
30
     * @param columns
31
     * @param noData
32
     */
33
    public DefaultBandInt(int rows, int columns, NoData noData) {
34
        this.rows = rows;
35
        this.columns = columns;
36
        data = new int[rows * columns];
37
        if (noData == null) {
38
            this.noData = BufferLocator.getBufferManager().createNoData(null, null);
39
        } else {
40
            this.noData = noData;
41
        }
42
    }
43

    
44
    @Override
45
    public int getDataType() {
46
        return BufferManager.TYPE_INT;
47
    }
48

    
49
    @Override
50
    public Object get(int row, int column) {
51
        return getValue(row, column);
52
    }
53

    
54
    @Override
55
    public void set(int row, int column, Object value) {
56
        setValue(row, column, (int) value);
57
    }
58

    
59
    @Override
60
    public void fill(Object value) {
61
        if (value == null) {
62
            if (getNoData().isDefined()) {
63
                value = getNoData().getValue();
64
            } else {
65
                // Do nothing, no data value is undefined
66
                return;
67
            }
68
        }
69
        Arrays.fill(data, (int) value);
70
    }
71

    
72
    int[] getData() {
73
        return data;
74
    }
75

    
76
    @Override
77
    public void copyFrom(Band source) throws CopyFromBandException {
78
        if (this.getColumns() != source.getColumns() || this.getRows() != source.getRows()
79
            || !(source instanceof DefaultBandInt)) {
80
            throw new CopyFromBandException(source, this);
81
        }
82
        System.arraycopy(((DefaultBandInt) source).getData(), 0, this.data, 0, this.getRows()
83
            * this.getColumns());
84
    }
85

    
86
    @Override
87
    public int getValue(int row, int column) {
88
        return data[row * getColumns() + column];
89
    }
90

    
91
    @Override
92
    public void setValue(int row, int column, int value) {
93
        data[row * getColumns() + column] = value;
94
    }
95

    
96
    @Override
97
    public int[] createRowBuffer() {
98
        return new int[getColumns()];
99
    }
100

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

    
105
    }
106

    
107
    @Override
108
    public void putRow(int row, Object rowBuffer) {
109
        System.arraycopy((int[]) rowBuffer, 0, data, row * getColumns(), getColumns());
110

    
111
    }
112
}