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 |
} |