copy first and last lines

This commit is contained in:
Alexander 2017-08-12 22:18:24 +03:00
parent f71b3a8ed7
commit 5353d28e35

View File

@ -143,8 +143,7 @@ ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32* kernel,
if (xsize == 3) { if (xsize == 3) {
/* 3x3 kernel. */ /* 3x3 kernel. */
for (x = 0; x < im->xsize; x++) memcpy(imOut->image[0], im->image[0], im->linesize);
imOut->image8[0][x] = im->image8[0][x];
for (y = 1; y < im->ysize-1; y++) { for (y = 1; y < im->ysize-1; y++) {
imOut->image8[y][0] = im->image8[y][0]; imOut->image8[y][0] = im->image8[y][0];
for (x = 1; x < im->xsize-1; x++) { for (x = 1; x < im->xsize-1; x++) {
@ -153,14 +152,12 @@ ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32* kernel,
} }
imOut->image8[y][x] = im->image8[y][x]; imOut->image8[y][x] = im->image8[y][x];
} }
for (x = 0; x < im->xsize; x++) memcpy(imOut->image[y], im->image[y], im->linesize);
imOut->image8[y][x] = im->image8[y][x];
} else { } else {
/* 5x5 kernel. */ /* 5x5 kernel. */
for (y = 0; y < 2; y++) memcpy(imOut->image[0], im->image[0], im->linesize);
for (x = 0; x < im->xsize; x++) memcpy(imOut->image[1], im->image[1], im->linesize);
imOut->image8[y][x] = im->image8[y][x]; for (y = 2; y < im->ysize-2; y++) {
for (; y < im->ysize-2; y++) {
for (x = 0; x < 2; x++) for (x = 0; x < 2; x++)
imOut->image8[y][x] = im->image8[y][x]; imOut->image8[y][x] = im->image8[y][x];
for (; x < im->xsize-2; x++) { for (; x < im->xsize-2; x++) {
@ -170,9 +167,8 @@ ImagingFilter(Imaging im, int xsize, int ysize, const FLOAT32* kernel,
for (; x < im->xsize; x++) for (; x < im->xsize; x++)
imOut->image8[y][x] = im->image8[y][x]; imOut->image8[y][x] = im->image8[y][x];
} }
for (; y < im->ysize; y++) memcpy(imOut->image[y], im->image[y], im->linesize);
for (x = 0; x < im->xsize; x++) memcpy(imOut->image[y+1], im->image[y+1], im->linesize);
imOut->image8[y][x] = im->image8[y][x];
} }
return imOut; return imOut;
} }