Revision 5522
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/PaginatedBandShort.java | ||
---|---|---|
1 |
package org.gvsig.raster.lib.buffer.impl; |
|
2 |
|
|
3 |
import java.nio.ShortBuffer; |
|
4 |
import java.util.Arrays; |
|
5 |
|
|
6 |
import org.gvsig.raster.lib.buffer.api.Band.BandShort; |
|
7 |
import org.gvsig.raster.lib.buffer.api.BandPageManager; |
|
8 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
|
9 |
import org.gvsig.raster.lib.buffer.api.NoData; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author fdiaz |
|
13 |
* |
|
14 |
*/ |
|
15 |
public class PaginatedBandShort extends AbstractPaginatedBand implements BandShort { |
|
16 |
|
|
17 |
private ShortBuffer specificData; |
|
18 |
|
|
19 |
/** |
|
20 |
* @param rows |
|
21 |
* @param columns |
|
22 |
* @param noData |
|
23 |
* @param rowsPerPage |
|
24 |
* @param pageManager |
|
25 |
*/ |
|
26 |
public PaginatedBandShort(int rows, int columns, NoData noData, BandPageManager pageManager) { |
|
27 |
super(rows, columns, noData, pageManager); |
|
28 |
specificData = data.asShortBuffer(); |
|
29 |
} |
|
30 |
|
|
31 |
@Override |
|
32 |
public int getDataType() { |
|
33 |
return BufferManager.TYPE_SHORT; |
|
34 |
} |
|
35 |
|
|
36 |
protected int getDataSize() { |
|
37 |
return 2; |
|
38 |
} |
|
39 |
|
|
40 |
@Override |
|
41 |
public Object get(int row, int column) { |
|
42 |
return getValue(row, column); |
|
43 |
} |
|
44 |
|
|
45 |
@Override |
|
46 |
public void set(int row, int column, Object value) { |
|
47 |
setValue(row, column, (short) value); |
|
48 |
} |
|
49 |
|
|
50 |
@Override |
|
51 |
public void fill(Object value) { |
|
52 |
value = nullValueToNoData(value); |
|
53 |
if(value == null){ |
|
54 |
value = 0; |
|
55 |
} |
|
56 |
|
|
57 |
for(int row=0; row<this.rows; row+=this.rowsPerPage){ |
|
58 |
loadPage(row); |
|
59 |
Arrays.fill(specificData.array(), (short) value); |
|
60 |
} |
|
61 |
} |
|
62 |
|
|
63 |
@Override |
|
64 |
public short getValue(int row, int column) { |
|
65 |
loadPage(row); |
|
66 |
return specificData.get( ((row-firstRowOfPage)*this.columns) + column); |
|
67 |
} |
|
68 |
|
|
69 |
@Override |
|
70 |
public void setValue(int row, int column, short value) { |
|
71 |
loadPage(row); |
|
72 |
specificData.put(((row-firstRowOfPage)*this.columns) + column, value); |
|
73 |
} |
|
74 |
|
|
75 |
@Override |
|
76 |
public short[] createRowBuffer() { |
|
77 |
return new short[getColumns()]; |
|
78 |
} |
|
79 |
|
|
80 |
@Override |
|
81 |
public void fetchRow(int row, Object rowBuffer) { |
|
82 |
loadPage(row); |
|
83 |
short[] source = (short[]) ((java.nio.Buffer)specificData).array(); |
|
84 |
short[] target = (short[]) rowBuffer; |
|
85 |
System.arraycopy(source, (row-firstRowOfPage)*this.columns, target, 0, this.columns); |
|
86 |
} |
|
87 |
|
|
88 |
@Override |
|
89 |
public void putRow(int row, Object rowBuffer) { |
|
90 |
loadPage(row); |
|
91 |
short[] source = (short[]) rowBuffer; |
|
92 |
short[] target = (short[]) ((java.nio.Buffer)specificData).array(); |
|
93 |
System.arraycopy(source, 0, target, (row-firstRowOfPage)*this.columns, this.columns); |
|
94 |
} |
|
95 |
} |
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/PaginatedBandByte.java | ||
---|---|---|
1 |
package org.gvsig.raster.lib.buffer.impl; |
|
2 |
|
|
3 |
import java.nio.ByteBuffer; |
|
4 |
import java.util.Arrays; |
|
5 |
|
|
6 |
import org.gvsig.raster.lib.buffer.api.Band.BandByte; |
|
7 |
import org.gvsig.raster.lib.buffer.api.BandPageManager; |
|
8 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
|
9 |
import org.gvsig.raster.lib.buffer.api.NoData; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author fdiaz |
|
13 |
* |
|
14 |
*/ |
|
15 |
public class PaginatedBandByte extends AbstractPaginatedBand implements BandByte { |
|
16 |
|
|
17 |
private ByteBuffer specificData; |
|
18 |
|
|
19 |
/** |
|
20 |
* @param rows |
|
21 |
* @param columns |
|
22 |
* @param noData |
|
23 |
* @param rowsPerPage |
|
24 |
* @param pageManager |
|
25 |
*/ |
|
26 |
public PaginatedBandByte(int rows, int columns, NoData noData, BandPageManager pageManager) { |
|
27 |
super(rows, columns, noData, pageManager); |
|
28 |
specificData = data; |
|
29 |
} |
|
30 |
|
|
31 |
@Override |
|
32 |
public int getDataType() { |
|
33 |
return BufferManager.TYPE_BYTE; |
|
34 |
} |
|
35 |
|
|
36 |
protected int getDataSize() { |
|
37 |
return 1; |
|
38 |
} |
|
39 |
|
|
40 |
@Override |
|
41 |
public Object get(int row, int column) { |
|
42 |
return getValue(row, column); |
|
43 |
} |
|
44 |
|
|
45 |
@Override |
|
46 |
public void set(int row, int column, Object value) { |
|
47 |
setValue(row, column, (byte) value); |
|
48 |
} |
|
49 |
|
|
50 |
@Override |
|
51 |
public void fill(Object value) { |
|
52 |
value = nullValueToNoData(value); |
|
53 |
if(value == null){ |
|
54 |
value = 0; |
|
55 |
} |
|
56 |
|
|
57 |
for(int row=0; row<this.rows; row+=this.rowsPerPage){ |
|
58 |
loadPage(row); |
|
59 |
Arrays.fill(specificData.array(), (byte)value); |
|
60 |
} |
|
61 |
} |
|
62 |
|
|
63 |
@Override |
|
64 |
public byte getValue(int row, int column) { |
|
65 |
loadPage(row); |
|
66 |
return specificData.get( ((row-firstRowOfPage)*this.columns) + column); |
|
67 |
} |
|
68 |
|
|
69 |
@Override |
|
70 |
public void setValue(int row, int column, byte value) { |
|
71 |
loadPage(row); |
|
72 |
specificData.put(((row-firstRowOfPage)*this.columns) + column, value); |
|
73 |
} |
|
74 |
|
|
75 |
@Override |
|
76 |
public byte[] createRowBuffer() { |
|
77 |
return new byte[getColumns()]; |
|
78 |
} |
|
79 |
|
|
80 |
@Override |
|
81 |
public void fetchRow(int row, Object rowBuffer) { |
|
82 |
loadPage(row); |
|
83 |
byte[] source = (byte[]) ((java.nio.Buffer)specificData).array(); |
|
84 |
byte[] target = (byte[]) rowBuffer; |
|
85 |
System.arraycopy(source, (row-firstRowOfPage)*this.columns, target, 0, this.columns); |
|
86 |
} |
|
87 |
|
|
88 |
@Override |
|
89 |
public void putRow(int row, Object rowBuffer) { |
|
90 |
loadPage(row); |
|
91 |
byte[] source = (byte[]) rowBuffer; |
|
92 |
byte[] target = (byte[]) ((java.nio.Buffer)specificData).array(); |
|
93 |
System.arraycopy(source, 0, target, (row-firstRowOfPage)*this.columns, this.columns); |
|
94 |
} |
|
95 |
} |
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/PaginatedBandFloat.java | ||
---|---|---|
1 |
package org.gvsig.raster.lib.buffer.impl; |
|
2 |
|
|
3 |
import java.nio.DoubleBuffer; |
|
4 |
import java.nio.FloatBuffer; |
|
5 |
import java.util.Arrays; |
|
6 |
|
|
7 |
import org.gvsig.raster.lib.buffer.api.Band.BandFloat; |
|
8 |
import org.gvsig.raster.lib.buffer.api.BandPageManager; |
|
9 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
|
10 |
import org.gvsig.raster.lib.buffer.api.NoData; |
|
11 |
|
|
12 |
/** |
|
13 |
* @author fdiaz |
|
14 |
* |
|
15 |
*/ |
|
16 |
public class PaginatedBandFloat extends AbstractPaginatedBand implements BandFloat { |
|
17 |
|
|
18 |
private FloatBuffer specificData; |
|
19 |
|
|
20 |
/** |
|
21 |
* @param rows |
|
22 |
* @param columns |
|
23 |
* @param noData |
|
24 |
* @param rowsPerPage |
|
25 |
* @param pageManager |
|
26 |
*/ |
|
27 |
public PaginatedBandFloat(int rows, int columns, NoData noData, BandPageManager pageManager) { |
|
28 |
super(rows, columns, noData, pageManager); |
|
29 |
specificData = data.asFloatBuffer(); |
|
30 |
} |
|
31 |
|
|
32 |
@Override |
|
33 |
public int getDataType() { |
|
34 |
return BufferManager.TYPE_FLOAT; |
|
35 |
} |
|
36 |
|
|
37 |
protected int getDataSize() { |
|
38 |
return 4; |
|
39 |
} |
|
40 |
|
|
41 |
@Override |
|
42 |
public Object get(int row, int column) { |
|
43 |
return getValue(row, column); |
|
44 |
} |
|
45 |
|
|
46 |
@Override |
|
47 |
public void set(int row, int column, Object value) { |
|
48 |
setValue(row, column, (float) value); |
|
49 |
} |
|
50 |
|
|
51 |
@Override |
|
52 |
public void fill(Object value) { |
|
53 |
value = nullValueToNoData(value); |
|
54 |
if(value == null){ |
|
55 |
value = 0; |
|
56 |
} |
|
57 |
|
|
58 |
for(int row=0; row<this.rows; row+=this.rowsPerPage){ |
|
59 |
loadPage(row); |
|
60 |
Arrays.fill(specificData.array(), (float) value); |
|
61 |
} |
|
62 |
} |
|
63 |
|
|
64 |
@Override |
|
65 |
public float getValue(int row, int column) { |
|
66 |
loadPage(row); |
|
67 |
return specificData.get( ((row-firstRowOfPage)*this.columns) + column); |
|
68 |
} |
|
69 |
|
|
70 |
@Override |
|
71 |
public void setValue(int row, int column, float value) { |
|
72 |
loadPage(row); |
|
73 |
specificData.put(((row-firstRowOfPage)*this.columns) + column, value); |
|
74 |
} |
|
75 |
|
|
76 |
@Override |
|
77 |
public float[] createRowBuffer() { |
|
78 |
return new float[getColumns()]; |
|
79 |
} |
|
80 |
|
|
81 |
@Override |
|
82 |
public void fetchRow(int row, Object rowBuffer) { |
|
83 |
loadPage(row); |
|
84 |
float[] source = (float[]) ((java.nio.Buffer)specificData).array(); |
|
85 |
float[] target = (float[]) rowBuffer; |
|
86 |
System.arraycopy(source, (row-firstRowOfPage)*this.columns, target, 0, this.columns); |
|
87 |
} |
|
88 |
|
|
89 |
@Override |
|
90 |
public void putRow(int row, Object rowBuffer) { |
|
91 |
loadPage(row); |
|
92 |
float[] source = (float[]) rowBuffer; |
|
93 |
float[] target = (float[]) ((java.nio.Buffer)specificData).array(); |
|
94 |
System.arraycopy(source, 0, target, (row-firstRowOfPage)*this.columns, this.columns); |
|
95 |
} |
|
96 |
} |
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/DefaultBufferManager.java | ||
---|---|---|
51 | 51 |
} else if(pageManager instanceof BandPageManager ){ |
52 | 52 |
switch (dataType) { |
53 | 53 |
case BufferManager.TYPE_BYTE: |
54 |
// FIXME:PaginatedBandByte.... |
|
55 |
return new MemoryBandByte(rows, columns, noData); |
|
54 |
return new PaginatedBandByte(rows, columns, noData, (BandPageManager) pageManager); |
|
56 | 55 |
case BufferManager.TYPE_SHORT: |
57 |
// FIXME: |
|
58 |
return new MemoryBandShort(rows, columns, noData); |
|
56 |
return new PaginatedBandShort(rows, columns, noData, (BandPageManager) pageManager); |
|
59 | 57 |
case BufferManager.TYPE_INT: |
60 |
// FIXME: |
|
61 |
return new MemoryBandInt(rows, columns, noData); |
|
58 |
return new PaginatedBandInt(rows, columns, noData, (BandPageManager) pageManager); |
|
62 | 59 |
case BufferManager.TYPE_FLOAT: |
63 |
// FIXME: |
|
64 |
return new MemoryBandFloat(rows, columns, noData); |
|
60 |
return new PaginatedBandFloat(rows, columns, noData, (BandPageManager) pageManager); |
|
65 | 61 |
case BufferManager.TYPE_DOUBLE: |
66 |
// FIXME: |
|
67 | 62 |
return new PaginatedBandDouble(rows, columns, noData, (BandPageManager) pageManager); |
68 | 63 |
default: |
69 | 64 |
throw new CreateBandTypeException(dataType); |
70 | 65 |
} |
71 | 66 |
|
72 |
} else if(pageManager instanceof TiledPageManager ){ |
|
73 |
switch (dataType) { |
|
74 |
case BufferManager.TYPE_BYTE: |
|
75 |
// FIXME: TiledBandByte |
|
76 |
return new MemoryBandByte(rows, columns, noData); |
|
77 |
case BufferManager.TYPE_USHORT: |
|
78 |
case BufferManager.TYPE_SHORT: |
|
79 |
// FIXME: |
|
80 |
return new MemoryBandShort(rows, columns, noData); |
|
81 |
case BufferManager.TYPE_INT: |
|
82 |
// FIXME: |
|
83 |
return new MemoryBandInt(rows, columns, noData); |
|
84 |
case BufferManager.TYPE_FLOAT: |
|
85 |
// FIXME: |
|
86 |
return new MemoryBandFloat(rows, columns, noData); |
|
87 |
case BufferManager.TYPE_DOUBLE: |
|
88 |
// FIXME: |
|
89 |
return new MemoryBandDouble(rows, columns, noData); |
|
90 |
default: |
|
91 |
throw new CreateBandTypeException(dataType); |
|
92 |
} |
|
67 |
//FIXME |
|
68 |
// } else if(pageManager instanceof TiledPageManager ){ |
|
69 |
// |
|
70 |
// switch (dataType) { |
|
71 |
// case BufferManager.TYPE_BYTE: |
|
72 |
// // FIXME: TiledBandByte |
|
73 |
// return new TiledBandByte(rows, columns, noData); |
|
74 |
// case BufferManager.TYPE_USHORT: |
|
75 |
// case BufferManager.TYPE_SHORT: |
|
76 |
// // FIXME: |
|
77 |
// return new TiledBandShort(rows, columns, noData); |
|
78 |
// case BufferManager.TYPE_INT: |
|
79 |
// // FIXME: |
|
80 |
// return new TiledBandInt(rows, columns, noData); |
|
81 |
// case BufferManager.TYPE_FLOAT: |
|
82 |
// // FIXME: |
|
83 |
// return new TiledBandFloat(rows, columns, noData); |
|
84 |
// case BufferManager.TYPE_DOUBLE: |
|
85 |
// // FIXME: |
|
86 |
// return new TiledBandDouble(rows, columns, noData); |
|
87 |
// default: |
|
88 |
// throw new CreateBandTypeException(dataType); |
|
89 |
// } |
|
93 | 90 |
} |
94 | 91 |
return null; |
95 | 92 |
} |
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/PaginatedBandInt.java | ||
---|---|---|
1 |
package org.gvsig.raster.lib.buffer.impl; |
|
2 |
|
|
3 |
import java.nio.IntBuffer; |
|
4 |
import java.util.Arrays; |
|
5 |
|
|
6 |
import org.gvsig.raster.lib.buffer.api.Band.BandInt; |
|
7 |
import org.gvsig.raster.lib.buffer.api.BandPageManager; |
|
8 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
|
9 |
import org.gvsig.raster.lib.buffer.api.NoData; |
|
10 |
|
|
11 |
/** |
|
12 |
* @author fdiaz |
|
13 |
* |
|
14 |
*/ |
|
15 |
public class PaginatedBandInt extends AbstractPaginatedBand implements BandInt { |
|
16 |
|
|
17 |
private IntBuffer specificData; |
|
18 |
|
|
19 |
/** |
|
20 |
* @param rows |
|
21 |
* @param columns |
|
22 |
* @param noData |
|
23 |
* @param rowsPerPage |
|
24 |
* @param pageManager |
|
25 |
*/ |
|
26 |
public PaginatedBandInt(int rows, int columns, NoData noData, BandPageManager pageManager) { |
|
27 |
super(rows, columns, noData, pageManager); |
|
28 |
specificData = data.asIntBuffer(); |
|
29 |
} |
|
30 |
|
|
31 |
@Override |
|
32 |
public int getDataType() { |
|
33 |
return BufferManager.TYPE_INT; |
|
34 |
} |
|
35 |
|
|
36 |
protected int getDataSize() { |
|
37 |
return 4; |
|
38 |
} |
|
39 |
|
|
40 |
@Override |
|
41 |
public Object get(int row, int column) { |
|
42 |
return getValue(row, column); |
|
43 |
} |
|
44 |
|
|
45 |
@Override |
|
46 |
public void set(int row, int column, Object value) { |
|
47 |
setValue(row, column, (int) value); |
|
48 |
} |
|
49 |
|
|
50 |
@Override |
|
51 |
public void fill(Object value) { |
|
52 |
value = nullValueToNoData(value); |
|
53 |
if(value == null){ |
|
54 |
value = 0; |
|
55 |
} |
|
56 |
|
|
57 |
for(int row=0; row<this.rows; row+=this.rowsPerPage){ |
|
58 |
loadPage(row); |
|
59 |
Arrays.fill(specificData.array(), (int) value); |
|
60 |
} |
|
61 |
} |
|
62 |
|
|
63 |
@Override |
|
64 |
public int getValue(int row, int column) { |
|
65 |
loadPage(row); |
|
66 |
return specificData.get( ((row-firstRowOfPage)*this.columns) + column); |
|
67 |
} |
|
68 |
|
|
69 |
@Override |
|
70 |
public void setValue(int row, int column, int value) { |
|
71 |
loadPage(row); |
|
72 |
specificData.put(((row-firstRowOfPage)*this.columns) + column, value); |
|
73 |
} |
|
74 |
|
|
75 |
@Override |
|
76 |
public int[] createRowBuffer() { |
|
77 |
return new int[getColumns()]; |
|
78 |
} |
|
79 |
|
|
80 |
@Override |
|
81 |
public void fetchRow(int row, Object rowBuffer) { |
|
82 |
loadPage(row); |
|
83 |
int[] source = (int[]) ((java.nio.Buffer)specificData).array(); |
|
84 |
int[] target = (int[]) rowBuffer; |
|
85 |
System.arraycopy(source, (row-firstRowOfPage)*this.columns, target, 0, this.columns); |
|
86 |
} |
|
87 |
|
|
88 |
@Override |
|
89 |
public void putRow(int row, Object rowBuffer) { |
|
90 |
loadPage(row); |
|
91 |
int[] source = (int[]) rowBuffer; |
|
92 |
int[] target = (int[]) ((java.nio.Buffer)specificData).array(); |
|
93 |
System.arraycopy(source, 0, target, (row-firstRowOfPage)*this.columns, this.columns); |
|
94 |
} |
|
95 |
} |
Also available in: Unified diff