]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 8 Jul 2011 02:33:26 +0000 (02:33 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 8 Jul 2011 02:33:26 +0000 (02:33 +0000)
MagickCore/methods.h
MagickCore/quantize.c
MagickCore/quantize.h
MagickCore/threshold.c
MagickCore/threshold.h
MagickWand/magick-image.c
MagickWand/magick-image.h
MagickWand/mogrify.c
PerlMagick/Magick.xs

index 591ab9f54ae75f0b3459909e4fb5713f2bec9547..b0ec36e4313cd6b36fb7b912858d10bb75ed117b 100644 (file)
@@ -789,7 +789,7 @@ extern "C" {
 #define OptimizePlusImageLayers  PrependMagickMethod(OptimizePlusImageLayers)
 #define OrderedDitherImageChannel  PrependMagickMethod(OrderedDitherImageChannel)
 #define OrderedDitherImage  PrependMagickMethod(OrderedDitherImage)
-#define OrderedPosterizeImageChannel  PrependMagickMethod(OrderedPosterizeImageChannel)
+#define OrderedPosterizeImage  PrependMagickMethod(OrderedPosterizeImage)
 #define OrderedPosterizeImage  PrependMagickMethod(OrderedPosterizeImage)
 #define PackbitsEncodeImage  PrependMagickMethod(PackbitsEncodeImage)
 #define PaintFloodfillImage  PrependMagickMethod(PaintFloodfillImage)
index b62cd56d5aa61f3ad1adbd9054eba0c4d475c5a1..73e6e24aa6bd4e01b5a29b947b6785da8eba836e 100644 (file)
@@ -2279,9 +2279,6 @@ MagickExport void GetQuantizeInfo(QuantizeInfo *quantize_info)
 %
 %      MagickBooleanType PosterizeImage(Image *image,const size_t levels,
 %        const MagickBooleanType dither)
-%      MagickBooleanType PosterizeImageChannel(Image *image,
-%        const ChannelType channel,const size_t levels,
-%        const MagickBooleanType dither)
 %
 %  A description of each parameter follows:
 %
@@ -2307,16 +2304,6 @@ static inline ssize_t MagickRound(MagickRealType x)
 
 MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
   const MagickBooleanType dither)
-{
-  MagickBooleanType
-    status;
-
-  status=PosterizeImageChannel(image,DefaultChannels,levels,dither);
-  return(status);
-}
-
-MagickExport MagickBooleanType PosterizeImageChannel(Image *image,
-  const ChannelType channel,const size_t levels,const MagickBooleanType dither)
 {
 #define PosterizeImageTag  "Posterize/Image"
 #define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \
@@ -2415,7 +2402,7 @@ MagickExport MagickBooleanType PosterizeImageChannel(Image *image,
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-        #pragma omp critical (MagickCore_PosterizeImageChannel)
+        #pragma omp critical (MagickCore_PosterizeImage)
 #endif
         proceed=SetImageProgress(image,PosterizeImageTag,progress++,
           image->rows);
index e0303ead6d295160982210fcdde1833ec6203808..61d6d29953b12ee6a5a32a1584b60e21dc9c97fc 100644 (file)
@@ -60,8 +60,6 @@ extern MagickExport MagickBooleanType
   CompressImageColormap(Image *),
   GetImageQuantizeError(Image *),
   PosterizeImage(Image *,const size_t,const MagickBooleanType),
-  PosterizeImageChannel(Image *,const ChannelType,const size_t,
-    const MagickBooleanType),
   QuantizeImage(const QuantizeInfo *,Image *),
   QuantizeImages(const QuantizeInfo *,Image *),
   RemapImage(const QuantizeInfo *,Image *,const Image *),
index e2ec886d1b6934f88aa3ad10d728af28df5e4c79..da42061a637fbcc9b64a55fdc992eafd664eb0b5 100644 (file)
@@ -1237,16 +1237,11 @@ MagickExport MagickBooleanType ListThresholdMaps(FILE *file,
 %
 %      MagickBooleanType OrderedPosterizeImage(Image *image,
 %        const char *threshold_map,ExceptionInfo *exception)
-%      MagickBooleanType OrderedPosterizeImageChannel(Image *image,
-%        const ChannelType channel,const char *threshold_map,
-%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel or channels to be thresholded.
-%
 %    o threshold_map: A string containing the name of the threshold dither
 %      map to use, followed by zero or more numbers representing the number
 %      of color levels tho dither between.
@@ -1271,17 +1266,6 @@ MagickExport MagickBooleanType ListThresholdMaps(FILE *file,
 */
 MagickExport MagickBooleanType OrderedPosterizeImage(Image *image,
   const char *threshold_map,ExceptionInfo *exception)
-{
-  MagickBooleanType
-    status;
-
-  status=OrderedPosterizeImageChannel(image,DefaultChannels,threshold_map,
-    exception);
-  return(status);
-}
-
-MagickExport MagickBooleanType OrderedPosterizeImageChannel(Image *image,
-  const ChannelType channel,const char *threshold_map,ExceptionInfo *exception)
 {
 #define DitherImageTag  "Dither/Image"
 
@@ -1346,17 +1330,28 @@ MagickExport MagickBooleanType OrderedPosterizeImageChannel(Image *image,
     char *p;
 
     p = strchr((char *) threshold_map,',');
+    levels.red=0;
+    levels.green=0;
+    levels.blue=0;
+    levels.black=0;
+    levels.alpha=0;
     if ( p != (char *)NULL && isdigit((int) ((unsigned char) *(++p))) )
       levels.black = (unsigned int) strtoul(p, &p, 10);
     else
       levels.black = 2;
 
-    levels.red     = ((channel & RedChannel  )   != 0) ? levels.black : 0;
-    levels.green   = ((channel & GreenChannel)   != 0) ? levels.black : 0;
-    levels.blue    = ((channel & BlueChannel)    != 0) ? levels.black : 0;
-    levels.black   = ((channel & BlackChannel)   != 0 &&
-      (image->colorspace == CMYKColorspace)) ? levels.black : 0;
-    levels.alpha = ((GetPixelAlphaTraits(image) & ActivePixelTrait) != 0) ? levels.black : 0;
+    if ((GetPixelRedTraits(image) & ActivePixelTrait) != 0)
+      levels.red=levels.black;
+    if ((GetPixelGreenTraits(image) & ActivePixelTrait) != 0)
+      levels.green=levels.black;
+    if ((GetPixelBlueTraits(image) & ActivePixelTrait) != 0)
+      levels.blue=levels.black;
+    if (((GetPixelBlackTraits(image) & ActivePixelTrait) != 0) &&
+        (image->colorspace == CMYKColorspace))
+      levels.black=levels.black;
+    if (((GetPixelAlphaTraits(image) & ActivePixelTrait) != 0) &&
+        (image->matte != MagickFalse))
+      levels.alpha=levels.black;
 
     /* if more than a single number, each channel has a separate value */
     if ( p != (char *) NULL && *p == ',' ) {
@@ -1503,7 +1498,7 @@ printf("DEBUG levels  r=%u g=%u b=%u a=%u i=%u\n",
             proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_OrderedPosterizeImageChannel)
+  #pragma omp critical (MagickCore_OrderedPosterizeImage)
 #endif
           proceed=SetImageProgress(image,DitherImageTag,progress++,image->rows);
           if (proceed == MagickFalse)
@@ -1625,7 +1620,7 @@ MagickExport MagickBooleanType RandomThresholdImageChannel(Image *image,
         /*
           Backward Compatibility -- ordered-dither -- IM v 6.2.9-6.
         */
-        status=OrderedPosterizeImageChannel(image,channel,thresholds,exception);
+        status=OrderedPosterizeImage(image,thresholds,exception);
         return(status);
       }
   /*
index 1315248a80790df9152e3f254fa6a6cb43b07494..2743d46db5c79e4a8119aa271089b03da7c30fe9 100644 (file)
@@ -43,8 +43,6 @@ extern MagickExport MagickBooleanType
   ClampImageChannel(Image *,const ChannelType),
   ListThresholdMaps(FILE *,ExceptionInfo *),
   OrderedPosterizeImage(Image *,const char *,ExceptionInfo *),
-  OrderedPosterizeImageChannel(Image *,const ChannelType,const char *,
-    ExceptionInfo *),
   RandomThresholdImage(Image *,const char *,ExceptionInfo *),
   RandomThresholdImageChannel(Image *,const ChannelType,const char *,
     ExceptionInfo *),
index f9ee5a495428f18b0d18a7e896101c7b42055c4b..75417ef5c46593cc2b984beaabe826b0f74a94a1 100644 (file)
@@ -7326,15 +7326,11 @@ WandExport MagickWand *MagickOptimizeImageLayers(MagickWand *wand)
 %
 %      MagickBooleanType MagickOrderedPosterizeImage(MagickWand *wand,
 %        const char *threshold_map)
-%      MagickBooleanType MagickOrderedPosterizeImageChannel(MagickWand *wand,
-%        const ChannelType channel,const char *threshold_map)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel or channels to be thresholded.
-%
 %    o threshold_map: A string containing the name of the threshold dither
 %      map to use, followed by zero or more numbers representing the number of
 %      color levels tho dither between.
@@ -7355,31 +7351,19 @@ WandExport MagickWand *MagickOptimizeImageLayers(MagickWand *wand)
 %      minimim of dithering.
 %
 */
-
 WandExport MagickBooleanType MagickOrderedPosterizeImage(MagickWand *wand,
   const char *threshold_map)
 {
   MagickBooleanType
     status;
 
-  status=MagickOrderedPosterizeImageChannel(wand,DefaultChannels,threshold_map);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickOrderedPosterizeImageChannel(
-  MagickWand *wand,const ChannelType channel,const char *threshold_map)
-{
-  MagickBooleanType
-    status;
-
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == WandSignature);
   if (wand->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=OrderedPosterizeImageChannel(wand->images,channel,threshold_map,
-    wand->exception);
+  status=OrderedPosterizeImage(wand->images,threshold_map,wand->exception);
   return(status);
 }
 \f
index 0a17b2ee0a5e0dcaa0fcb3e9c25e22de7104037b..fbaaba99dee0c347e7139a1730080f6d8d8e1007 100644 (file)
@@ -215,8 +215,6 @@ extern WandExport MagickBooleanType
   MagickOpaquePaintImageChannel(MagickWand *,const ChannelType,
     const PixelWand *,const PixelWand *,const double,const MagickBooleanType),
   MagickOrderedPosterizeImage(MagickWand *,const char *),
-  MagickOrderedPosterizeImageChannel(MagickWand *,const ChannelType,
-    const char *),
   MagickTransparentPaintImage(MagickWand *,const PixelWand *,
     const double,const double,const MagickBooleanType invert),
   MagickPingImage(MagickWand *,const char *),
index 0b2e82f99c6261c7b0effc926939ed6c4661f20f..3a43ed2803c048e087134e88d30c15c9793745a4 100644 (file)
@@ -2198,8 +2198,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc,
         if (LocaleCompare("ordered-dither",option+1) == 0)
           {
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) OrderedPosterizeImageChannel(*image,channel,argv[i+1],
-              exception);
+            (void) OrderedPosterizeImage(*image,argv[i+1],exception);
             break;
           }
         break;
index 8d081f15cf1ee2f165ef846b42f757aca958a82b..bb40e9152e303d0905b27c5c4470b78338e60eb5 100644 (file)
@@ -9268,8 +9268,10 @@ Mogrify(ref,...)
             argument_list[0].string_reference="o8x8";
           if (attribute_flag[1] != 0)
             channel=(ChannelType) argument_list[1].integer_reference;
-          (void) OrderedPosterizeImageChannel(image,channel,
-            argument_list[0].string_reference,exception);
+          PushPixelComponentMap(image,channel);
+          (void) OrderedPosterizeImage(image,argument_list[0].string_reference,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 72:  /* Shave */