Revision 9700

View differences:

branches/v10+Piloto/libraries/libCq_CMS_praster/src/org/cresques/io/data/RasterBuf.java
671 671
    }
672 672
    
673 673
    /**
674
     * Copia una banda de una imagen desde una posici?n sobre otra en la imagen actual.
675
     *  Si la banda de destino no existe
676
     * se crea nueva. Si la posici?n de la banda de destino est? intercalada entre bandas 
677
     * que ya existen las otras se desplazan hacia abajo, NO se machacan los datos de ninguna.
678
     * Los datos se replican por referencia por lo que al modificar la banda original las
679
     * del resto quedar?n afectadas.
680
     * @param orig. Posici?n de la banda de origen. 
681
     * @param dest. Posici?n de la banda destino
682
     */   
683
    public void copyBand(RasterBuf from, int orig, int dest){
684
    	switch(getDataType()){
685
    	case RasterBuf.TYPE_BYTE: 	if(orig >= byteBuf.length)
686
										return;
687
									addBandByte(dest, from.getBandByte(orig));
688
									break;
689
    	case RasterBuf.TYPE_SHORT: 	if(orig >= shortBuf.length)
690
    									return;
691
    								addBandShort(dest, from.getBandShort(orig));
692
    								break;
693
    	case RasterBuf.TYPE_INT: 	if(orig >= intBuf.length)
694
										return;
695
									addBandInt(dest, from.getBandInt(orig));
696
									break;
697
    	case RasterBuf.TYPE_FLOAT: 	if(orig >= floatBuf.length)
698
										return;
699
									addBandFloat(dest, from.getBandFloat(orig));
700
									break;
701
    	case RasterBuf.TYPE_DOUBLE:	if(orig >= doubleBuf.length)
702
										return;
703
									addBandDouble(dest, from.getBandDouble(orig));
704
									break;
705
    	}
706
    }
707
    /**
674 708
     * Convierte un tipo de dato a cadena
675 709
     * @param type Tipo de dato
676 710
     * @return cadena  que representa el tipo de dato
branches/v10+Piloto/libraries/libCq_CMS_praster/src/org/cresques/px/PxRaster.java
985 985
                        
986 986
            if ((geoFile != null) && geoFile[0] instanceof GdalFile &&
987 987
                    (geoFile[0].getDataType() != DataBuffer.TYPE_BYTE)) {
988
                RasterBuf raster = ((GdalFile) geoFile[0]).getRaster(wImg, hImg, rp);
989
                t2 = new Date().getTime();
988
            	RasterBuf raster = null;
989
            	if (geoFile.length > 1) { // la imagen sale de distintos ficheros
990
            		RasterBuf rasterG=null, rasterB=null;
991
	                raster = ((GdalFile) bandSwitch.getBandR().getGeoRasterFile()).getRaster(wImg, hImg, rp);
992
	                rasterG = ((GdalFile) bandSwitch.getBandG().getGeoRasterFile()).getRaster(wImg, hImg, rp);
993
	                raster.copyBand(rasterG, 0, 1);
994
	                rasterB = ((GdalFile) bandSwitch.getBandB().getGeoRasterFile()).getRaster(wImg, hImg, rp);
995
	                raster.copyBand(rasterB, 0, 2);
996
            	} else { // Toda la imagen est? en el mismo fichero
997
            		raster = ((GdalFile) geoFile[0]).getRaster(wImg, hImg, rp);
998
            	} 
999
            	t2 = new Date().getTime();
990 1000

  
991 1001
                System.out.println("Dibujando PxRaster: " + ((t2 - t1) / 1000D) + ", secs. Filtrando/Renderizando");
992 1002
                t1 = t2;
......
1032 1042
                //TODO:Soluci?n para que no se pinte si hay sharpening. Esto hay que pensarlo mejor
1033 1043
                if (stackManager == null) 
1034 1044
                    stackManager = new RasterFilterStackManager(filterStack);
1035
                if(!filterStack.isActive(stackManager.getTypeFilter("sharpening"))){
1045
                if (!filterStack.isActive(stackManager.getTypeFilter("sharpening"))){
1036 1046
	                geoImage = bandSwitch.getBandR().getGeoRasterFile().updateImage(wImg, hImg, rp, null, 0, 0);
1037 1047
	                geoImage = bandSwitch.getBandG().getGeoRasterFile().updateImage(wImg, hImg, rp, geoImage, 
1038 1048
	                						bandSwitch.getBandG().getBand(), GeoRasterFile.GREEN_BAND);

Also available in: Unified diff