Revision 5522

View differences:

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