Revision 1676 org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/DefaultRender.java
DefaultRender.java | ||
---|---|---|
351 | 351 |
return; |
352 | 352 |
} |
353 | 353 |
|
354 |
/* |
|
355 |
* (non-Javadoc) |
|
356 |
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#draw(java.awt.Graphics2D, org.cresques.geo.ViewPortData) |
|
357 |
*/ |
|
358 |
public synchronized void draw(Graphics2D g, ViewPortData vp, TaskStatus taskStatus) |
|
354 |
public synchronized Buffer getLastRenderBuffer() |
|
359 | 355 |
throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException { |
356 |
return draw(null, lastViewPortData, null); |
|
357 |
} |
|
358 |
|
|
359 |
public synchronized Buffer draw(Graphics2D g, ViewPortData vp, TaskStatus taskStatus) |
|
360 |
throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException { |
|
360 | 361 |
lastGraphics = g; |
361 | 362 |
lastViewPortData = vp; |
362 | 363 |
|
363 | 364 |
if(util.isOutside(vp.getExtent(), dataStore.getExtent())) { |
364 | 365 |
endReading(); |
365 |
return; |
|
366 |
return null;
|
|
366 | 367 |
} |
367 | 368 |
|
368 | 369 |
Extent adjustedRotedRequest = request(vp, dataStore); |
369 | 370 |
|
370 | 371 |
if ((widthImage <= 0) || (heightImage <= 0)) { |
371 | 372 |
endReading(); |
372 |
return; |
|
373 |
return null;
|
|
373 | 374 |
} |
374 | 375 |
|
375 | 376 |
if (dataStore == null) |
376 |
return; |
|
377 |
return null;
|
|
377 | 378 |
|
378 | 379 |
Buffer buf = null; |
379 | 380 |
double[] step = null; |
... | ... | |
388 | 389 |
} else { |
389 | 390 |
// Asignamos la banda de transparencia si existe esta |
390 | 391 |
RasterQuery query = DefaultRasterManager.getInstance().createQuery(); |
392 |
//query.setReadOnly(true); |
|
391 | 393 |
query.setTaskStatus(taskStatus); |
392 | 394 |
query.setTime(vp.getTime()); |
393 | 395 |
query.setSupersamplingLoadingBuffer(false); // Desactivamos el supersampleo en la carga del buffer. |
... | ... | |
411 | 413 |
init(); |
412 | 414 |
} |
413 | 415 |
|
414 |
drawBufferOnImage(lastGraphics, |
|
415 |
lastViewPortData, |
|
416 |
buf, |
|
417 |
step, |
|
418 |
dataStore.getAffineTransform(), |
|
419 |
adjustedRotedRequest); |
|
416 |
return drawBufferOnImage(lastGraphics,
|
|
417 |
lastViewPortData,
|
|
418 |
buf,
|
|
419 |
step,
|
|
420 |
dataStore.getAffineTransform(),
|
|
421 |
adjustedRotedRequest);
|
|
420 | 422 |
} |
421 | 423 |
|
422 | 424 |
/* |
423 | 425 |
* (non-Javadoc) |
424 | 426 |
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#draw(java.awt.Graphics2D, org.cresques.geo.ViewPortData) |
425 | 427 |
*/ |
426 |
private synchronized void drawBufferOnImage(Graphics2D g, ViewPortData vp, Buffer buf, double[] step, AffineTransform transf, Extent adjustedRotedRequest)
|
|
428 |
private synchronized Buffer drawBufferOnImage(Graphics2D g, ViewPortData vp, Buffer buf, double[] step, AffineTransform transf, Extent adjustedRotedRequest)
|
|
427 | 429 |
throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException { |
428 | 430 |
|
429 | 431 |
grid = bufferPreprocessing(buf, lastTransparency); |
430 | 432 |
|
431 | 433 |
//Buffer filtrado para renderizar |
432 | 434 |
buf = grid.getRasterBuf(); |
435 |
if(g == null) |
|
436 |
return buf; |
|
433 | 437 |
drawer.setBuffer(buf); // Buffer de datos a renderizar |
434 | 438 |
drawer.setSupersamplingOn(step); // Desplazamiento para supersampleo |
435 | 439 |
drawer.setOutputSize((int)Math.round(widthImage), (int)Math.round(heightImage)); // Ancho y alto del buffer |
... | ... | |
448 | 452 |
Point2D lastGraphicOffset = new Point2D.Double(adjustedRotedRequest.getULX(), adjustedRotedRequest.getULY()); |
449 | 453 |
((DefaultViewPortData)vp).mat.transform(lastGraphicOffset, lastGraphicOffset); |
450 | 454 |
g.drawImage(geoImage, (int) Math.round(lastGraphicOffset.getX()), (int) Math.round(lastGraphicOffset.getY()), null); |
451 |
return; |
|
455 |
return buf;
|
|
452 | 456 |
} |
453 | 457 |
|
454 | 458 |
/* |
... | ... | |
485 | 489 |
LoggerFactory.getLogger(getClass()).debug("Transformation error", e); |
486 | 490 |
} |
487 | 491 |
|
488 |
return; |
|
492 |
return buf;
|
|
489 | 493 |
// long t2 = new Date().getTime(); |
490 | 494 |
// System.out.println("Renderizando Raster: " + ((t2 - t1) / 1000D) + ", secs."); |
491 | 495 |
} |
Also available in: Unified diff