From 875d59122af6191ea5f40079373c87c2fc56b254 Mon Sep 17 00:00:00 2001 From: Yay295 Date: Thu, 25 Aug 2022 19:55:21 -0500 Subject: [PATCH] account for pixelsize=2 in ImagingExpand() --- src/libImaging/Filter.c | 56 +++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/libImaging/Filter.c b/src/libImaging/Filter.c index 90005599c..0e5c2280f 100644 --- a/src/libImaging/Filter.c +++ b/src/libImaging/Filter.c @@ -53,38 +53,40 @@ ImagingExpand(Imaging imIn, int xmargin, int ymargin, int mode) { return NULL; } -#define EXPAND_LINE(type, image, yin, yout) \ - { \ - for (x = 0; x < xmargin; x++) { \ - imOut->image[yout][x] = imIn->image[yin][0]; \ - } \ - for (x = 0; x < imIn->xsize; x++) { \ - imOut->image[yout][x + xmargin] = imIn->image[yin][x]; \ - } \ - for (x = 0; x < xmargin; x++) { \ - imOut->image[yout][xmargin + imIn->xsize + x] = \ - imIn->image[yin][imIn->xsize - 1]; \ - } \ +#define EXPAND_LINE(type, yin, yout) \ + { \ + for (x = 0; x < xmargin; x++) { \ + ((type *)imOut->image[yout])[x] = ((type *)imIn->image[yin])[0]; \ + } \ + for (x = 0; x < imIn->xsize; x++) { \ + ((type *)imOut->image[yout])[x + xmargin] = ((type *)imIn->image[yin])[x]; \ + } \ + for (x = 0; x < xmargin; x++) { \ + ((type *)imOut->image[yout])[xmargin + imIn->xsize + x] = \ + ((type *)imIn->image[yin])[imIn->xsize - 1]; \ + } \ } -#define EXPAND(type, image) \ - { \ - for (y = 0; y < ymargin; y++) { \ - EXPAND_LINE(type, image, 0, y); \ - } \ - for (y = 0; y < imIn->ysize; y++) { \ - EXPAND_LINE(type, image, y, y + ymargin); \ - } \ - for (y = 0; y < ymargin; y++) { \ - EXPAND_LINE(type, image, imIn->ysize - 1, ymargin + imIn->ysize + y); \ - } \ +#define EXPAND(type) \ + { \ + for (y = 0; y < ymargin; y++) { \ + EXPAND_LINE(type, 0, y); \ + } \ + for (y = 0; y < imIn->ysize; y++) { \ + EXPAND_LINE(type, y, y + ymargin); \ + } \ + for (y = 0; y < ymargin; y++) { \ + EXPAND_LINE(type, imIn->ysize - 1, ymargin + imIn->ysize + y); \ + } \ } ImagingSectionEnter(&cookie); - if (imIn->image8) { - EXPAND(UINT8, image8); - } else { - EXPAND(INT32, image32); + if (imIn->pixelsize == 1) { + EXPAND(UINT8); + } else if (imIn->pixelsize == 2) { + EXPAND(UINT16); + } else if (imIn->pixelsize == 4) { + EXPAND(INT32); } ImagingSectionLeave(&cookie);