From: cristy Date: Tue, 9 Aug 2011 19:41:42 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7199 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9511120df5137bf8517fbe4b4ed6c23b788cbfdf;p=imagemagick --- diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index daf030875..db3649781 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -89,31 +89,34 @@ % % The format of the AutoGammaImage method is: % -% MagickBooleanType AutoGammaImage(Image *image) +% MagickBooleanType AutoGammaImage(Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % % o image: The image to auto-level % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType AutoGammaImage(Image *image) +MagickExport MagickBooleanType AutoGammaImage(Image *image, + ExceptionInfo *exception) { - MagickStatusType - status; - double gamma, log_mean, mean, sans; + MagickStatusType + status; + log_mean=log(0.5); if (image->sync != MagickFalse) { /* Apply gamma correction equally accross all given channels. */ - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; return(LevelImage(image,0.0,(double) QuantumRange,gamma)); } @@ -124,7 +127,7 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,RedChannel); - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; status=status && LevelImage(image,0.0,(double) QuantumRange,gamma); PopPixelChannelMap(image); @@ -132,7 +135,7 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,GreenChannel); - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; status=status && LevelImage(image,0.0,(double) QuantumRange,gamma); PopPixelChannelMap(image); @@ -140,7 +143,7 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,BlueChannel); - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; status=status && LevelImage(image,0.0,(double) QuantumRange,gamma); PopPixelChannelMap(image); @@ -149,7 +152,7 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) (image->colorspace == CMYKColorspace)) { PushPixelChannelMap(image,BlackChannel); - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; status=status && LevelImage(image,0.0,(double) QuantumRange,gamma); PopPixelChannelMap(image); @@ -158,7 +161,7 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) (image->matte == MagickTrue)) { PushPixelChannelMap(image,AlphaChannel); - (void) GetImageMean(image,&mean,&sans,&image->exception); + (void) GetImageMean(image,&mean,&sans,exception); gamma=log(mean*QuantumScale)/log_mean; status=status && LevelImage(image,0.0,(double) QuantumRange,gamma); PopPixelChannelMap(image); @@ -182,16 +185,19 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image) % % The format of the LevelImage method is: % -% MagickBooleanType AutoLevelImage(Image *image) +% MagickBooleanType AutoLevelImage(Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % % o image: The image to auto-level % +% o exception: return any errors or warnings in this structure. +% */ -MagickExport MagickBooleanType AutoLevelImage(Image *image) +MagickExport MagickBooleanType AutoLevelImage(Image *image, + ExceptionInfo *exception) { - return(MinMaxStretchImage(image,0.0,0.0)); + return(MinMaxStretchImage(image,0.0,0.0,exception)); } /* diff --git a/MagickCore/enhance.h b/MagickCore/enhance.h index 9fbb6f99c..8fc92e019 100644 --- a/MagickCore/enhance.h +++ b/MagickCore/enhance.h @@ -23,8 +23,8 @@ extern "C" { #endif extern MagickExport MagickBooleanType - AutoGammaImage(Image *), - AutoLevelImage(Image *), + AutoGammaImage(Image *,ExceptionInfo *), + AutoLevelImage(Image *,ExceptionInfo *), BrightnessContrastImage(Image *,const double,const double), ClutImage(Image *,const Image *), ColorDecisionListImage(Image *,const char *), diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c index f477e700d..a8087a302 100644 --- a/MagickCore/histogram.c +++ b/MagickCore/histogram.c @@ -965,7 +965,7 @@ MagickExport MagickBooleanType IsPaletteImage(const Image *image, % The format of the MinMaxStretchImage method is: % % MagickBooleanType MinMaxStretchImage(Image *image,const double black, -% const double white) +% const double white,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -974,9 +974,11 @@ MagickExport MagickBooleanType IsPaletteImage(const Image *image, % o black, white: move the black / white point inward from the minimum and % maximum points by this color value. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, - const double black,const double white) + const double black,const double white,ExceptionInfo *exception) { double min, @@ -991,7 +993,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, /* Auto-level all channels equally. */ - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) @@ -1004,7 +1006,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,RedChannel); - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) @@ -1014,7 +1016,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,GreenChannel); - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) @@ -1024,7 +1026,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) { PushPixelChannelMap(image,BlueChannel); - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) @@ -1035,7 +1037,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, (image->colorspace == CMYKColorspace)) { PushPixelChannelMap(image,BlackChannel); - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) @@ -1046,7 +1048,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image, (image->matte == MagickTrue)) { PushPixelChannelMap(image,AlphaChannel); - (void) GetImageRange(image,&min,&max,&image->exception); + (void) GetImageRange(image,&min,&max,exception); min+=black; max-=white; if (fabs(min-max) >= MagickEpsilon) diff --git a/MagickCore/histogram.h b/MagickCore/histogram.h index a86f0fc7a..578902922 100644 --- a/MagickCore/histogram.h +++ b/MagickCore/histogram.h @@ -31,7 +31,7 @@ extern MagickExport Image extern MagickExport MagickBooleanType IsHistogramImage(const Image *,ExceptionInfo *), IsPaletteImage(const Image *,ExceptionInfo *), - MinMaxStretchImage(Image *,const double,const double); + MinMaxStretchImage(Image *,const double,const double,ExceptionInfo *); extern MagickExport size_t GetNumberColors(const Image *,FILE *,ExceptionInfo *); diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index f21ee5d27..500da0bb6 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 @@ -432,15 +436,15 @@ #endif /* Define if you have the header file. */ -#ifndef MAGICKCORE_HAVE_LCMS2_H -#define MAGICKCORE_HAVE_LCMS2_H 1 -#endif +/* #undef HAVE_LCMS2_H */ /* Define if you have the header file. */ /* #undef HAVE_LCMS2_LCMS2_H */ /* Define if you have the header file. */ -/* #undef HAVE_LCMS_H */ +#ifndef MAGICKCORE_HAVE_LCMS_H +#define MAGICKCORE_HAVE_LCMS_H 1 +#endif /* Define if you have the header file. */ /* #undef HAVE_LCMS_LCMS_H */ @@ -1163,7 +1167,9 @@ #endif /* Define if you have JBIG library */ -/* #undef JBIG_DELEGATE */ +#ifndef MAGICKCORE_JBIG_DELEGATE +#define MAGICKCORE_JBIG_DELEGATE 1 +#endif /* Define if you have JPEG version 2 "Jasper" library */ #ifndef MAGICKCORE_JP2_DELEGATE @@ -1192,7 +1198,9 @@ #endif /* Define if you have LQR library */ -/* #undef LQR_DELEGATE */ +#ifndef MAGICKCORE_LQR_DELEGATE +#define MAGICKCORE_LQR_DELEGATE 1 +#endif /* Define if using libltdl to support dynamically loadable modules */ #ifndef MAGICKCORE_LTDL_DELEGATE @@ -1204,7 +1212,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/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/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1255,7 +1263,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 @@ -1310,7 +1320,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 @@ -1447,7 +1459,9 @@ /* Define if you have WEBP library */ -/* #undef WEBP_DELEGATE */ +#ifndef MAGICKCORE_WEBP_DELEGATE +#define MAGICKCORE_WEBP_DELEGATE 1 +#endif /* Define to use the Windows GDI32 library */ /* #undef WINGDI32_DELEGATE */ @@ -1456,7 +1470,9 @@ /* #undef WITH_DMALLOC */ /* Define if you have WMF library */ -/* #undef WMF_DELEGATE */ +#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/threshold.c b/MagickCore/threshold.c index ee204e625..7ce060eb1 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -397,29 +397,18 @@ MagickExport MagickBooleanType BilevelImage(Image *image, } for (x=0; x < (ssize_t) image->columns; x++) { - if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) - SetPixelRed(image,(Quantum) ((MagickRealType) - GetPixelRed(image,q) <= threshold ? 0 : QuantumRange),q); - if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) - SetPixelGreen(image,(Quantum) ((MagickRealType) - GetPixelGreen(image,q) <= threshold ? 0 : QuantumRange),q); - if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) - SetPixelBlue(image,(Quantum) ((MagickRealType) - GetPixelBlue(image,q) <= threshold ? 0 : QuantumRange),q); - if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) && - (image->colorspace == CMYKColorspace)) - SetPixelBlack(image,(Quantum) ((MagickRealType) - GetPixelBlack(image,q) <= threshold ? 0 : QuantumRange),q); - if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) - { - if (image->matte == MagickFalse) - SetPixelAlpha(image,(Quantum) ((MagickRealType) - GetPixelAlpha(image,q) <= threshold ? 0 : QuantumRange),q); - else - SetPixelAlpha(image,(Quantum) ((MagickRealType) - GetPixelAlpha(image,q) >= threshold ? OpaqueAlpha : - TransparentAlpha),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]=q[i] <= threshold ? 0 : QuantumRange; + } q+=GetPixelChannels(image); } if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse) diff --git a/MagickCore/version.h b/MagickCore/version.h index fdc2f1be9..8ca58aa60 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,14 +27,14 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2011 ImageMagick Studio LLC" -#define MagickSVNRevision "4861" +#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-05" +#define MagickReleaseDate "2011-08-09" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index f9369d7f7..6ca3ef104 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -730,9 +730,7 @@ WandExport MagickBooleanType MagickAutoGammaImage(MagickWand *wand) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=AutoGammaImage(wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=AutoGammaImage(wand->images,&wand->images->exception); return(status); } @@ -770,9 +768,7 @@ WandExport MagickBooleanType MagickAutoLevelImage(MagickWand *wand) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - status=AutoLevelImage(wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=AutoLevelImage(wand->images,&wand->images->exception); return(status); } diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 081b2ce46..74e50fa9c 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -807,7 +807,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, Auto Adjust Gamma of image based on its mean */ (void) SyncImageSettings(mogrify_info,*image); - (void) AutoGammaImage(*image); + (void) AutoGammaImage(*image,exception); break; } if (LocaleCompare("auto-level",option+1) == 0) @@ -816,7 +816,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, Perfectly Normalize (max/min stretch) the image */ (void) SyncImageSettings(mogrify_info,*image); - (void) AutoLevelImage(*image); + (void) AutoLevelImage(*image,exception); break; } if (LocaleCompare("auto-orient",option+1) == 0) diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index c752338e8..34cd6e74e 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -10467,7 +10467,7 @@ Mogrify(ref,...) if (attribute_flag[0] != 0) channel=(ChannelType) argument_list[0].integer_reference; PushPixelChannelMap(image,channel); - (void) AutoGammaImage(image); + (void) AutoGammaImage(image,exception); PopPixelChannelMap(image); break; } @@ -10476,7 +10476,7 @@ Mogrify(ref,...) if (attribute_flag[0] != 0) channel=(ChannelType) argument_list[0].integer_reference; PushPixelChannelMap(image,channel); - (void) AutoLevelImage(image); + (void) AutoLevelImage(image,exception); PopPixelChannelMap(image); break; }