Revision 6318

View differences:

org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/BufferInterpolation.java
10 10
import org.gvsig.raster.lib.buffer.api.BufferManager;
11 11
import org.gvsig.tools.ToolsLocator;
12 12
import org.gvsig.tools.task.SimpleTaskStatus;
13

  
13 14
import org.slf4j.Logger;
14 15
import org.slf4j.LoggerFactory;
15 16

  
......
62 63
                Band sourceBand = source.getBand(iBand);
63 64
                Band targetBand = target.getBand(iBand);
64 65
                if (rows <= source.getRows()) { // submuestreo
66
                    int previousTargetRow=-1;
67
                    int previousTargetColumn=-1;
65 68
                    for (int iRow = 0; iRow < source.getRows(); iRow++) {
66
                        for (int iCol = 0; iCol < source.getColumns(); iCol++) {
67
                            status.setCurValue(count++);
68
                            if (status.isCancelled()) {
69
                                status.abort();
70
                                return;
69
                        int targetRow = (int) (iRow * stepY);
70
                        if (targetRow != previousTargetRow) {
71
                            for (int iCol = 0; iCol < source.getColumns(); iCol++) {
72
                                status.setCurValue(count++);
73
                                if (status.isCancelled()) {
74
                                    status.abort();
75
                                    return;
76
                                }
77
                                int targetColumn = (int) (iCol * stepX);
78
                                if (targetColumn != previousTargetColumn) {
79
                                    targetBand.set(targetRow, targetColumn, sourceBand.get(iRow, iCol));
80
                                    previousTargetRow = targetRow;
81
                                    previousTargetColumn = targetColumn;
82
                                }
71 83
                            }
72
                            targetBand.set((int) (iRow * stepY), (int) (iCol * stepX), sourceBand.get(iRow, iCol));
84
                        } else {
85
                            count += source.getColumns();
86
                            status.setCurValue(count);
73 87
                        }
74 88
                    }
75 89
                } else { // supermuestreo
......
80 94
                                status.abort();
81 95
                                return;
82 96
                            }
83
                            targetBand.set(iRow, iCol, sourceBand.get((int) (iRow / stepY), (int) (iCol / stepX)));
97
                            int sourceRow = (int) (iRow / stepY);
98
                            int sourceColumn = (int) (iCol / stepX);
99
                            targetBand.set(iRow, iCol, sourceBand.get(sourceRow, sourceColumn));
84 100
                        }
85 101
                    }
86 102
                }
87

  
88 103
            }
89 104

  
90 105
            if (isMyStatus) {

Also available in: Unified diff