/* 140 */ int tpad = this.interp.getTopPadding();
/* 141 */ bpad = this.interp.getBottomPadding();
/* */ } else {
/* 143 */ lpad = rpad = tpad = bpad = 0;
/* */ }
/* */ RandomIter iter;
/* */ int minX;
/* */ int maxX;
/* */ int minY;
/* */ int maxY;
/* */ RandomIter iter;
/* 148 */ if (this.extender != null) {
/* 149 */ int minX = src.getMinX();
/* 150 */ int maxX = src.getMaxX();
/* 151 */ int minY = src.getMinY();
/* 152 */ int maxY = src.getMaxY();
/* 153 */ Rectangle bounds = new Rectangle(src.getMinX() - lpad, src.getMinY() - tpad, src.getWidth() + lpad + rpad, src.getHeight() + tpad + bpad);
/* */
/* 157 */ iter = RandomIterFactory.create(src.getExtendedData(bounds, this.extender), bounds);
/* */ }
/* */ else
/* */ {
/* 161 */ minX = src.getMinX() + lpad;
/* 162 */ maxX = src.getMaxX() - rpad;
/* 163 */ minY = src.getMinY() + tpad;
/* 164 */ maxY = src.getMaxY() - bpad;
/* 165 */ iter = RandomIterFactory.create(src, src.getBounds());
/* */ }
/* */
/* 168 */ int kwidth = this.interp.getWidth();
/* 169 */ int kheight = this.interp.getHeight();
/* */
/* 171 */ int dstWidth = dst.getWidth();
/* 172 */ int dstHeight = dst.getHeight();
/* 173 */ int dstBands = dst.getNumBands();
/* */
/* 175 */ int lineStride = dst.getScanlineStride();
/* 176 */ int pixelStride = dst.getPixelStride();
/* 177 */ int[] bandOffsets = dst.getBandOffsets();
/* 178 */ byte[][] data = dst.getByteDataArrays();
/* */
/* 180 */ int precH = 1 << this.interp.getSubsampleBitsH();
/* 181 */ int precV = 1 << this.interp.getSubsampleBitsV();
/* */
/* 183 */ float[] warpData = new float[2 * dstWidth];
/* */
/* 185 */ int[][] samples = new int[kheight][kwidth];
/* */
/* 187 */ int lineOffset = 0;
/* */
/* 189 */ byte[] backgroundByte = new byte[dstBands];
/* 190 */ for (int i = 0; i < dstBands; i++) {
/* 191 */ backgroundByte[i] = ((byte)(int)this.backgroundValues[i]);
/* */ }
/* 193 */ if (this.ctable == null)
/* 194 */ for (int h = 0; h < dstHeight; h++) {
/* 195 */ int pixelOffset = lineOffset;
/* 196 */ lineOffset += lineStride;
/* */
/* 198 */ this.warp.warpRect(dst.getX(), dst.getY() + h, dstWidth, 1, warpData);
/* */
/* 200 */ int count = 0;
/* 201 */ for (int w = 0; w < dstWidth; w++) {
/* 202 */ float sx = warpData[(count++)];
/* 203 */ float sy = warpData[(count++)];
/* */
/* 205 */ int xint = floor(sx);
/* 206 */ int yint = floor(sy);
/* 207 */ int xfrac = (int)((sx - xint) * precH);
/* 208 */ int yfrac = (int)((sy - yint) * precV);
/* */
/* 210 */ if ((xint < minX) || (xint >= maxX) || (yint < minY) || (yint >= maxY))
/* */ {
/* 213 */ if (this.setBackground) {
/* 214 */ for (int b = 0; b < dstBands; b++)
/* 215 */ data[b][(pixelOffset + bandOffsets[b])] = backgroundByte[b];
/* */ }
/* */ }
/* */ else
/* */ {
/* 220 */ xint -= lpad;
/* 221 */ yint -= tpad;
/* */
/* 223 */ for (int b = 0; b < dstBands; b++) {
/* 224 */ for (int j = 0; j < kheight; j++) {
/* 225 */ for (int i = 0; i < kwidth; i++) {
/* 226 */ samples[j][i] = (iter.getSample(xint + i, yint + j, b) & 0xFF);
/* */ }
/* */
/* */ }
/* */
/* 231 */ data[b][(pixelOffset + bandOffsets[b])] = ImageUtil.clampByte(this.interp.interpolate(samples, xfrac, yfrac));
/* */ }
/* */
/* */ }
/* */
/* 237 */ pixelOffset += pixelStride;
/* */ }
/* */ }
/* */ else
/* 241 */ for (int h = 0; h < dstHeight; h++) {
/* 242 */ int pixelOffset = lineOffset;
/* 243 */ lineOffset += lineStride;
/* */
/* 245 */ this.warp.warpRect(dst.getX(), dst.getY() + h, dstWidth, 1, warpData);
/* */
/* 247 */ int count = 0;
/* 248 */ for (int w = 0; w < dstWidth; w++) {
/* 249 */ float sx = warpData[(count++)];
/* 250 */ float sy = warpData[(count++)];
/* */
/* 252 */ int xint = floor(sx);
/* 253 */ int yint = floor(sy);
/* 254 */ int xfrac = (int)((sx - xint) * precH);
/* 255 */ int yfrac = (int)((sy - yint) * precV);
/* */
/* 257 */ if ((xint < minX) || (xint >= maxX) || (yint < minY) || (yint >= maxY))
/* */ {
/* 260 */ if (this.setBackground) {
/* 261 */ for (int b = 0; b < dstBands; b++)
/* 262 */ data[b][(pixelOffset + bandOffsets[b])] = backgroundByte[b];
/* */ }
/* */ }
/* */ else
/* */ {
/* 267 */ xint -= lpad;
/* 268 */ yint -= tpad;
/* */
/* 270 */ for (int b = 0; b < dstBands; b++) {
/* 271 */ byte[] t = this.ctable[b];
/* */
/* 273 */ for (int j = 0; j < kheight; j++) {
/* 274 */ for (int i = 0; i < kwidth; i++) {
/* 275 */ samples[j][i] = (t[(iter.getSample(xint + i, yint + j, 0) & 0xFF)] & 0xFF);
/* */ }
/* */
/* */ }
/* */
/* 280 */ data[b][(pixelOffset + bandOffsets[b])] = ImageUtil.clampByte(this.interp.interpolate(samples, xfrac, yfrac));