From 7ffad80294bd4e1366f41f154120c314079e9fb8 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Fri, 21 Jul 2023 20:59:28 +1000 Subject: [PATCH 1/2] Removed put_pixel --- src/libImaging/Access.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/libImaging/Access.c b/src/libImaging/Access.c index f00939da0b3..f7adbe198d3 100644 --- a/src/libImaging/Access.c +++ b/src/libImaging/Access.c @@ -127,15 +127,6 @@ get_pixel_32B(Imaging im, int x, int y, void *color) { /* store individual pixel */ -static void -put_pixel(Imaging im, int x, int y, const void *color) { - if (im->image8) { - im->image8[y][x] = *((UINT8 *)color); - } else { - memcpy(&im->image32[y][x], color, sizeof(INT32)); - } -} - static void put_pixel_8(Imaging im, int x, int y, const void *color) { im->image8[y][x] = *((UINT8 *)color); @@ -186,8 +177,8 @@ ImagingAccessInit() { /* populate access table */ ADD("1", get_pixel_8, put_pixel_8); ADD("L", get_pixel_8, put_pixel_8); - ADD("LA", get_pixel, put_pixel); - ADD("La", get_pixel, put_pixel); + ADD("LA", get_pixel, put_pixel_32); + ADD("La", get_pixel, put_pixel_32); ADD("I", get_pixel_32, put_pixel_32); ADD("I;16", get_pixel_16L, put_pixel_16L); ADD("I;16L", get_pixel_16L, put_pixel_16L); @@ -197,7 +188,7 @@ ImagingAccessInit() { ADD("I;32B", get_pixel_32B, put_pixel_32B); ADD("F", get_pixel_32, put_pixel_32); ADD("P", get_pixel_8, put_pixel_8); - ADD("PA", get_pixel, put_pixel); + ADD("PA", get_pixel, put_pixel_32); ADD("RGB", get_pixel_32, put_pixel_32); ADD("RGBA", get_pixel_32, put_pixel_32); ADD("RGBa", get_pixel_32, put_pixel_32); From 577a4d8bf83fa390fdddf631423fbd6b57573f21 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Fri, 21 Jul 2023 21:08:20 +1000 Subject: [PATCH 2/2] Change get_pixel to be specific to images with 2 bands --- src/libImaging/Access.c | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/libImaging/Access.c b/src/libImaging/Access.c index f7adbe198d3..dd0418696fe 100644 --- a/src/libImaging/Access.c +++ b/src/libImaging/Access.c @@ -46,22 +46,11 @@ add_item(const char *mode) { /* fetch individual pixel */ static void -get_pixel(Imaging im, int x, int y, void *color) { +get_pixel_32_2bands(Imaging im, int x, int y, void *color) { char *out = color; - - /* generic pixel access*/ - - if (im->image8) { - out[0] = im->image8[y][x]; - } else { - UINT8 *p = (UINT8 *)&im->image32[y][x]; - if (im->type == IMAGING_TYPE_UINT8 && im->bands == 2) { - out[0] = p[0]; - out[1] = p[3]; - return; - } - memcpy(out, p, im->pixelsize); - } + UINT8 *p = (UINT8 *)&im->image32[y][x]; + out[0] = p[0]; + out[1] = p[3]; } static void @@ -177,8 +166,8 @@ ImagingAccessInit() { /* populate access table */ ADD("1", get_pixel_8, put_pixel_8); ADD("L", get_pixel_8, put_pixel_8); - ADD("LA", get_pixel, put_pixel_32); - ADD("La", get_pixel, put_pixel_32); + ADD("LA", get_pixel_32_2bands, put_pixel_32); + ADD("La", get_pixel_32_2bands, put_pixel_32); ADD("I", get_pixel_32, put_pixel_32); ADD("I;16", get_pixel_16L, put_pixel_16L); ADD("I;16L", get_pixel_16L, put_pixel_16L); @@ -188,7 +177,7 @@ ImagingAccessInit() { ADD("I;32B", get_pixel_32B, put_pixel_32B); ADD("F", get_pixel_32, put_pixel_32); ADD("P", get_pixel_8, put_pixel_8); - ADD("PA", get_pixel, put_pixel_32); + ADD("PA", get_pixel_32_2bands, put_pixel_32); ADD("RGB", get_pixel_32, put_pixel_32); ADD("RGBA", get_pixel_32, put_pixel_32); ADD("RGBa", get_pixel_32, put_pixel_32);