From: cristy Date: Fri, 8 Jul 2011 02:33:26 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7332 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=130206720ba69f6ad1a981900a035e2c33714759;p=imagemagick --- diff --git a/MagickCore/methods.h b/MagickCore/methods.h index 591ab9f54..b0ec36e43 100644 --- a/MagickCore/methods.h +++ b/MagickCore/methods.h @@ -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) diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c index b62cd56d5..73e6e24aa 100644 --- a/MagickCore/quantize.c +++ b/MagickCore/quantize.c @@ -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); diff --git a/MagickCore/quantize.h b/MagickCore/quantize.h index e0303ead6..61d6d2995 100644 --- a/MagickCore/quantize.h +++ b/MagickCore/quantize.h @@ -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 *), diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c index e2ec886d1..da42061a6 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -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); } /* diff --git a/MagickCore/threshold.h b/MagickCore/threshold.h index 1315248a8..2743d46db 100644 --- a/MagickCore/threshold.h +++ b/MagickCore/threshold.h @@ -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 *), diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index f9ee5a495..75417ef5c 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -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); } diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h index 0a17b2ee0..fbaaba99d 100644 --- a/MagickWand/magick-image.h +++ b/MagickWand/magick-image.h @@ -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 *), diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 0b2e82f99..3a43ed280 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -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; diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index 8d081f15c..bb40e9152 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -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 */