diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index bfbfa0c..5cd7bbd 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -128,6 +128,9 @@
gamma,
white_point;
+ ExceptionInfo
+ *exception;
+
GeometryInfo
geometry_info;
@@ -142,6 +145,7 @@
*/
if (levels == (char *) NULL)
return(MagickFalse);
+ exception=(&image->exception);
flags=ParseGeometry(levels,&geometry_info);
black_point=geometry_info.rho;
white_point=(double) QuantumRange;
@@ -158,9 +162,9 @@
if ((flags & SigmaValue) == 0)
white_point=(double) QuantumRange-black_point;
if ((flags & AspectValue ) == 0)
- status=LevelImage(image,black_point,white_point,gamma,&image->exception);
+ status=LevelImage(image,black_point,white_point,gamma,exception);
else
- status=LevelizeImage(image,black_point,white_point,gamma);
+ status=LevelizeImage(image,black_point,white_point,gamma,exception);
return(status);
}
diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c
index 78605e0..67242f4 100644
--- a/MagickCore/enhance.c
+++ b/MagickCore/enhance.c
@@ -387,12 +387,9 @@
continue;
channel=GetPixelChannelMapChannel(clut_image,(PixelChannel) i);
traits=GetPixelChannelMapTraits(clut_image,channel);
- if (traits == UndefinedPixelTrait)
- continue;
- if ((traits & UpdatePixelTrait) == 0)
- continue;
- q[channel]=ClampToQuantum(clut_map[ScaleQuantumToMap(q[channel])*
- GetPixelChannels(clut_image)+channel]);
+ if ((traits & UpdatePixelTrait) != 0)
+ q[channel]=ClampToQuantum(clut_map[ScaleQuantumToMap(q[channel])*
+ GetPixelChannels(clut_image)+channel]);
}
q+=GetPixelChannels(image);
}
@@ -1228,9 +1225,7 @@
traits;
traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
- if ((traits & UpdatePixelTrait) == 0)
- continue;
- if (black[i] != white[i])
+ if (((traits & UpdatePixelTrait) != 0) && (black[i] != white[i]))
q[i]=ClampToQuantum(stretch_map[GetPixelChannels(image)*
ScaleQuantumToMap(q[i])+i]);
}
@@ -1684,11 +1679,7 @@
traits;
traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
- if (traits == UndefinedPixelTrait)
- continue;
- if ((traits & UpdatePixelTrait) == 0)
- continue;
- if (black[i] != white[i])
+ if (((traits & UpdatePixelTrait) != 0) && (black[i] != white[i]))
q[i]=ClampToQuantum(equalize_map[GetPixelChannels(image)*
ScaleQuantumToMap(q[i])+i]);
}
@@ -1899,7 +1890,8 @@
%
% The format of the HaldClutImage method is:
%
-% MagickBooleanType HaldClutImage(Image *image,Image *hald_image)
+% MagickBooleanType HaldClutImage(Image *image,Image *hald_image,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -1907,6 +1899,8 @@
%
% o hald_image: the color lookup table image for replacement color values.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline size_t MagickMin(const size_t x,const size_t y)
@@ -1917,7 +1911,7 @@
}
MagickExport MagickBooleanType HaldClutImage(Image *image,
- const Image *hald_image)
+ const Image *hald_image,ExceptionInfo *exception)
{
#define HaldClutImageTag "Clut/Image"
@@ -1936,9 +1930,6 @@
double
width;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -1962,7 +1953,6 @@
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(hald_image != (Image *) NULL);
assert(hald_image->signature == MagickSignature);
- exception=(&image->exception);
if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
return(MagickFalse);
if (image->matte == MagickFalse)
@@ -1985,19 +1975,6 @@
#endif
for (y=0; y < (ssize_t) image->rows; y++)
{
- double
- offset;
-
- HaldInfo
- point;
-
- PixelInfo
- pixel,
- pixel1,
- pixel2,
- pixel3,
- pixel4;
-
register Quantum
*restrict q;
@@ -2012,13 +1989,21 @@
status=MagickFalse;
continue;
}
- pixel=zero;
- pixel1=zero;
- pixel2=zero;
- pixel3=zero;
- pixel4=zero;
for (x=0; x < (ssize_t) image->columns; x++)
{
+ double
+ offset;
+
+ HaldInfo
+ point;
+
+ PixelInfo
+ pixel,
+ pixel1,
+ pixel2,
+ pixel3,
+ pixel4;
+
point.x=QuantumScale*(level-1.0)*GetPixelRed(image,q);
point.y=QuantumScale*(level-1.0)*GetPixelGreen(image,q);
point.z=QuantumScale*(level-1.0)*GetPixelBlue(image,q);
@@ -2026,25 +2011,26 @@
point.x-=floor(point.x);
point.y-=floor(point.y);
point.z-=floor(point.z);
- (void) InterpolatePixelInfo(image,hald_view,
- UndefinedInterpolatePixel,fmod(offset,width),floor(offset/width),
- &pixel1,exception);
- (void) InterpolatePixelInfo(image,hald_view,
- UndefinedInterpolatePixel,fmod(offset+level,width),floor((offset+level)/
- width),&pixel2,exception);
- CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,
- pixel2.alpha,point.y,&pixel3);
+ pixel1=zero;
+ (void) InterpolatePixelInfo(image,hald_view,image->interpolate,
+ fmod(offset,width),floor(offset/width),&pixel1,exception);
+ pixel2=zero;
+ (void) InterpolatePixelInfo(image,hald_view,image->interpolate,
+ fmod(offset+level,width),floor((offset+level)/width),&pixel2,exception);
+ pixel3=zero;
+ CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,pixel2.alpha,
+ point.y,&pixel3);
offset+=cube_size;
- (void) InterpolatePixelInfo(image,hald_view,
- UndefinedInterpolatePixel,fmod(offset,width),floor(offset/width),
- &pixel1,exception);
- (void) InterpolatePixelInfo(image,hald_view,
- UndefinedInterpolatePixel,fmod(offset+level,width),floor((offset+level)/
- width),&pixel2,exception);
- CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,
- pixel2.alpha,point.y,&pixel4);
- CompositePixelInfoAreaBlend(&pixel3,pixel3.alpha,&pixel4,
- pixel4.alpha,point.z,&pixel);
+ (void) InterpolatePixelInfo(image,hald_view,image->interpolate,
+ fmod(offset,width),floor(offset/width),&pixel1,exception);
+ (void) InterpolatePixelInfo(image,hald_view,image->interpolate,
+ fmod(offset+level,width),floor((offset+level)/width),&pixel2,exception);
+ pixel4=zero;
+ CompositePixelInfoAreaBlend(&pixel1,pixel1.alpha,&pixel2,pixel2.alpha,
+ point.y,&pixel4);
+ pixel=zero;
+ CompositePixelInfoAreaBlend(&pixel3,pixel3.alpha,&pixel4,pixel4.alpha,
+ point.z,&pixel);
if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
SetPixelRed(image,ClampToQuantum(pixel.red),q);
if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
@@ -2122,9 +2108,8 @@
% o exception: return any errors or warnings in this structure.
%
*/
-MagickExport MagickBooleanType LevelImage(Image *image,
- const double black_point,const double white_point,const double gamma,
- ExceptionInfo *exception)
+MagickExport MagickBooleanType LevelImage(Image *image,const double black_point,
+ const double white_point,const double gamma,ExceptionInfo *exception)
{
#define LevelImageTag "Level/Image"
#define LevelQuantum(x) (ClampToQuantum((MagickRealType) QuantumRange* \
@@ -2201,18 +2186,21 @@
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
- SetPixelRed(image,LevelQuantum(GetPixelRed(image,q)),q);
- if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
- SetPixelGreen(image,LevelQuantum(GetPixelGreen(image,q)),q);
- if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
- SetPixelBlue(image,LevelQuantum(GetPixelBlue(image,q)),q);
- if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
- (image->matte == MagickTrue))
- SetPixelAlpha(image,LevelQuantum(GetPixelAlpha(image,q)),q);
- if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
- (image->colorspace == CMYKColorspace))
- SetPixelBlack(image,LevelQuantum(GetPixelBlack(image,q)),q);
+ register ssize_t
+ i;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelTrait
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ if (traits == UndefinedPixelTrait)
+ continue;
+ if ((traits & UpdatePixelTrait) == 0)
+ continue;
+ q[i]=LevelQuantum(q[i]);
+ }
q+=GetPixelChannels(image);
}
if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -2261,7 +2249,7 @@
% The format of the LevelizeImage method is:
%
% MagickBooleanType LevelizeImage(Image *image,const double black_point,
-% const double white_point,const double gamma)
+% const double white_point,const double gamma,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2273,9 +2261,12 @@
%
% o gamma: adjust gamma by this factor before mapping values.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType LevelizeImage(Image *image,
- const double black_point,const double white_point,const double gamma)
+ const double black_point,const double white_point,const double gamma,
+ ExceptionInfo *exception)
{
#define LevelizeImageTag "Levelize/Image"
#define LevelizeValue(x) (ClampToQuantum(((MagickRealType) \
@@ -2285,9 +2276,6 @@
CacheView
*image_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -2353,18 +2341,18 @@
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
- SetPixelRed(image,LevelizeValue(GetPixelRed(image,q)),q);
- if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
- SetPixelGreen(image,LevelizeValue(GetPixelGreen(image,q)),q);
- if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
- SetPixelBlue(image,LevelizeValue(GetPixelBlue(image,q)),q);
- if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
- (image->colorspace == CMYKColorspace))
- SetPixelBlack(image,LevelizeValue(GetPixelBlack(image,q)),q);
- if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
- (image->matte == MagickTrue))
- SetPixelAlpha(image,LevelizeValue(GetPixelAlpha(image,q)),q);
+ register ssize_t
+ i;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ PixelTrait
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ if ((traits & UpdatePixelTrait) != 0)
+ q[i]=LevelizeValue(q[i]);
+ }
q+=GetPixelChannels(image);
}
if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -2412,7 +2400,7 @@
%
% MagickBooleanType LevelImageColors(Image *image,
% const PixelInfo *black_color,const PixelInfo *white_color,
-% const MagickBooleanType invert)
+% const MagickBooleanType invert,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2424,10 +2412,12 @@
%
% o invert: if true map the colors (levelize), rather than from (level)
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType LevelImageColors(Image *image,
const PixelInfo *black_color,const PixelInfo *white_color,
- const MagickBooleanType invert)
+ const MagickBooleanType invert,ExceptionInfo *exception)
{
ChannelType
channel_mask;
@@ -2449,21 +2439,21 @@
{
channel_mask=SetPixelChannelMask(image,RedChannel);
status|=LevelImage(image,black_color->red,white_color->red,1.0,
- &image->exception);
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
{
channel_mask=SetPixelChannelMask(image,GreenChannel);
status|=LevelImage(image,black_color->green,white_color->green,1.0,
- &image->exception);
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
{
channel_mask=SetPixelChannelMask(image,BlueChannel);
status|=LevelImage(image,black_color->blue,white_color->blue,1.0,
- &image->exception);
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
@@ -2471,7 +2461,7 @@
{
channel_mask=SetPixelChannelMask(image,BlackChannel);
status|=LevelImage(image,black_color->black,white_color->black,1.0,
- &image->exception);
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
@@ -2479,7 +2469,7 @@
{
channel_mask=SetPixelChannelMask(image,AlphaChannel);
status|=LevelImage(image,black_color->alpha,white_color->alpha,1.0,
- &image->exception);
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
}
@@ -2488,36 +2478,38 @@
if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
{
channel_mask=SetPixelChannelMask(image,RedChannel);
- status|=LevelizeImage(image,black_color->red,white_color->red,1.0);
+ status|=LevelizeImage(image,black_color->red,white_color->red,1.0,
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
{
channel_mask=SetPixelChannelMask(image,GreenChannel);
- status|=LevelizeImage(image,black_color->green,white_color->green,
- 1.0);
+ status|=LevelizeImage(image,black_color->green,white_color->green,1.0,
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
{
channel_mask=SetPixelChannelMask(image,BlueChannel);
- status|=LevelizeImage(image,black_color->blue,white_color->blue,1.0);
+ status|=LevelizeImage(image,black_color->blue,white_color->blue,1.0,
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
(image->colorspace == CMYKColorspace))
{
channel_mask=SetPixelChannelMask(image,BlackChannel);
- status|=LevelizeImage(image,black_color->black,white_color->black,
- 1.0);
+ status|=LevelizeImage(image,black_color->black,white_color->black,1.0,
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
(image->matte == MagickTrue))
{
channel_mask=SetPixelChannelMask(image,AlphaChannel);
- status|=LevelizeImage(image,black_color->alpha,white_color->alpha,
- 1.0);
+ status|=LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,
+ exception);
(void) SetPixelChannelMask(image,channel_mask);
}
}
diff --git a/MagickCore/enhance.h b/MagickCore/enhance.h
index ecb154d..06e49e7 100644
--- a/MagickCore/enhance.h
+++ b/MagickCore/enhance.h
@@ -32,11 +32,11 @@
ContrastStretchImage(Image *,const double,const double,ExceptionInfo *),
EqualizeImage(Image *image,ExceptionInfo *),
GammaImage(Image *,const double,ExceptionInfo *),
- HaldClutImage(Image *,const Image *),
+ HaldClutImage(Image *,const Image *,ExceptionInfo *),
LevelImage(Image *,const double,const double,const double,ExceptionInfo *),
- LevelizeImage(Image *,const double,const double,const double),
+ LevelizeImage(Image *,const double,const double,const double,ExceptionInfo *),
LevelImageColors(Image *,const PixelInfo *,const PixelInfo *,
- const MagickBooleanType),
+ const MagickBooleanType,ExceptionInfo *),
LinearStretchImage(Image *,const double,const double),
ModulateImage(Image *,const char *),
NegateImage(Image *,const MagickBooleanType,ExceptionInfo *),
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 65ecf6e..b0989f3 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -2628,7 +2628,8 @@
*/
GetPixelInfo(image,&background);
SetPixelInfoPacket(image,&(image->background_color),&background);
- (void) LevelImageColors(image,&background,&background,MagickTrue);
+ (void) LevelImageColors(image,&background,&background,MagickTrue,
+ exception);
}
break;
}
diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h
index d0dd863..efe979e 100644
--- a/MagickCore/magick-config.h
+++ b/MagickCore/magick-config.h
@@ -12,7 +12,9 @@
/* #undef AUTOTRACE_DELEGATE */
/* Define if coders and filters are to be built as modules. */
-/* #undef BUILD_MODULES */
+#ifndef MAGICKCORE_BUILD_MODULES
+#define MAGICKCORE_BUILD_MODULES 1
+#endif
/* Define if you have the bzip2 library */
#ifndef MAGICKCORE_BZLIB_DELEGATE
@@ -78,7 +80,9 @@
#endif
/* Define if you have FFTW library */
-/* #undef FFTW_DELEGATE */
+#ifndef MAGICKCORE_FFTW_DELEGATE
+#define MAGICKCORE_FFTW_DELEGATE 1
+#endif
/* Location of filter modules */
#ifndef MAGICKCORE_FILTER_PATH
@@ -1157,9 +1161,6 @@
/* Define if you have umem memory allocation library */
/* #undef HasUMEM */
-/* Define if you have wmflite library */
-/* #undef HasWMFlite */
-
/* ImageMagick is formally installed under prefix */
#ifndef MAGICKCORE_INSTALLED_SUPPORT
#define MAGICKCORE_INSTALLED_SUPPORT 1
@@ -1207,7 +1208,7 @@
/* Define to the system default library search path. */
#ifndef MAGICKCORE_LT_DLSEARCH_PATH
-#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib/llvm:/usr/lib64/llvm:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2"
+#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/alliance/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/lib64/kicad:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mpich2/lib/:/usr/lib64/mysql:/usr/lib64/octave/3.4.2:/usr/lib64/openmotif:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2"
#endif
/* The archive extension */
@@ -1258,7 +1259,9 @@
/* #undef NO_MINUS_C_MINUS_O */
/* Define if you have OPENEXR library */
-/* #undef OPENEXR_DELEGATE */
+#ifndef MAGICKCORE_OPENEXR_DELEGATE
+#define MAGICKCORE_OPENEXR_DELEGATE 1
+#endif
/* Define to the address where bug reports for this package should be sent. */
#ifndef MAGICKCORE_PACKAGE_BUGREPORT
@@ -1313,7 +1316,9 @@
#endif
/* Define if you have RSVG library */
-/* #undef RSVG_DELEGATE */
+#ifndef MAGICKCORE_RSVG_DELEGATE
+#define MAGICKCORE_RSVG_DELEGATE 1
+#endif
/* Define to the type of arg 1 for `select'. */
#ifndef MAGICKCORE_SELECT_TYPE_ARG1
@@ -1458,8 +1463,10 @@
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
-/* Define if you have wmf library */
-/* #undef WMF_DELEGATE */
+/* Define if you have WMF library */
+#ifndef MAGICKCORE_WMF_DELEGATE
+#define MAGICKCORE_WMF_DELEGATE 1
+#endif
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/MagickCore/version.h b/MagickCore/version.h
index a90a00e..e893ff7 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,14 +27,14 @@
*/
#define MagickPackageName "ImageMagick"
#define MagickCopyright "Copyright (C) 1999-2011 ImageMagick Studio LLC"
-#define MagickSVNRevision "5035"
+#define MagickSVNRevision "exported"
#define MagickLibVersion 0x700
#define MagickLibVersionText "7.0.0"
#define MagickLibVersionNumber 5,0,0
#define MagickLibAddendum "-0"
#define MagickLibInterface 5
#define MagickLibMinInterface 5
-#define MagickReleaseDate "2011-08-22"
+#define MagickReleaseDate "2011-08-23"
#define MagickChangeDate "20110801"
#define MagickAuthoritativeURL "http://www.imagemagick.org"
#if defined(MAGICKCORE_OPENMP_SUPPORT)