Revision 5059 trunk/libraries/libCq CMS for java.old/src/org/cresques/io/EcwFile.java
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