MagickCore  7.0.0
quantize.c File Reference
Include dependency graph for quantize.c:

Go to the source code of this file.

Data Structures

struct  _RealPixelInfo
 
struct  _NodeInfo
 
struct  _Nodes
 
struct  _CubeInfo
 

Macros

#define CacheShift   2
 
#define ErrorQueueLength   16
 
#define MaxNodes   266817
 
#define MaxTreeDepth   8
 
#define NodesInAList   1920
 
#define AssignImageTag   "Assign/Image"
 
#define ClassifyImageTag   "Classify/Image"
 
#define RedShift(pixel)   (((pixel) >> CacheShift) << (0*(8-CacheShift)))
 
#define GreenShift(pixel)   (((pixel) >> CacheShift) << (1*(8-CacheShift)))
 
#define BlueShift(pixel)   (((pixel) >> CacheShift) << (2*(8-CacheShift)))
 
#define AlphaShift(pixel)   (((pixel) >> CacheShift) << (3*(8-CacheShift)))
 
#define DitherImageTag   "Dither/Image"
 
#define DitherImageTag   "Dither/Image"
 
#define PosterizeImageTag   "Posterize/Image"
 
#define PosterizePixel(pixel)
 
#define ReduceImageTag   "Reduce/Image"
 

Typedefs

typedef struct _RealPixelInfo RealPixelInfo
 
typedef struct _NodeInfo NodeInfo
 
typedef struct _Nodes Nodes
 
typedef struct _CubeInfo CubeInfo
 

Functions

static CubeInfoGetCubeInfo (const QuantizeInfo *, const size_t, const size_t)
 
static NodeInfoGetNodeInfo (CubeInfo *, const size_t, const size_t, NodeInfo *)
 
static MagickBooleanType AssignImageColors (Image *, CubeInfo *, ExceptionInfo *)
 
static MagickBooleanType ClassifyImageColors (CubeInfo *, const Image *, ExceptionInfo *)
 
static MagickBooleanType DitherImage (Image *, CubeInfo *, ExceptionInfo *)
 
static MagickBooleanType SetGrayscaleImage (Image *, ExceptionInfo *)
 
static size_t DefineImageColormap (Image *, CubeInfo *, NodeInfo *)
 
static void ClosestColor (const Image *, CubeInfo *, const NodeInfo *)
 
static void DestroyCubeInfo (CubeInfo *)
 
static void PruneLevel (const Image *, CubeInfo *, const NodeInfo *)
 
static void PruneToCubeDepth (const Image *, CubeInfo *, const NodeInfo *)
 
static void ReduceImageColors (const Image *, CubeInfo *)
 
MagickExport QuantizeInfoAcquireQuantizeInfo (const ImageInfo *image_info)
 
static void AssociateAlphaPixel (const Image *image, const CubeInfo *cube_info, const Quantum *pixel, RealPixelInfo *alpha_pixel)
 
static void AssociateAlphaPixelInfo (const CubeInfo *cube_info, const PixelInfo *pixel, RealPixelInfo *alpha_pixel)
 
static Quantum ClampPixel (const MagickRealType value)
 
static size_t ColorToNodeId (const CubeInfo *cube_info, const RealPixelInfo *pixel, size_t index)
 
static void SetAssociatedAlpha (const Image *image, CubeInfo *cube_info)
 
MagickExport QuantizeInfoCloneQuantizeInfo (const QuantizeInfo *quantize_info)
 
MagickExport MagickBooleanType CompressImageColormap (Image *image, ExceptionInfo *exception)
 
MagickExport QuantizeInfoDestroyQuantizeInfo (QuantizeInfo *quantize_info)
 
static RealPixelInfo ** DestroyPixelThreadSet (RealPixelInfo **pixels)
 
static RealPixelInfo ** AcquirePixelThreadSet (const size_t count)
 
static ssize_t CacheOffset (CubeInfo *cube_info, const RealPixelInfo *pixel)
 
static MagickBooleanType FloydSteinbergDither (Image *image, CubeInfo *cube_info, ExceptionInfo *exception)
 
static MagickBooleanType RiemersmaDither (Image *, CacheView *, CubeInfo *, const unsigned int, ExceptionInfo *exception)
 
static void Riemersma (Image *image, CacheView *image_view, CubeInfo *cube_info, const size_t level, const unsigned int direction, ExceptionInfo *exception)
 
static ssize_t MagickMax (const ssize_t x, const ssize_t y)
 
static ssize_t MagickMin (const ssize_t x, const ssize_t y)
 
MagickExport MagickBooleanType GetImageQuantizeError (Image *image, ExceptionInfo *exception)
 
MagickExport void GetQuantizeInfo (QuantizeInfo *quantize_info)
 
static double MagickRound (double x)
 
MagickExport MagickBooleanType PosterizeImage (Image *image, const size_t levels, const DitherMethod dither_method, ExceptionInfo *exception)
 
static void PruneChild (const Image *image, CubeInfo *cube_info, const NodeInfo *node_info)
 
static MagickBooleanType DirectToColormapImage (Image *image, ExceptionInfo *exception)
 
MagickExport MagickBooleanType QuantizeImage (const QuantizeInfo *quantize_info, Image *image, ExceptionInfo *exception)
 
