Revision 27361 trunk/libraries/libRaster/src/org/gvsig/raster/buffer/WriterBufferServer.java

View differences:

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