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 / DefaultBandDouble.java @ 5452

History | View | Annotate | Download (2.54 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.Band.BandDouble;
5
import org.gvsig.raster.lib.buffer.api.BufferManager;
6
import org.gvsig.raster.lib.buffer.api.NoData;
7
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
8

    
9

    
10
/**
11
 * @author fdiaz
12
 *
13
 */
14
public class DefaultBandDouble extends AbstractBand implements BandDouble{
15

    
16
    double[] data;
17

    
18

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

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

    
39
    @Override
40
    public int getDataType() {
41
        return BufferManager.TYPE_DOUBLE;
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, (double)value);
52
    }
53

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

    
65
    double[] getData(){
66
        return data;
67
    }
68

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

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

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

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

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

    
96
    }
97

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

    
102
    }
103

    
104
}