Revision 1678 org.gvsig.raster.gdal/trunk/org.gvsig.raster.gdal/org.gvsig.raster.gdal.io/src/main/java/org/gvsig/raster/gdal/io/GdalNative.java

View differences:

GdalNative.java
1064 1064
			if(lastblock > 0)
1065 1065
				nBlocks ++;
1066 1066
			int initYSrc = inputWindow[1];
1067
			int stepYSrc = (buf.getBlockHeight() * inputWindow[3]) / buf.getHeight();
1068
			int lastBlockYSrc = (lastblock * inputWindow[3]) / buf.getHeight();
1067 1069
			int initYBuffer = 0;
1068 1070
			for (int i = 0; i < nBlocks; i++) {
1069 1071
				if(lastblock > 0 && i == (nBlocks - 1)) {
1070 1072
					int[] newStepBuffer = new int[]{0, initYBuffer, stepBuffer[2], initYBuffer + lastblock};
1073
					int[] newWindow = new int[]{inputWindow[0], initYSrc, inputWindow[2], lastBlockYSrc};
1071 1074
					readData(buf, 
1072 1075
							bandList, 
1073
							new int[]{inputWindow[0], initYSrc, inputWindow[2], lastblock}, 
1076
							newWindow, 
1074 1077
							bufWidth, lastblock, 0, 0, newStepBuffer);
1075 1078
				} else {
1076 1079
					int[] newStepBuffer = new int[]{0, initYBuffer, stepBuffer[2], initYBuffer + buf.getBlockHeight()};
1080
					int[] newWindow = new int[]{inputWindow[0], initYSrc, inputWindow[2], stepYSrc};
1077 1081
					readData(buf, 
1078 1082
							bandList, 
1079
							new int[]{inputWindow[0], initYSrc, inputWindow[2], buf.getBlockHeight()}, 
1083
							newWindow, 
1080 1084
							bufWidth, buf.getBlockHeight(), 0, 0, newStepBuffer);
1081
					initYSrc += buf.getBlockHeight();
1085
					initYSrc += stepYSrc;
1082 1086
					initYBuffer += buf.getBlockHeight();
1083 1087
				}
1084 1088
			}

Also available in: Unified diff