#if (MAGICKCORE_QUANTUM_DEPTH == 8)
#define MaxColormapSize 256UL
#define MaxMap 255UL
-typedef float_t MagickRealType;
+typedef double_t MagickRealType;
#if defined(MAGICKCORE_HDRI_SUPPORT)
-typedef float Quantum;
+typedef float_t Quantum;
#define QuantumRange 255.0
#define QuantumFormat "%g"
#else
#elif (MAGICKCORE_QUANTUM_DEPTH == 16)
#define MaxColormapSize 65536UL
#define MaxMap 65535UL
-typedef float_t MagickRealType;
+typedef double_t MagickRealType;
#if defined(MAGICKCORE_HDRI_SUPPORT)
-typedef float Quantum;
+typedef float_t Quantum;
#define QuantumRange 65535.0f
#define QuantumFormat "%g"
#else
#elif (MAGICKCORE_QUANTUM_DEPTH == 32)
#define MaxColormapSize 65536UL
#define MaxMap 65535UL
-typedef float_t MagickRealType;
+typedef double_t MagickRealType;
#if defined(MAGICKCORE_HDRI_SUPPORT)
typedef double Quantum;
/*
Typdef declarations.
*/
-typedef struct _DoublePixelInfo
+typedef struct _DoublePixelPacket
{
double
red,
green,
blue,
alpha;
-} DoublePixelInfo;
+} DoublePixelPacket;
typedef struct _NodeInfo
{
MagickSizeType
number_unique;
- DoublePixelInfo
+ DoublePixelPacket
total_color;
double
MagickSizeType
transparent_pixels;
- DoublePixelInfo
+ DoublePixelPacket
target;
double
ssize_t
*cache;
- DoublePixelInfo
+ DoublePixelPacket
error[ErrorQueueLength];
double
*/
static inline void AssociateAlphaPixel(const Image *image,
- const CubeInfo *cube_info,const Quantum *pixel,DoublePixelInfo *alpha_pixel)
+ const CubeInfo *cube_info,const Quantum *pixel,DoublePixelPacket *alpha_pixel)
{
double
alpha;
}
static inline void AssociateAlphaPixelInfo(const CubeInfo *cube_info,
- const PixelInfo *pixel,DoublePixelInfo *alpha_pixel)
+ const PixelInfo *pixel,DoublePixelPacket *alpha_pixel)
{
double
alpha;
}
static inline size_t ColorToNodeId(const CubeInfo *cube_info,
- const DoublePixelInfo *pixel,size_t index)
+ const DoublePixelPacket *pixel,size_t index)
{
size_t
id;
cube=(*cube_info);
for (x=0; x < (ssize_t) image->columns; x+=count)
{
- DoublePixelInfo
+ DoublePixelPacket
pixel;
register const NodeInfo
CacheView
*image_view;
- DoublePixelInfo
+ DoublePixelPacket
error,
mid,
midpoint,
beta,
distance;
- register DoublePixelInfo
+ register DoublePixelPacket
*magick_restrict q;
register PixelInfo
%
*/
-static DoublePixelInfo **DestroyPixelThreadSet(DoublePixelInfo **pixels)
+static DoublePixelPacket **DestroyPixelThreadSet(DoublePixelPacket **pixels)
{
register ssize_t
i;
- assert(pixels != (DoublePixelInfo **) NULL);
+ assert(pixels != (DoublePixelPacket **) NULL);
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
- if (pixels[i] != (DoublePixelInfo *) NULL)
- pixels[i]=(DoublePixelInfo *) RelinquishMagickMemory(pixels[i]);
- pixels=(DoublePixelInfo **) RelinquishMagickMemory(pixels);
+ if (pixels[i] != (DoublePixelPacket *) NULL)
+ pixels[i]=(DoublePixelPacket *) RelinquishMagickMemory(pixels[i]);
+ pixels=(DoublePixelPacket **) RelinquishMagickMemory(pixels);
return(pixels);
}
-static DoublePixelInfo **AcquirePixelThreadSet(const size_t count)
+static DoublePixelPacket **AcquirePixelThreadSet(const size_t count)
{
- DoublePixelInfo
+ DoublePixelPacket
**pixels;
register ssize_t
number_threads;
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
- pixels=(DoublePixelInfo **) AcquireQuantumMemory(number_threads,
+ pixels=(DoublePixelPacket **) AcquireQuantumMemory(number_threads,
sizeof(*pixels));
- if (pixels == (DoublePixelInfo **) NULL)
- return((DoublePixelInfo **) NULL);
+ if (pixels == (DoublePixelPacket **) NULL)
+ return((DoublePixelPacket **) NULL);
(void) ResetMagickMemory(pixels,0,number_threads*sizeof(*pixels));
for (i=0; i < (ssize_t) number_threads; i++)
{
- pixels[i]=(DoublePixelInfo *) AcquireQuantumMemory(count,2*
+ pixels[i]=(DoublePixelPacket *) AcquireQuantumMemory(count,2*
sizeof(**pixels));
- if (pixels[i] == (DoublePixelInfo *) NULL)
+ if (pixels[i] == (DoublePixelPacket *) NULL)
return(DestroyPixelThreadSet(pixels));
}
return(pixels);
}
static inline ssize_t CacheOffset(CubeInfo *cube_info,
- const DoublePixelInfo *pixel)
+ const DoublePixelPacket *pixel)
{
#define RedShift(pixel) (((pixel) >> CacheShift) << (0*(8-CacheShift)))
#define GreenShift(pixel) (((pixel) >> CacheShift) << (1*(8-CacheShift)))
CacheView
*image_view;
- DoublePixelInfo
+ DoublePixelPacket
**pixels;
MagickBooleanType
Distribute quantization error using Floyd-Steinberg.
*/
pixels=AcquirePixelThreadSet(image->columns);
- if (pixels == (DoublePixelInfo **) NULL)
+ if (pixels == (DoublePixelPacket **) NULL)
return(MagickFalse);
status=MagickTrue;
image_view=AcquireAuthenticCacheView(image,exception);
CubeInfo
cube;
- DoublePixelInfo
+ DoublePixelPacket
*current,
*previous;
v=(ssize_t) ((y & 0x01) != 0 ? -1 : 1);
for (x=0; x < (ssize_t) image->columns; x++)
{
- DoublePixelInfo
+ DoublePixelPacket
color,
pixel;
{
#define DitherImageTag "Dither/Image"
- DoublePixelInfo
+ DoublePixelPacket
color,
pixel;
offset=y*image->columns+x;
status=GetMatrixElement(equivalences,offset,0,&id);
- if (id == offset)
+ if (id != offset)
+ status=GetMatrixElement(equivalences,id,0,&id);
+ else
{
id=n++;
- if (n > (ssize_t) MaxColormapSize)
+ if (id >= (ssize_t) MaxColormapSize)
break;
- status=SetMatrixElement(equivalences,offset,0,&id);
- }
- else
- {
- status=GetMatrixElement(equivalences,id,0,&id);
- status=SetMatrixElement(equivalences,offset,0,&id);
}
+ status=SetMatrixElement(equivalences,offset,0,&id);
if (x < object[id].bounding_box.x)
object[id].bounding_box.x=x;
if (x >= (ssize_t) object[id].bounding_box.width)