| 61 |
61 |
import org.gvsig.raster.cache.tile.exception.TileGettingException;
|
| 62 |
62 |
import org.gvsig.raster.cache.tile.provider.TileListener;
|
| 63 |
63 |
import org.gvsig.raster.impl.DefaultRasterManager;
|
|
64 |
import org.gvsig.raster.impl.buffer.DefaultRasterQuery;
|
| 64 |
65 |
import org.gvsig.raster.impl.datastruct.DefaultViewPortData;
|
| 65 |
66 |
import org.gvsig.raster.impl.datastruct.ExtentImpl;
|
| 66 |
67 |
import org.gvsig.raster.impl.grid.GridImpl;
|
| ... | ... | |
| 111 |
112 |
*/
|
| 112 |
113 |
private int[] renderBands = { 0, 1, 2 };
|
| 113 |
114 |
|
| 114 |
|
private ImageDrawerImpl drawer = null;
|
|
115 |
private ImageDrawerImpl drawer = null;
|
| 115 |
116 |
/**
|
| 116 |
117 |
* Ultima transparencia aplicada en la visualizaci�n que es obtenida desde el
|
| 117 |
118 |
* grid
|
| ... | ... | |
| 124 |
125 |
*/
|
| 125 |
126 |
private RasterFilterList filterList = null;
|
| 126 |
127 |
|
| 127 |
|
private Buffer lastRenderBuffer = null;
|
| 128 |
|
|
| 129 |
128 |
/**
|
| 130 |
129 |
* Ancho y alto del objeto Image en una petici�n de dibujado a un raster
|
| 131 |
130 |
* raster
|
| ... | ... | |
| 330 |
329 |
}
|
| 331 |
330 |
|
| 332 |
331 |
if (dataStore != null) {
|
| 333 |
|
if (lastTransparency == null) {
|
| 334 |
|
lastTransparency = dataStore.getTransparency().cloneTransparency();
|
| 335 |
|
lastTransparency.addPropertyListener(this);
|
| 336 |
|
lastTransparency.setTransparencyBand(dataStore.getTransparency().getAlphaBandNumber());
|
| 337 |
|
}
|
|
332 |
if(getLastTransparency().getAlphaBandNumber() == -1)
|
|
333 |
getLastTransparency().setTransparencyBand(dataStore.getTransparency().getAlphaBandNumber());
|
| 338 |
334 |
|
| 339 |
|
lastAlphaBand = lastTransparency.getAlphaBandNumber();
|
|
335 |
lastAlphaBand = getLastTransparency().getAlphaBandNumber();
|
| 340 |
336 |
|
| 341 |
337 |
// Asignamos la banda de transparencia si existe esta
|
| 342 |
338 |
RasterQuery query = DefaultRasterManager.getInstance().createQuery();
|
| ... | ... | |
| 345 |
341 |
query.setSupersamplingLoadingBuffer(false); // Desactivamos el supersampleo en la carga del buffer.
|
| 346 |
342 |
query.setDrawableBands(getRenderBands());
|
| 347 |
343 |
query.setFrameWidth(0);
|
| 348 |
|
query.setAlphaBand(lastTransparency.getAlphaBandNumber());
|
|
344 |
query.setAlphaBand(getLastTransparency().getAlphaBandNumber());
|
| 349 |
345 |
query.setAreaOfInterest(vp.getExtent(),
|
| 350 |
346 |
(int)Math.round(vp.getWidth()),
|
| 351 |
347 |
(int)Math.round(vp.getHeight()), this);
|
| ... | ... | |
| 379 |
375 |
if (dataStore == null)
|
| 380 |
376 |
return;
|
| 381 |
377 |
|
| 382 |
|
//If the transparency hasn't been defined yet then we'll take that from the store
|
| 383 |
|
if (lastTransparency == null) {
|
| 384 |
|
lastTransparency = dataStore.getTransparency().cloneTransparency();
|
| 385 |
|
lastTransparency.addPropertyListener(this);
|
| 386 |
|
}
|
| 387 |
|
|
| 388 |
378 |
Buffer buf = null;
|
| 389 |
379 |
double[] step = null;
|
| 390 |
380 |
|
| ... | ... | |
| 394 |
384 |
(int)Math.round(heightImage),
|
| 395 |
385 |
vp.getTime(),
|
| 396 |
386 |
renderBands,
|
| 397 |
|
lastTransparency);
|
|
387 |
getLastTransparency());
|
| 398 |
388 |
} else {
|
| 399 |
389 |
// Asignamos la banda de transparencia si existe esta
|
| 400 |
390 |
RasterQuery query = DefaultRasterManager.getInstance().createQuery();
|
| ... | ... | |
| 403 |
393 |
query.setSupersamplingLoadingBuffer(false); // Desactivamos el supersampleo en la carga del buffer.
|
| 404 |
394 |
query.setAreaOfInterest(adjustedRotedRequest, (int)Math.round(widthImage), (int)Math.round(heightImage));
|
| 405 |
395 |
|
| 406 |
|
if (lastTransparency.getAlphaBandNumber() != -1) {
|
| 407 |
|
query.setDrawableBands(new int[] { lastTransparency.getAlphaBandNumber()});
|
| 408 |
|
lastTransparency.setAlphaBand(dataStore.query(query));
|
|
396 |
if (getLastTransparency().getAlphaBandNumber() != -1) {
|
|
397 |
query.setDrawableBands(new int[] { getLastTransparency().getAlphaBandNumber()});
|
|
398 |
getLastTransparency().setAlphaBand(dataStore.query(query));
|
| 409 |
399 |
}
|
| 410 |
|
lastAlphaBand = lastTransparency.getAlphaBandNumber();
|
|
400 |
lastAlphaBand = getLastTransparency().getAlphaBandNumber();
|
| 411 |
401 |
|
| 412 |
402 |
query.setAreaOfInterest(adjustedRotedRequest, (int)Math.round(widthImage), (int)Math.round(heightImage));
|
| 413 |
403 |
query.setDrawableBands(getRenderBands());
|
| 414 |
404 |
buf = dataStore.query(query);
|
|
405 |
((DefaultRasterQuery)query).setBuffer(null);
|
| 415 |
406 |
query.setSupersamplingLoadingBuffer(true);
|
| 416 |
407 |
step = dataStore.getStep();
|
| 417 |
408 |
}
|
| ... | ... | |
| 437 |
428 |
|
| 438 |
429 |
grid = bufferPreprocessing(buf, lastTransparency);
|
| 439 |
430 |
|
| 440 |
|
if(lastRenderBuffer != null)
|
| 441 |
|
lastRenderBuffer.dispose();
|
| 442 |
431 |
//Buffer filtrado para renderizar
|
| 443 |
|
lastRenderBuffer = grid.getRasterBuf();
|
| 444 |
|
drawer.setBuffer(lastRenderBuffer); // Buffer de datos a renderizar
|
|
432 |
buf = grid.getRasterBuf();
|
|
433 |
drawer.setBuffer(buf); // Buffer de datos a renderizar
|
| 445 |
434 |
drawer.setSupersamplingOn(step); // Desplazamiento para supersampleo
|
| 446 |
435 |
drawer.setOutputSize((int)Math.round(widthImage), (int)Math.round(heightImage)); // Ancho y alto del buffer
|
| 447 |
436 |
drawer.setLastTransparency(getLastTransparency());
|
| 448 |
437 |
Image geoImage = drawer.drawBufferOverImageObject(); // Acci�n de renderizado
|
|
438 |
drawer.dispose();
|
| 449 |
439 |
|
| 450 |
440 |
// Borramos el buffer de transparencia para que siempre se tenga que regenerar.
|
| 451 |
|
lastTransparency.setAlphaBand(null);
|
|
441 |
getLastTransparency().setAlphaBand(null);
|
| 452 |
442 |
|
| 453 |
443 |
//En el caso de no tenga rotaci�n y el tama�o de pixel sea positivo en X y negativo en Y no aplicamos ninguna
|
| 454 |
444 |
//transformaci�n. Esto no es necesario hacerlo, sin ello se visualiza igual. Unicamente se hace porque de esta
|
| ... | ... | |
| 574 |
564 |
} catch (ProcessInterruptedException e2) {
|
| 575 |
565 |
return;
|
| 576 |
566 |
}
|
| 577 |
|
|
|
567 |
d.dispose();
|
|
568 |
|
| 578 |
569 |
lastTransparency.setAlphaBand(null);
|
| 579 |
570 |
|
| 580 |
571 |
AffineTransform at = new AffineTransform();
|
| ... | ... | |
| 853 |
844 |
return out;
|
| 854 |
845 |
}
|
| 855 |
846 |
|
| 856 |
|
/*
|
| 857 |
|
* (non-Javadoc)
|
| 858 |
|
* @see org.gvsig.fmap.dal.coverage.grid.Render#getLastTransparency()
|
| 859 |
|
*/
|
| 860 |
847 |
public Transparency getLastTransparency() {
|
|
848 |
//If the transparency hasn't been defined yet then we'll take that from the store
|
|
849 |
if (lastTransparency == null) {
|
|
850 |
lastTransparency = dataStore.getTransparency().cloneTransparency();
|
|
851 |
lastTransparency.addPropertyListener(this);
|
|
852 |
}
|
| 861 |
853 |
return lastTransparency;
|
| 862 |
854 |
}
|
| 863 |
855 |
|
| ... | ... | |
| 889 |
881 |
|
| 890 |
882 |
/*
|
| 891 |
883 |
* (non-Javadoc)
|
| 892 |
|
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#getLastRenderBuffer()
|
| 893 |
|
*/
|
| 894 |
|
public Buffer getLastRenderBuffer() {
|
| 895 |
|
return this.lastRenderBuffer;
|
| 896 |
|
}
|
| 897 |
|
|
| 898 |
|
/*
|
| 899 |
|
* (non-Javadoc)
|
| 900 |
|
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#setLastRenderBuffer(org.gvsig.fmap.dal.coverage.dataset.Buffer)
|
| 901 |
|
*/
|
| 902 |
|
public void setLastRenderBuffer(Buffer buf) {
|
| 903 |
|
this.lastRenderBuffer = buf;
|
| 904 |
|
}
|
| 905 |
|
|
| 906 |
|
/*
|
| 907 |
|
* (non-Javadoc)
|
| 908 |
884 |
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#setFilterList(org.gvsig.fmap.dal.coverage.grid.RasterFilterList)
|
| 909 |
885 |
*/
|
| 910 |
886 |
public void setFilterList(RasterFilterList filterList) {
|
| ... | ... | |
| 1007 |
983 |
grid.dispose();
|
| 1008 |
984 |
if (getFilterList() != null)
|
| 1009 |
985 |
getFilterList().dispose();
|
| 1010 |
|
if (lastRenderBuffer != null)
|
| 1011 |
|
lastRenderBuffer.dispose();
|
| 1012 |
986 |
try {
|
| 1013 |
987 |
finalize();
|
| 1014 |
988 |
} catch (Throwable e) {
|
| ... | ... | |
| 1026 |
1000 |
drawer = null;
|
| 1027 |
1001 |
lastTransparency = null;
|
| 1028 |
1002 |
filterList = null;
|
| 1029 |
|
lastRenderBuffer = null;
|
| 1030 |
1003 |
ulPxRequest = null;
|
| 1031 |
1004 |
lrPxRequest = null;
|
| 1032 |
1005 |
lastGraphics = null;
|