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 / DefaultBufferManager.java @ 5515

History | View | Annotate | Download (5.56 KB)

1
package org.gvsig.raster.lib.buffer.impl;
2

    
3
import java.io.File;
4

    
5
import org.cresques.cts.IProjection;
6

    
7
import org.gvsig.fmap.geom.primitive.Envelope;
8
import org.gvsig.raster.lib.buffer.api.Band;
9
import org.gvsig.raster.lib.buffer.api.BandPageManager;
10
import org.gvsig.raster.lib.buffer.api.Buffer;
11
import org.gvsig.raster.lib.buffer.api.BufferManager;
12
import org.gvsig.raster.lib.buffer.api.NoData;
13
import org.gvsig.raster.lib.buffer.api.PageManager;
14
import org.gvsig.raster.lib.buffer.api.TiledPageManager;
15
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
16
import org.gvsig.raster.lib.buffer.impl.exceptions.CreateBandTypeException;
17
import org.gvsig.raster.lib.buffer.impl.exceptions.CreateBufferException;
18

    
19
/**
20
 * @author fdiaz
21
 *
22
 */
23
public class DefaultBufferManager implements BufferManager {
24

    
25
    @Override
26
    public NoData createNoData(Number value, Number defaultValue) {
27
        NoData noData = new DefaultNoData(defaultValue);
28
        noData.setValue(value);
29
        return noData;
30
    }
31

    
32
    @Override
33
    public Band createBand(int dataType, int rows, int columns, NoData noData,
34
        PageManager pageManager) throws CreateBandTypeException {
35
        if (pageManager == null) {
36
            switch (dataType) {
37
            case BufferManager.TYPE_BYTE:
38
                return new DefaultBandByte(rows, columns, noData);
39
            case BufferManager.TYPE_USHORT:
40
            case BufferManager.TYPE_SHORT:
41
                return new DefaultBandShort(rows, columns, noData);
42
            case BufferManager.TYPE_INT:
43
                return new DefaultBandInt(rows, columns, noData);
44
            case BufferManager.TYPE_FLOAT:
45
                return new DefaultBandFloat(rows, columns, noData);
46
            case BufferManager.TYPE_DOUBLE:
47
                return new DefaultBandDouble(rows, columns, noData);
48
            default:
49
                throw new CreateBandTypeException(dataType);
50
            }
51
        } else if(pageManager instanceof BandPageManager ){
52
            switch (dataType) {
53
            case BufferManager.TYPE_BYTE:
54
                // FIXME:PaginatedBandByte....
55
                return new DefaultBandByte(rows, columns, noData);
56
            case BufferManager.TYPE_SHORT:
57
                // FIXME:
58
                return new DefaultBandShort(rows, columns, noData);
59
            case BufferManager.TYPE_INT:
60
                // FIXME:
61
                return new DefaultBandInt(rows, columns, noData);
62
            case BufferManager.TYPE_FLOAT:
63
                // FIXME:
64
                return new DefaultBandFloat(rows, columns, noData);
65
            case BufferManager.TYPE_DOUBLE:
66
                // FIXME:
67
                return new PaginatedBandDouble(rows, columns, noData, (BandPageManager) pageManager);
68
            default:
69
                throw new CreateBandTypeException(dataType);
70
            }
71

    
72
        } else if(pageManager instanceof TiledPageManager ){
73
            switch (dataType) {
74
            case BufferManager.TYPE_BYTE:
75
                // FIXME: TiledBandByte
76
                return new DefaultBandByte(rows, columns, noData);
77
            case BufferManager.TYPE_USHORT:
78
            case BufferManager.TYPE_SHORT:
79
                // FIXME:
80
                return new DefaultBandShort(rows, columns, noData);
81
            case BufferManager.TYPE_INT:
82
                // FIXME:
83
                return new DefaultBandInt(rows, columns, noData);
84
            case BufferManager.TYPE_FLOAT:
85
                // FIXME:
86
                return new DefaultBandFloat(rows, columns, noData);
87
            case BufferManager.TYPE_DOUBLE:
88
                // FIXME:
89
                return new DefaultBandDouble(rows, columns, noData);
90
            default:
91
                throw new CreateBandTypeException(dataType);
92
            }
93

    
94
        }
95
    }
96

    
97
    @Override
98
    public Buffer createBuffer(int rows, int columns, int[] bandDataTypes, IProjection projection)
99
        throws BufferException {
100
        return new DefaultBuffer(rows, columns, bandDataTypes, null, projection, null, null);
101
    }
102

    
103
    @Override
104
    public Buffer createBuffer(int rows, int columns, int[] bandDataTypes, NoData[] bandNoData,
105
        IProjection projection) throws CreateBufferException {
106
        return new DefaultBuffer(rows, columns, bandDataTypes, bandNoData, projection, null, null);
107
    }
108

    
109
    @Override
110
    public Buffer createBuffer(int rows, int columns, int[] bandDataTypes, NoData[] bandNoData,
111
        IProjection projection, Envelope envelope) throws BufferException {
112
        return new DefaultBuffer(rows, columns, bandDataTypes, bandNoData, projection, envelope,
113
            null);
114
    }
115

    
116
    @Override
117
    public Buffer createBuffer(int rows, int columns, int[] bandDataTypes, NoData[] bandNoData,
118
        IProjection projection, Envelope envelope, PageManager pageManager)
119
        throws BufferException {
120
        return new DefaultBuffer(rows, columns, bandDataTypes, bandNoData, projection, envelope,
121
            pageManager);
122
    }
123

    
124
    @Override
125
    public BandPageManager createSimpleBandPageManager(File file, int rows, int columns,
126
        int dataType) {
127
        // TODO Auto-generated method stub
128
        return null;
129
    }
130

    
131
    public int getDataTypeSize(int dataType){
132
        switch (dataType) {
133
        case BufferManager.TYPE_BYTE:
134
            return 1;
135
        case BufferManager.TYPE_SHORT:
136
            return 2;
137
        case BufferManager.TYPE_INT:
138
            return 4;
139
        case BufferManager.TYPE_FLOAT:
140
            return 4;
141
        case BufferManager.TYPE_DOUBLE:
142
            return 8;
143
        default:
144
            throw new IllegalArgumentException("Data Type "+dataType+" not supported.");
145
        }
146

    
147
    }
148
}