--- a/magick/colormap.c Tue Apr 02 18:38:00 2019 -0500 +++ b/magick/colormap.c Tue Apr 02 19:44:26 2019 -0500 @@ -35,11 +35,11 @@ % AllocateImageColormap() allocates an image colormap and initializes % it to a linear gray colorspace with increasing intensity. If the image % already has a colormap, it is replaced. AllocateImageColormap() returns -% True if successful, otherwise False if there is not enough memory. +% MagickPass if successful, otherwise MagickFail if there is not enough memory. % % The format of the AllocateImageColormap method is: % -% unsigned int AllocateImageColormap(Image *image, +% MagickPassFail AllocateImageColormap(Image *image, % const unsigned long colors) % % A description of each parameter follows: @@ -109,7 +109,7 @@ % % The format of the CycleColormapImage method is: % -% CycleColormapImage(Image *image,const int amount) +% MagickPassFail CycleColormapImage(Image *image,const int amount) % % A description of each parameter follows: % @@ -250,6 +250,76 @@ % % % % % % ++ R e a l l o c a t e I m a g e C o l o r m a p % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ReallocateImageColormap() reallocates an image colormap (or allocates it +% if is not already allocated) and clears any added colormap entries +% while preserving existing entries. ReallocateImageColormap() returns +% MagickPass if successful, otherwise MagickFail if there is not enough +% memory or the number of colormap entries is not supported. +% +% The image storage class is not modified by this function. +% +% The format of the ReallocateImageColormap method is: +% +% MagickPassFail ReallocateImageColormap(Image *image, +% const unsigned int colors) +% +% A description of each parameter follows: +% +% o image: The image. +% +% o colors: The number of colors in the image colormap. +% +% +*/ +MagickExport MagickPassFail ReallocateImageColormap(Image *image, + const unsigned int colors) +{ + register unsigned int + i; + + unsigned int + prev_colors; + + size_t + length; + + /* + Allocate image colormap. + */ + assert(image != (Image *) NULL); + assert(image->signature == MagickSignature); + if (colors > MaxColormapSize) + return (MagickFail); + prev_colors=image->colors; + length=MagickArraySize((size_t) colors,sizeof(PixelPacket)); + MagickReallocMemory(PixelPacket *,image->colormap,length); + if (image->colormap == (PixelPacket *) NULL) + { + image->colors=0; + return(MagickFail); + } + image->colors=colors; + for (i=prev_colors; i < image->colors; i++) + { + image->colormap[i].red=0; + image->colormap[i].green=0; + image->colormap[i].blue=0; + image->colormap[i].opacity=OpaqueOpacity; + } + return(MagickPass); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % R e p l a c e I m a g e C o l o r m a p % % % % % @@ -438,7 +508,7 @@ % % The format of the SortColormapByIntensity method is: % -% unsigned int SortColormapByIntensity(Image *image) +% MagickPassFail SortColormapByIntensity(Image *image) % % A description of each parameter follows: %