% July 1992 %
% %
% %
-% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
return(y);
}
-static inline size_t MagickMin(const size_t x,
- const size_t y)
-{
- if (x < y)
- return(x);
- return(y);
-}
-
MagickExport MagickBooleanType AcquireImageColormap(Image *image,
const size_t colors,ExceptionInfo *exception)
{
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
image->colors=colors;
length=(size_t) colors;
- if (image->colormap == (PixelPacket *) NULL)
- image->colormap=(PixelPacket *) AcquireQuantumMemory(length,
+ if (image->colormap == (PixelInfo *) NULL)
+ image->colormap=(PixelInfo *) AcquireQuantumMemory(length,
sizeof(*image->colormap));
else
- image->colormap=(PixelPacket *) ResizeQuantumMemory(image->colormap,length,
+ image->colormap=(PixelInfo *) ResizeQuantumMemory(image->colormap,length,
sizeof(*image->colormap));
- if (image->colormap == (PixelPacket *) NULL)
+ if (image->colormap == (PixelInfo *) NULL)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
for (i=0; i < (ssize_t) image->colors; i++)
{
- size_t
+ double
pixel;
- pixel=(size_t) (i*(QuantumRange/MagickMax(colors-1,1)));
- image->colormap[i].red=(Quantum) pixel;
- image->colormap[i].green=(Quantum) pixel;
- image->colormap[i].blue=(Quantum) pixel;
+ pixel=(double) (i*(QuantumRange/MagickMax(colors-1,1)));
+ image->colormap[i].red=pixel;
+ image->colormap[i].green=pixel;
+ image->colormap[i].blue=pixel;
image->colormap[i].alpha=OpaqueAlpha;
}
- return(SetImageStorageClass(image,PseudoClass,&image->exception));
+ return(SetImageStorageClass(image,PseudoClass,exception));
}
\f
/*
% positions. If you cycle the colormap a number of times you can produce
% a psychodelic effect.
%
+% WARNING: this assumes an images colormap is in a well know and defined
+% order. Currently Imagemagick has no way of setting that order.
+%
% The format of the CycleColormapImage method is:
%
% MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace,
status=MagickTrue;
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,4) shared(status)
+ #pragma omp parallel for schedule(static,4) shared(status)
#endif
for (y=0; y < (ssize_t) image->rows; y++)
{
if (index < 0)
index+=(ssize_t) image->colors;
SetPixelIndex(image,(Quantum) index,q);
- SetPixelPacket(image,image->colormap+(ssize_t) index,q);
+ SetPixelInfoPixel(image,image->colormap+(ssize_t) index,q);
q+=GetPixelChannels(image);
}
if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
static int IntensityCompare(const void *x,const void *y)
{
- const PixelPacket
+ const PixelInfo
*color_1,
*color_2;
int
intensity;
- color_1=(const PixelPacket *) x;
- color_2=(const PixelPacket *) y;
- intensity=(int) GetPixelPacketIntensity(color_2)-(int)
- GetPixelPacketIntensity(color_1);
+ color_1=(const PixelInfo *) x;
+ color_2=(const PixelInfo *) y;
+ intensity=(int) GetPixelInfoIntensity(color_2)-(int)
+ GetPixelInfoIntensity(color_1);
return(intensity);
}
Assign index values to colormap entries.
*/
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,4) shared(status)
+ #pragma omp parallel for schedule(static,4) shared(status)
#endif
for (i=0; i < (ssize_t) image->colors; i++)
- image->colormap[i].alpha=(Quantum) i;
+ image->colormap[i].alpha=(double) i;
/*
Sort image colormap by decreasing color popularity.
*/
Update image colormap indexes to sorted colormap order.
*/
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,4) shared(status)
+ #pragma omp parallel for schedule(static,4) shared(status)
#endif
for (i=0; i < (ssize_t) image->colors; i++)
pixels[(ssize_t) image->colormap[i].alpha]=(unsigned short) i;
if (q == (Quantum *) NULL)
{
status=MagickFalse;
- continue;
+ break;
}
for (x=0; x < (ssize_t) image->columns; x++)
{
index=(Quantum) pixels[(ssize_t) GetPixelIndex(image,q)];
SetPixelIndex(image,index,q);
- SetPixelPacket(image,image->colormap+(ssize_t) index,q);
+ SetPixelInfoPixel(image,image->colormap+(ssize_t) index,q);
q+=GetPixelChannels(image);
}
if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)