diff options
-rw-r--r-- | include/im_image.h | 3 | ||||
-rw-r--r-- | src/lua5/imlua_image.c | 6 | ||||
-rw-r--r-- | src/process/im_quantize.cpp | 5 |
3 files changed, 8 insertions, 6 deletions
diff --git a/include/im_image.h b/include/im_image.h index 09de54b..12dbad8 100644 --- a/include/im_image.h +++ b/include/im_image.h @@ -183,7 +183,8 @@ void imImageClear(imImage* image); int imImageIsBitmap(const imImage* image); /** Changes the image palette. - * This will destroy the existing palette and replace it with the given palette buffer. + * This will destroy the existing palette and replace it with the given palette pointer. + * Only the pointer is stored, so the palette should be a new palette and it can not be a static array. * * \verbatim image:SetPalette(palette: imPalette) [in Lua 5] \endverbatim * \ingroup imgclass */ diff --git a/src/lua5/imlua_image.c b/src/lua5/imlua_image.c index 6d5ea2b..40b1e9c 100644 --- a/src/lua5/imlua_image.c +++ b/src/lua5/imlua_image.c @@ -2,7 +2,7 @@ * \brief IM Lua 5 Binding * * See Copyright Notice in im_lib.h - * $Id: imlua_image.c,v 1.4 2009/08/19 21:33:55 scuri Exp $ + * $Id: imlua_image.c,v 1.5 2009/09/25 18:40:31 scuri Exp $ */ #include <string.h> @@ -479,7 +479,9 @@ static int imluaImageSetPalette (lua_State *L) { imImage *image = imlua_checkimage(L, 1); imluaPalette *pal = imlua_checkpalette(L, 2); - imImageSetPalette(image, pal->color, pal->count); + long* palette = (long*)malloc(sizeof(long)*256); + memcpy(palette, pal->color, pal->count*sizeof(long)); + imImageSetPalette(image, palette, pal->count); return 0; } diff --git a/src/process/im_quantize.cpp b/src/process/im_quantize.cpp index 9a65f4c..de78cf4 100644 --- a/src/process/im_quantize.cpp +++ b/src/process/im_quantize.cpp @@ -2,7 +2,7 @@ * \brief Additional Image Quantization Operations * * See Copyright Notice in im_lib.h - * $Id: im_quantize.cpp,v 1.1 2008/10/17 06:16:33 scuri Exp $ + * $Id: im_quantize.cpp,v 1.2 2009/09/25 18:40:32 scuri Exp $ */ @@ -24,8 +24,7 @@ void imProcessQuantizeRGBUniform(const imImage* src_image, imImage* dst_image, i *green_map=(imbyte*)src_image->data[1], *blue_map=(imbyte*)src_image->data[2]; - long *palette = imPaletteUniform(); - imImageSetPalette(dst_image, palette, 256); + imImageSetPalette(dst_image, imPaletteUniform(), 256); for (int y = 0; y < src_image->height; y++) { |