Revision 27361 trunk/libraries/libRaster/src/org/gvsig/raster/buffer/WriterBufferServer.java
WriterBufferServer.java | ||
---|---|---|
20 | 20 |
|
21 | 21 |
import org.gvsig.raster.dataset.IBuffer; |
22 | 22 |
import org.gvsig.raster.dataset.IDataWriter; |
23 |
import org.gvsig.raster.process.RasterTask; |
|
24 |
import org.gvsig.raster.process.RasterTaskQueue; |
|
23 | 25 |
/** |
24 | 26 |
* <code>WriterBufferServer</code> sirve los datos desde un IBuffer para el |
25 | 27 |
* driver de escritura. El driver de escritura que va a volcar un |
... | ... | |
106 | 108 |
* (non-Javadoc) |
107 | 109 |
* @see org.gvsig.raster.dataset.IDataWriter#readByteData(int, int) |
108 | 110 |
*/ |
109 |
public byte[][] readByteData(int sizeX, int sizeY) { |
|
111 |
public byte[][] readByteData(int sizeX, int sizeY) throws InterruptedException { |
|
112 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
110 | 113 |
initRead(sizeY); |
111 | 114 |
percent += increment; |
112 | 115 |
int len = buffer.getWidth() * sizeY; |
... | ... | |
118 | 121 |
b = new byte[nbands][len]; |
119 | 122 |
if(nBand < 0) { |
120 | 123 |
for (int iBand = 0; iBand < nbands; iBand++) |
121 |
for (int j = row; j < (row + sizeY); j++) |
|
124 |
for (int j = row; j < (row + sizeY); j++) {
|
|
122 | 125 |
for (int i = 0; i < buffer.getWidth(); i++) |
123 | 126 |
b[iBand][(j % block) * buffer.getWidth() + i] = buffer.getElemByte(j, i, iBand); |
127 |
if(task.getEvent() != null) |
|
128 |
task.manageEvent(task.getEvent()); |
|
129 |
} |
|
124 | 130 |
} else { |
125 |
for (int j = row; j < (row + sizeY); j++) |
|
131 |
for (int j = row; j < (row + sizeY); j++) {
|
|
126 | 132 |
for (int i = 0; i < buffer.getWidth(); i++) |
127 | 133 |
b[0][(j % block) * buffer.getWidth() + i] = buffer.getElemByte(j, i, nBand); |
134 |
if(task.getEvent() != null) |
|
135 |
task.manageEvent(task.getEvent()); |
|
136 |
} |
|
128 | 137 |
} |
129 | 138 |
if (alphaBuffer != null) { |
130 |
for (int j = row; j < (row + sizeY); j++) |
|
131 |
for (int i = 0; i < alphaBuffer.getWidth(); i++) {
|
|
139 |
for (int j = row; j < (row + sizeY); j++) {
|
|
140 |
for (int i = 0; i < alphaBuffer.getWidth(); i++) |
|
132 | 141 |
b[nbands][(j % block) * alphaBuffer.getWidth() + i] = alphaBuffer.getElemByte(j, i, 0); |
133 |
} |
|
142 |
if(task.getEvent() != null) |
|
143 |
task.manageEvent(task.getEvent()); |
|
144 |
} |
|
134 | 145 |
} |
135 | 146 |
row += sizeY; |
136 | 147 |
return b; |
... | ... | |
140 | 151 |
* (non-Javadoc) |
141 | 152 |
* @see org.gvsig.raster.dataset.IDataWriter#readShortData(int, int) |
142 | 153 |
*/ |
143 |
public short[][] readShortData(int sizeX, int sizeY) { |
|
154 |
public short[][] readShortData(int sizeX, int sizeY) throws InterruptedException { |
|
155 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
144 | 156 |
initRead(sizeY); |
145 | 157 |
percent += increment; |
146 | 158 |
int len = buffer.getWidth() * sizeY; |
... | ... | |
148 | 160 |
short[][] b = new short[nbands][len]; |
149 | 161 |
if(nBand < 0) { |
150 | 162 |
for (int iBand = 0; iBand < nbands; iBand++) |
151 |
for (int j = row; j < (row + sizeY); j++) |
|
163 |
for (int j = row; j < (row + sizeY); j++) {
|
|
152 | 164 |
for (int i = 0; i < buffer.getWidth(); i++) |
153 | 165 |
b[iBand][(j % block) * buffer.getWidth() + i] = buffer.getElemShort(j, i, iBand); |
166 |
if(task.getEvent() != null) |
|
167 |
task.manageEvent(task.getEvent()); |
|
168 |
} |
|
154 | 169 |
} else { |
155 |
for (int j = row; j < (row + sizeY); j++) |
|
170 |
for (int j = row; j < (row + sizeY); j++) {
|
|
156 | 171 |
for (int i = 0; i < buffer.getWidth(); i++) |
157 | 172 |
b[0][(j % block) * buffer.getWidth() + i] = buffer.getElemShort(j, i, nBand); |
173 |
if(task.getEvent() != null) |
|
174 |
task.manageEvent(task.getEvent()); |
|
175 |
} |
|
158 | 176 |
} |
159 | 177 |
row += sizeY; |
160 | 178 |
return b; |
... | ... | |
164 | 182 |
* (non-Javadoc) |
165 | 183 |
* @see org.gvsig.raster.dataset.IDataWriter#readIntData(int, int) |
166 | 184 |
*/ |
167 |
public int[][] readIntData(int sizeX, int sizeY) { |
|
185 |
public int[][] readIntData(int sizeX, int sizeY) throws InterruptedException { |
|
186 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
168 | 187 |
initRead(sizeY); |
169 | 188 |
percent += increment; |
170 | 189 |
int len = buffer.getWidth() * sizeY; |
... | ... | |
172 | 191 |
int[][] b = new int[nbands][len]; |
173 | 192 |
if(nBand < 0) { |
174 | 193 |
for (int iBand = 0; iBand < buffer.getBandCount(); iBand++) |
175 |
for (int j = row; j < (row + sizeY); j++) |
|
194 |
for (int j = row; j < (row + sizeY); j++) {
|
|
176 | 195 |
for (int i = 0; i < buffer.getWidth(); i++) |
177 | 196 |
b[iBand][(j % block) * buffer.getWidth() + i] = buffer.getElemInt(j, i, iBand); |
197 |
if(task.getEvent() != null) |
|
198 |
task.manageEvent(task.getEvent()); |
|
199 |
} |
|
178 | 200 |
} else { |
179 |
for (int j = row; j < (row + sizeY); j++) |
|
201 |
for (int j = row; j < (row + sizeY); j++) {
|
|
180 | 202 |
for (int i = 0; i < buffer.getWidth(); i++) |
181 | 203 |
b[0][(j % block) * buffer.getWidth() + i] = buffer.getElemInt(j, i, nBand); |
204 |
if(task.getEvent() != null) |
|
205 |
task.manageEvent(task.getEvent()); |
|
206 |
} |
|
182 | 207 |
} |
183 | 208 |
row += sizeY; |
184 | 209 |
return b; |
... | ... | |
188 | 213 |
* (non-Javadoc) |
189 | 214 |
* @see org.gvsig.raster.dataset.IDataWriter#readFloatData(int, int) |
190 | 215 |
*/ |
191 |
public float[][] readFloatData(int sizeX, int sizeY) { |
|
216 |
public float[][] readFloatData(int sizeX, int sizeY) throws InterruptedException { |
|
217 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
192 | 218 |
initRead(sizeY); |
193 | 219 |
percent += increment; |
194 | 220 |
int len = buffer.getWidth() * sizeY; |
... | ... | |
200 | 226 |
b = new float[nbands][len]; |
201 | 227 |
if(nBand < 0) { |
202 | 228 |
for (int iBand = 0; iBand < buffer.getBandCount(); iBand++) |
203 |
for (int j = row; j < (row + sizeY); j++) |
|
229 |
for (int j = row; j < (row + sizeY); j++) {
|
|
204 | 230 |
for (int i = 0; i < buffer.getWidth(); i++) |
205 | 231 |
b[iBand][(j % block) * buffer.getWidth() + i] = buffer.getElemFloat(j, i, iBand); |
232 |
if(task.getEvent() != null) |
|
233 |
task.manageEvent(task.getEvent()); |
|
234 |
} |
|
206 | 235 |
} else { |
207 |
for (int j = row; j < (row + sizeY); j++) |
|
236 |
for (int j = row; j < (row + sizeY); j++) {
|
|
208 | 237 |
for (int i = 0; i < buffer.getWidth(); i++) |
209 | 238 |
b[0][(j % block) * buffer.getWidth() + i] = buffer.getElemFloat(j, i, nBand); |
239 |
if(task.getEvent() != null) |
|
240 |
task.manageEvent(task.getEvent()); |
|
241 |
} |
|
210 | 242 |
} |
211 | 243 |
|
212 | 244 |
if (alphaBuffer != null) { |
213 |
for (int j = row; j < (row + sizeY); j++) |
|
214 |
for (int i = 0; i < alphaBuffer.getWidth(); i++) {
|
|
245 |
for (int j = row; j < (row + sizeY); j++) {
|
|
246 |
for (int i = 0; i < alphaBuffer.getWidth(); i++) |
|
215 | 247 |
b[nbands][(j % block) * alphaBuffer.getWidth() + i] = alphaBuffer.getElemByte(j, i, 0); |
216 |
} |
|
248 |
if(task.getEvent() != null) |
|
249 |
task.manageEvent(task.getEvent()); |
|
250 |
} |
|
217 | 251 |
} |
218 | 252 |
|
219 | 253 |
row += sizeY; |
... | ... | |
224 | 258 |
* (non-Javadoc) |
225 | 259 |
* @see org.gvsig.raster.dataset.IDataWriter#readDoubleData(int, int) |
226 | 260 |
*/ |
227 |
public double[][] readDoubleData(int sizeX, int sizeY) { |
|
261 |
public double[][] readDoubleData(int sizeX, int sizeY) throws InterruptedException { |
|
262 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().toString()); |
|
228 | 263 |
initRead(sizeY); |
229 | 264 |
percent += increment; |
230 | 265 |
int len = buffer.getWidth() * sizeY; |
... | ... | |
232 | 267 |
double[][] b = new double[nbands][len]; |
233 | 268 |
if(nBand < 0) { |
234 | 269 |
for (int iBand = 0; iBand < buffer.getBandCount(); iBand++) |
235 |
for (int j = row; j < (row + sizeY); j++) |
|
270 |
for (int j = row; j < (row + sizeY); j++) {
|
|
236 | 271 |
for (int i = 0; i < buffer.getWidth(); i++) |
237 | 272 |
b[iBand][(j % block) * buffer.getWidth() + i] = buffer.getElemDouble(j, i, iBand); |
273 |
if(task.getEvent() != null) |
|
274 |
task.manageEvent(task.getEvent()); |
|
275 |
} |
|
238 | 276 |
} else { |
239 |
for (int j = row; j < (row + sizeY); j++) |
|
277 |
for (int j = row; j < (row + sizeY); j++) {
|
|
240 | 278 |
for (int i = 0; i < buffer.getWidth(); i++) |
241 | 279 |
b[0][(j % block) * buffer.getWidth() + i] = buffer.getElemDouble(j, i, nBand); |
280 |
if(task.getEvent() != null) |
|
281 |
task.manageEvent(task.getEvent()); |
|
282 |
} |
|
242 | 283 |
} |
243 | 284 |
row += sizeY; |
244 | 285 |
return b; |
Also available in: Unified diff