Revision 5059 trunk/libraries/libCq CMS for java.old/src/org/cresques/io/EcwFile.java

View differences:

EcwFile.java
176 176
    
177 177
    private void setFileView(int numBands, int [] bandList, ChunkFrame f)
178 178
    	throws JNCSFileNotOpenException, JNCSInvalidSetViewException {
179

  
179
    	System.out.println(".===>"+bandList+" "+f.v.minX()+" "+f.v.maxY()+" "+f.v.maxX()+" "+f.v.minY()+" "+f.width+" "+f.height);
180 180
        file.setView(file.numBands, bandList, f.v.minX(), f.v.maxY(), f.v.maxX(), f.v.minY(), f.width, f.height);
181 181
    }
182 182

  
......
868 868
        double offsetY = Math.abs(currentViewY - ((int)currentViewY));
869 869
        
870 870
        int xSrc, ySrc;
871
        double scaleW = (double)((double)(image.getWidth(null) - 2) / (double)w);
872
        double scaleH = (double)((double)(image.getHeight(null) - 2) / (double)h);
871
        int decr = 2;
872

  
873
        if(v.minX() == extent.minX() || v.maxX() == extent.maxX() || v.minY() == extent.minY() || v.maxY() == extent.maxY()){
874
        	decr = 0;
875
        	offsetX = offsetY = 0;
876
        }
877

  
878
        double scaleW = (double)((double)(image.getWidth(null) - decr) / (double)w);
879
        double scaleH = (double)((double)(image.getHeight(null) - decr) / (double)h);
873 880
        for (int y1 = 0; y1 < h; y1++){
874
        	ySrc = (int) ((y1 * scaleH) + offsetY);
875
            for (int x1 = 0; x1 < w; x1++) {
876
               xSrc = (int) ((x1 * scaleW) + offsetX);
877
               try {
878
                     ((BufferedImage) buffImg).setRGB(x1, y1, ((BufferedImage)image).getRGB(xSrc, ySrc));
879
               } catch (java.lang.ArrayIndexOutOfBoundsException e) {
880
               }
881
               
882
          }
881
        ySrc = (int) ((y1 * scaleH) + offsetY);
882
        	for (int x1 = 0; x1 < w; x1++){
883
        		xSrc = (int) ((x1 * scaleW) + offsetX);
884
        		try {
885
        			((BufferedImage) buffImg).setRGB(x1, y1, ((BufferedImage)image).getRGB(xSrc, ySrc));
886
        		} catch (java.lang.ArrayIndexOutOfBoundsException e) {
887
        		}
888
        	}
883 889
        }
890
        
884 891
        return buffImg;
885 892
    }
886 893

  
......
1027 1034
                frames = new ChunkFrame[numCol * numRow];
1028 1035
                int nPixelsX = (int)Math.ceil(Math.abs(currentViewMaxX - currentViewMinX));
1029 1036
                int nPixelsY = (int)Math.ceil(Math.abs(currentViewMaxY - currentViewMinY));
1030
                f = frames[0] = new ChunkFrame(v, nPixelsX + 1, nPixelsY + 1);
1031

  
1037
                
1038
                if(v.minX() == extent.minX() || v.maxX() == extent.maxX() || v.minY() == extent.minY() || v.maxY() == extent.maxY()){
1039
                	f = frames[0] = new ChunkFrame(v, nPixelsX, nPixelsY);
1040
                	f.v = new Extent(v);
1041
                }else{
1042
                	f = frames[0] = new ChunkFrame(v, nPixelsX + 1, nPixelsY + 1);
1043
                	double pointEndWcX = v.minX() + (((nPixelsX + 1) * Math.abs(v.maxX() - v.minX())) / nPixelsX);
1044
                	double pointEndWcY = v.maxY() - (((nPixelsY + 1) * Math.abs(v.maxY() - v.minY())) / nPixelsY);
1045
                	f.v = new Extent(v.minX(), v.maxY(), pointEndWcX, pointEndWcY);
1046
                }
1047
                
1032 1048
                f.pos = new Point(0, 0);
1033 1049
                f.mustResize = true;
1034
                //f.v = new Extent(v);
1035
                double pointEndWcX = v.minX() + (((nPixelsX + 1) * Math.abs(v.maxX() - v.minX())) / nPixelsX);
1036
                double pointEndWcY = v.minY() + (((nPixelsY + 1) * Math.abs(v.maxY() - v.minY())) / nPixelsY);
1037
                f.v = new Extent(v.minX(), v.minY(), pointEndWcX, pointEndWcY);
1038 1050
            } else {
1039 1051
                // Calcula cada chunk
1040 1052
                double stepx = ((double) ptMax.x - ptMin.x) / sz.getWidth();
......
1061 1073
                        int y2 = y1 - (int) (f.height * stepy); //ptMin.y;
1062 1074
                        JNCSWorldPoint pt1 = file.convertDatasetToWorld(x1, y1);
1063 1075
                        JNCSWorldPoint pt2 = file.convertDatasetToWorld(x2, y2);
1076
                        
1064 1077
                        f.v = new Extent(pt1.x, pt1.y, pt2.x, pt2.y); // Hay que calcularlo
1065 1078

  
1066 1079
                        /*System.out.println(" View DataSet = ("+x1+","+y1+","+x2+","+y2+")");

Also available in: Unified diff