MagickExport MagickBooleanType QuantizeImages (const QuantizeInfo *quantize_info, Image *images, ExceptionInfo *exception)
 
static void Reduce (const Image *image, CubeInfo *cube_info, const NodeInfo *node_info)
 
MagickExport MagickBooleanType RemapImage (const QuantizeInfo *quantize_info, Image *image, const Image *remap_image, ExceptionInfo *exception)
 
MagickExport MagickBooleanType RemapImages (const QuantizeInfo *quantize_info, Image *images, const Image *remap_image, ExceptionInfo *exception)
 
static int IntensityCompare (const void *x, const void *y)
 

Macro Definition Documentation

#define AlphaShift (   pixel)    (((pixel) >> CacheShift) << (3*(8-CacheShift)))

Referenced by CacheOffset().

#define AssignImageTag   "Assign/Image"
#define BlueShift (   pixel)    (((pixel) >> CacheShift) << (2*(8-CacheShift)))

Referenced by CacheOffset().

#define CacheShift   2

Definition at line 209 of file quantize.c.

Referenced by GetCubeInfo().

#define ClassifyImageTag   "Classify/Image"

Referenced by ClassifyImageColors().

#define DitherImageTag   "Dither/Image"
#define DitherImageTag   "Dither/Image"
#define ErrorQueueLength   16

Definition at line 213 of file quantize.c.

Referenced by DitherImage(), GetCubeInfo(), and RiemersmaDither().

#define GreenShift (   pixel)    (((pixel) >> CacheShift) << (1*(8-CacheShift)))

Referenced by CacheOffset().

#define MaxNodes   266817

Definition at line 214 of file quantize.c.

Referenced by ClassifyImageColors().

#define NodesInAList   1920

Definition at line 216 of file quantize.c.

Referenced by GetNodeInfo().

#define PosterizeImageTag   "Posterize/Image"

Referenced by PosterizeImage().

#define PosterizePixel (   pixel)
Value:
QuantumScale*pixel*(levels-1)))/MagickMax((ssize_t) levels-1,1))

Referenced by PosterizeImage().

#define RedShift (   pixel)    (((pixel) >> CacheShift) << (0*(8-CacheShift)))

Referenced by CacheOffset().

#define ReduceImageTag   "Reduce/Image"

Referenced by ReduceImageColors().

Typedef Documentation

typedef struct _CubeInfo CubeInfo
typedef struct _NodeInfo NodeInfo
typedef struct _Nodes Nodes
typedef struct _RealPixelInfo RealPixelInfo

Function Documentation

static RealPixelInfo** AcquirePixelThreadSet ( const size_t  count)
static
static MagickBooleanType AssignImageColors ( Image image,
CubeInfo cube_info,
ExceptionInfo exception 
)
static
static void AssociateAlphaPixel ( const Image image,
const CubeInfo cube_info,
const Quantum pixel,
RealPixelInfo alpha_pixel 
)
inlinestatic
static void AssociateAlphaPixelInfo ( const CubeInfo cube_info,
const PixelInfo pixel,
RealPixelInfo alpha_pixel 
)
inlinestatic
static ssize_t CacheOffset ( CubeInfo cube_info,
const RealPixelInfo pixel 
)
inlinestatic
static Quantum ClampPixel ( const MagickRealType  value)
inlinestatic
static size_t ColorToNodeId ( const CubeInfo cube_info,
const RealPixelInfo pixel,
size_t  index 
)
inlinestatic
static RealPixelInfo** DestroyPixelThreadSet ( RealPixelInfo **  pixels)
static
static NodeInfo * GetNodeInfo ( CubeInfo cube_info,
const size_t  id,
const size_t  level,
NodeInfo parent 
)
static
static int IntensityCompare ( const void *  x,
const void *  y 
)
static

Definition at line 3247 of file quantize.c.

References GetPixelInfoIntensity().

Referenced by SetGrayscaleImage().

static ssize_t MagickMax ( const ssize_t  x,
const ssize_t  y 
)
inlinestatic

Definition at line 1918 of file quantize.c.

Referenced by DitherImage().

static ssize_t MagickMin ( const ssize_t  x,
const ssize_t  y 
)
inlinestatic

Definition at line 1925 of file quantize.c.

Referenced by PosterizeImage().

static double MagickRound ( double  x)
inlinestatic

Definition at line 2339 of file quantize.c.

static void PruneLevel ( const Image image,
CubeInfo cube_info,
const NodeInfo node_info 
)
static void PruneToCubeDepth ( const Image image,
CubeInfo cube_info,
const NodeInfo node_info 
)
static void Reduce ( const Image image,
CubeInfo cube_info,
const NodeInfo node_info 
)
static
static void Riemersma ( Image image,
CacheView image_view,
CubeInfo cube_info,
const size_t  level,
const unsigned int  direction,
ExceptionInfo exception 
)
static

Definition at line 1669 of file quantize.c.

References EastGravity, NorthGravity, RiemersmaDither(), SouthGravity, and WestGravity.

Referenced by DitherImage().

static void SetAssociatedAlpha ( const Image image,
CubeInfo cube_info 
)
inlinestatic