]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 10 Aug 2011 17:38:41 +0000 (17:38 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 10 Aug 2011 17:38:41 +0000 (17:38 +0000)
Magick++/lib/Image.cpp
MagickCore/effect.c
MagickCore/enhance.c
MagickCore/enhance.h
MagickCore/histogram.c
MagickCore/magick-config.h
MagickCore/version.h
MagickWand/magick-image.c
MagickWand/mogrify.c
PerlMagick/Magick.xs
coders/msl.c

index 408d8b971e4227e91f18665b3f4a366c85981bda..7d20f4b24472e00ec59d865fc9a7ce33ab17a4f4 100644 (file)
@@ -1256,9 +1256,12 @@ void Magick::Image::level ( const double black_point,
                             const double white_point,
                             const double gamma )
 {
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   modifyImage();
-  (void) LevelImage( image(), black_point, white_point, gamma );
-  throwImageException();
+  (void) LevelImage( image(), black_point, white_point, gamma, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Magnify image by integral size
index e357a2982419eb07c08c581f4150bac1f612b3a9..e2366b0e6a6f000d27a3eae269fab3ec2fe56a53 100644 (file)
@@ -158,7 +158,7 @@ MagickExport MagickBooleanType AdaptiveLevelImage(Image *image,
   if ((flags & SigmaValue) == 0)
     white_point=(double) QuantumRange-black_point;
   if ((flags & AspectValue ) == 0)
-    status=LevelImage(image,black_point,white_point,gamma);
+    status=LevelImage(image,black_point,white_point,gamma,&image->exception);
   else
     status=LevelizeImage(image,black_point,white_point,gamma);
   return(status);
index f0fb7823f07f8393c8267a8bc72a0ad228df3b69..966b598138c67a4378ec1856d9d3244ee6a2e730 100644 (file)
@@ -110,62 +110,39 @@ MagickExport MagickBooleanType AutoGammaImage(Image *image,
   MagickStatusType
     status;
 
+  register ssize_t
+    i;
+
   log_mean=log(0.5);
   if (image->sync != MagickFalse)
     {
       /*
-        Apply gamma correction equally accross all given channels.
+        Apply gamma correction equally across all given channels.
       */
       (void) GetImageMean(image,&mean,&sans,exception);
       gamma=log(mean*QuantumScale)/log_mean;
-      return(LevelImage(image,0.0,(double) QuantumRange,gamma));
+      return(LevelImage(image,0.0,(double) QuantumRange,gamma,exception));
     }
   /*
     Auto-gamma each channel separately.
   */
   status=MagickTrue;
-  if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
-    {
-      PushPixelChannelMap(image,RedChannel);
-      (void) GetImageMean(image,&mean,&sans,exception);
-      gamma=log(mean*QuantumScale)/log_mean;
-      status=status && LevelImage(image,0.0,(double) QuantumRange,gamma);
-      PopPixelChannelMap(image);
-    }
-  if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
-    {
-      PushPixelChannelMap(image,GreenChannel);
-      (void) GetImageMean(image,&mean,&sans,exception);
-      gamma=log(mean*QuantumScale)/log_mean;
-      status=status && LevelImage(image,0.0,(double) QuantumRange,gamma);
-      PopPixelChannelMap(image);
-    }
-  if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
-    {
-      PushPixelChannelMap(image,BlueChannel);
-      (void) GetImageMean(image,&mean,&sans,exception);
-      gamma=log(mean*QuantumScale)/log_mean;
-      status=status && LevelImage(image,0.0,(double) QuantumRange,gamma);
-      PopPixelChannelMap(image);
-    }
-  if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
-      (image->colorspace == CMYKColorspace))
-    {
-      PushPixelChannelMap(image,BlackChannel);
-      (void) GetImageMean(image,&mean,&sans,exception);
-      gamma=log(mean*QuantumScale)/log_mean;
-      status=status && LevelImage(image,0.0,(double) QuantumRange,gamma);
-      PopPixelChannelMap(image);
-    }
-  if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-      (image->matte == MagickTrue))
-    {
-      PushPixelChannelMap(image,AlphaChannel);
-      (void) GetImageMean(image,&mean,&sans,exception);
-      gamma=log(mean*QuantumScale)/log_mean;
-      status=status && LevelImage(image,0.0,(double) QuantumRange,gamma);
-      PopPixelChannelMap(image);
-    }
+  for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+  {
+    PixelTrait
+      traits;
+
+    traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+    if ((traits & UpdatePixelTrait) == 0)
+      continue;
+    PushPixelChannelMap(image,(ChannelType) i);
+    status=GetImageMean(image,&mean,&sans,exception);
+    gamma=log(mean*QuantumScale)/log_mean;
+    status&=LevelImage(image,0.0,(double) QuantumRange,gamma,exception);
+    PopPixelChannelMap(image);
+    if (status == MagickFalse)
+      break;
+  }
   return(status != 0 ? MagickTrue : MagickFalse);
 }
 \f
@@ -2271,19 +2248,23 @@ MagickExport MagickBooleanType HaldClutImage(Image *image,
 %
 %  The format of the LevelImage method is:
 %
-%      MagickBooleanType LevelImage(Image *image,const char *levels)
+%      MagickBooleanType LevelImage(Image *image,const double black_point,
+%        const double white_point,const double gamma,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o levels: Specify the levels where the black and white points have the
-%      range of 0-QuantumRange, and gamma has the range 0-10 (e.g. 10x90%+2).
-%      A '!' flag inverts the re-mapping.
+%    o black_point: The level to map zero (black) to.
+%
+%    o white_point: The level to map QuantumRange (white) to.
+%
+%    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)
+  const double black_point,const double white_point,const double gamma,
+  ExceptionInfo *exception)
 {
 #define LevelImageTag  "Level/Image"
 #define LevelQuantum(x) (ClampToQuantum((MagickRealType) QuantumRange* \
@@ -2292,9 +2273,6 @@ MagickExport MagickBooleanType LevelImage(Image *image,
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -2341,7 +2319,6 @@ MagickExport MagickBooleanType LevelImage(Image *image,
   */
   status=MagickTrue;
   progress=0;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(progress,status)
@@ -2365,22 +2342,17 @@ MagickExport MagickBooleanType LevelImage(Image *image,
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
-        SetPixelRed(image,LevelQuantum(
-          GetPixelRed(image,q)),q);
+        SetPixelRed(image,LevelQuantum(GetPixelRed(image,q)),q);
       if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
-        SetPixelGreen(image,
-          LevelQuantum(GetPixelGreen(image,q)),q);
+        SetPixelGreen(image,LevelQuantum(GetPixelGreen(image,q)),q);
       if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
-        SetPixelBlue(image,
-          LevelQuantum(GetPixelBlue(image,q)),q);
+        SetPixelBlue(image,LevelQuantum(GetPixelBlue(image,q)),q);
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
           (image->matte == MagickTrue))
-        SetPixelAlpha(image,
-          LevelQuantum(GetPixelAlpha(image,q)),q);
+        SetPixelAlpha(image,LevelQuantum(GetPixelAlpha(image,q)),q);
       if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
           (image->colorspace == CMYKColorspace))
-        SetPixelBlack(image,
-          LevelQuantum(GetPixelBlack(image,q)),q);
+        SetPixelBlack(image,LevelQuantum(GetPixelBlack(image,q)),q);
       q+=GetPixelChannels(image);
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -2437,7 +2409,7 @@ MagickExport MagickBooleanType LevelImage(Image *image,
 %
 %    o black_point: The level to map zero (black) to.
 %
-%    o white_point: The level to map QuantiumRange (white) to.
+%    o white_point: The level to map QuantumRange (white) to.
 %
 %    o gamma: adjust gamma by this factor before mapping values.
 %
@@ -2613,33 +2585,38 @@ MagickExport MagickBooleanType LevelImageColors(Image *image,
       if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
         {
           PushPixelChannelMap(image,RedChannel);
-          status|=LevelImage(image,black_color->red,white_color->red,1.0);
+          status|=LevelImage(image,black_color->red,white_color->red,1.0,
+            &image->exception);
           PopPixelChannelMap(image);
         }
       if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
         {
           PushPixelChannelMap(image,GreenChannel);
-          status|=LevelImage(image,black_color->green,white_color->green,1.0);
+          status|=LevelImage(image,black_color->green,white_color->green,1.0,
+            &image->exception);
           PopPixelChannelMap(image);
         }
       if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
         {
           PushPixelChannelMap(image,BlueChannel);
-          status|=LevelImage(image,black_color->blue,white_color->blue,1.0);
+          status|=LevelImage(image,black_color->blue,white_color->blue,1.0,
+            &image->exception);
           PopPixelChannelMap(image);
         }
       if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
           (image->colorspace == CMYKColorspace))
         {
           PushPixelChannelMap(image,BlackChannel);
-          status|=LevelImage(image,black_color->black,white_color->black,1.0);
+          status|=LevelImage(image,black_color->black,white_color->black,1.0,
+            &image->exception);
           PopPixelChannelMap(image);
         }
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
           (image->matte == MagickTrue))
         {
           PushPixelChannelMap(image,AlphaChannel);
-          status|=LevelImage(image,black_color->alpha,white_color->alpha,1.0);
+          status|=LevelImage(image,black_color->alpha,white_color->alpha,1.0,
+            &image->exception);
           PopPixelChannelMap(image);
         }
     }
@@ -2782,7 +2759,7 @@ MagickExport MagickBooleanType LinearStretchImage(Image *image,
       break;
   }
   histogram=(MagickRealType *) RelinquishMagickMemory(histogram);
-  status=LevelImage(image,(double) black,(double) white,1.0);
+  status=LevelImage(image,(double) black,(double) white,1.0,&image->exception);
   return(status);
 }
 \f
index 7e466db6949fa8b4564ab00300db812a0a920ea1..909256dbc06c8a286058d4ef96b4ae1fc6c56229 100644 (file)
@@ -33,7 +33,7 @@ extern MagickExport MagickBooleanType
   EqualizeImage(Image *image),
   GammaImage(Image *,const double,ExceptionInfo *),
   HaldClutImage(Image *,const Image *),
-  LevelImage(Image *,const double,const double,const double),
+  LevelImage(Image *,const double,const double,const double,ExceptionInfo *),
   LevelizeImage(Image *,const double,const double,const double),
   LevelImageColors(Image *,const PixelInfo *,const PixelInfo *,
     const MagickBooleanType),
index a8087a302833b6df8fa3df81a44d237c843badab..a1db3db7ad69c1d9a830288397ac5e9870a67018 100644 (file)
@@ -997,7 +997,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       return(status != 0 ? MagickTrue : MagickFalse);
     }
   /*
@@ -1010,7 +1010,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       PopPixelChannelMap(image);
     }
   if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
@@ -1020,7 +1020,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       PopPixelChannelMap(image);
     }
   if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
@@ -1030,7 +1030,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       PopPixelChannelMap(image);
     }
   if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
@@ -1041,7 +1041,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       PopPixelChannelMap(image);
     }
   if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
@@ -1052,7 +1052,7 @@ MagickExport MagickBooleanType MinMaxStretchImage(Image *image,
       min+=black;
       max-=white;
       if (fabs(min-max) >= MagickEpsilon)
-        status&=LevelImage(image,min,max,1.0);
+        status&=LevelImage(image,min,max,1.0,exception);
       PopPixelChannelMap(image);
     }
   return(status != 0 ? MagickTrue : MagickFalse);
index f21ee5d2783f2222e69a0d5f8f583b4511126544..500da0bb60145bfb7a8368d9346b13a533721997 100644 (file)
@@ -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
 #endif
 
 /* Define if you have the <lcms2.h> header file. */
-#ifndef MAGICKCORE_HAVE_LCMS2_H
-#define MAGICKCORE_HAVE_LCMS2_H 1
-#endif
+/* #undef HAVE_LCMS2_H */
 
 /* Define if you have the <lcms2/lcms2.h> header file. */
 /* #undef HAVE_LCMS2_LCMS2_H */
 
 /* Define if you have the <lcms.h> header file. */
-/* #undef HAVE_LCMS_H */
+#ifndef MAGICKCORE_HAVE_LCMS_H
+#define MAGICKCORE_HAVE_LCMS_H 1
+#endif
 
 /* Define if you have the <lcms/lcms.h> header file. */
 /* #undef HAVE_LCMS_LCMS_H */
 #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
 #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
 
 /* 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 */
 /* #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
 #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
 
 
 /* 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 */
 /* #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). */
index 993f7d4d6d3e9a60d039342b82a73a72951ec564..e6a5d695757d93066113009a5c902a32a813f600 100644 (file)
@@ -27,7 +27,7 @@ extern "C" {
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2011 ImageMagick Studio LLC"
-#define MagickSVNRevision  "4944"
+#define MagickSVNRevision  "exported"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  5,0,0
index f7ba4640ace1b84aa3b9e4928c26b278ab616c97..01a95840e3bafefbdcc1a59b7e82db0ea5828a72 100644 (file)
@@ -6049,9 +6049,8 @@ WandExport MagickBooleanType MagickLevelImage(MagickWand *wand,
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=LevelImage(wand->images,black_point,white_point,gamma);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
+  status=LevelImage(wand->images,black_point,white_point,gamma,
+    &wand->images->exception);
   return(status);
 }
 \f
index 7e75fbebdca16af88564ff6a14b074535941e8a5..945ca11b9532ab484b4ccd31347f495f7aec9cdf 100644 (file)
@@ -1870,7 +1870,8 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
             if ((*option == '+') || ((flags & AspectValue) != 0))
               (void) LevelizeImage(*image,black_point,white_point,gamma);
             else
-              (void) LevelImage(*image,black_point,white_point,gamma);
+              (void) LevelImage(*image,black_point,white_point,gamma,
+                exception);
             InheritException(exception,&(*image)->exception);
             break;
           }
index ca5181452aaddea62c749e16b071fc1ba0cf8dcb..fe0dd937e401877bbf42dfadf1ec9edb55ab8f91 100644 (file)
@@ -9373,7 +9373,7 @@ Mogrify(ref,...)
               attribute_flag[0]=attribute_flag[5];
             }
           PushPixelChannelMap(image,channel);
-          (void) LevelImage(image,black_point,white_point,gamma);
+          (void) LevelImage(image,black_point,white_point,gamma,exception);
           PopPixelChannelMap(image);
           break;
         }
index 9818d5225f940394a15ba75e30bcd8fcdfc1da3d..56641935ba619d21b79ec503ce08ca2656397deb 100644 (file)
@@ -3485,7 +3485,8 @@ static void MSLStartElement(void *context,const xmlChar *tag,
         }
 
         /* process image */
-        LevelImage(msl_info->image[n],levelBlack,levelWhite,levelGamma);
+        LevelImage(msl_info->image[n],levelBlack,levelWhite,levelGamma,
+          &msl_info->image[n]->exception);
         break;
       }
     }