From 177e41c20ccba692bc4c7797aeb817b2f80c7e8c Mon Sep 17 00:00:00 2001 From: cristy Date: Sun, 15 Apr 2012 15:08:25 +0000 Subject: [PATCH] --- MagickCore/effect.c | 83 +++++++++++++++++++++++++++++++++--------- MagickCore/fx.c | 27 +++++++++++--- MagickCore/paint.c | 9 ++++- MagickCore/pixel.c | 3 ++ MagickCore/resize.c | 16 ++++++-- MagickCore/statistic.c | 11 +++++- MagickCore/threshold.c | 9 ++++- 7 files changed, 124 insertions(+), 34 deletions(-) diff --git a/MagickCore/effect.c b/MagickCore/effect.c index d4ca01941..a2302146d 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -344,6 +344,12 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, break; center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+ GetPixelChannels(image)*((width-j)/2L); + if (GetPixelMask(image,p) != 0) + { + q+=GetPixelChannels(blur_image); + r+=GetPixelChannels(edge_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -376,8 +382,7 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,q) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -665,6 +670,12 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, break; center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+ GetPixelChannels(image)*((width-j)/2); + if (GetPixelMask(image,p) != 0) + { + q+=GetPixelChannels(sharp_image); + r+=GetPixelChannels(edge_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(sharp_image); i++) { MagickRealType @@ -697,8 +708,7 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (sharp_traits == UndefinedPixelTrait)) continue; - if (((sharp_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,q) != 0)) + if ((sharp_traits & CopyPixelTrait) != 0) { SetPixelChannel(sharp_image,channel,p[center+i],q); continue; @@ -968,6 +978,12 @@ MagickExport Image *BlurImage(const Image *image,const double radius, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(blur_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -997,8 +1013,7 @@ MagickExport Image *BlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -1091,6 +1106,12 @@ MagickExport Image *BlurImage(const Image *image,const double radius, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(blur_image); + q+=GetPixelChannels(blur_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(blur_image); i++) { MagickRealType @@ -1120,8 +1141,7 @@ MagickExport Image *BlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(blur_image,p) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -1957,6 +1977,12 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(blur_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -1986,8 +2012,7 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[i],q); continue; @@ -2752,6 +2777,12 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, if (step >= n) step=n-1; } + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(blur_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -2777,8 +2808,7 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[i],q); continue; @@ -3025,6 +3055,12 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(blur_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3058,8 +3094,7 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (blur_traits == UndefinedPixelTrait)) continue; - if (((blur_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((blur_traits & CopyPixelTrait) != 0) { SetPixelChannel(blur_image,channel,p[center+i],q); continue; @@ -3312,6 +3347,14 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, shade=distance/sqrt((double) normal_distance); } } + if (GetPixelMask(image,p) != 0) + { + pre+=GetPixelChannels(image); + center+=GetPixelChannels(image); + post+=GetPixelChannels(image); + q+=GetPixelChannels(shade_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -3327,8 +3370,7 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, if ((traits == UndefinedPixelTrait) || (shade_traits == UndefinedPixelTrait)) continue; - if (((shade_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,pre) != 0)) + if ((shade_traits & CopyPixelTrait) != 0) { SetPixelChannel(shade_image,channel,center[i],q); continue; @@ -3724,6 +3766,12 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(unsharp_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3742,8 +3790,7 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (unsharp_traits == UndefinedPixelTrait)) continue; - if (((unsharp_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((unsharp_traits & CopyPixelTrait) != 0) { SetPixelChannel(unsharp_image,channel,p[i],q); continue; diff --git a/MagickCore/fx.c b/MagickCore/fx.c index dd4d85595..c0f1f8e00 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -339,6 +339,12 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(noise_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -354,8 +360,7 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type, if ((traits == UndefinedPixelTrait) || (noise_traits == UndefinedPixelTrait)) continue; - if (((noise_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((noise_traits & CopyPixelTrait) != 0) { SetPixelChannel(noise_image,channel,p[i],q); continue; @@ -3058,6 +3063,12 @@ MagickExport Image *FxImage(const Image *image,const char *expression, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(fx_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -3076,8 +3087,7 @@ MagickExport Image *FxImage(const Image *image,const char *expression, if ((traits == UndefinedPixelTrait) || (fx_traits == UndefinedPixelTrait)) continue; - if (((fx_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((fx_traits & CopyPixelTrait) != 0) { SetPixelChannel(fx_image,channel,p[i],q); continue; @@ -3497,6 +3507,12 @@ MagickExport Image *MorphImages(const Image *image, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(morph_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(morph_image); i++) { PixelChannel @@ -3512,8 +3528,7 @@ MagickExport Image *MorphImages(const Image *image, if ((traits == UndefinedPixelTrait) || (morph_traits == UndefinedPixelTrait)) continue; - if (((morph_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((morph_traits & CopyPixelTrait) != 0) { SetPixelChannel(morph_image,channel,p[i],q); continue; diff --git a/MagickCore/paint.c b/MagickCore/paint.c index ca64b58d8..ac33f9277 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -655,6 +655,12 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, } k+=(ssize_t) (image->columns+width); } + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(paint_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -670,8 +676,7 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, if ((traits == UndefinedPixelTrait) || (paint_traits == UndefinedPixelTrait)) continue; - if (((paint_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((paint_traits & CopyPixelTrait) != 0) { SetPixelChannel(paint_image,channel,p[center+i],q); continue; diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index 63ab2f215..d4ef0e52d 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -5652,6 +5652,9 @@ MagickExport void SetPixelChannelMapMask(Image *image, register ssize_t i; + if (image->debug != MagickFalse) + (void) LogMagickEvent(PixelEvent,GetMagickModule(),"%s[%08x]", \ + image->filename,channel_mask); \ image->channel_mask=channel_mask; for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { diff --git a/MagickCore/resize.c b/MagickCore/resize.c index 3bfec7f90..fdf87d2be 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2253,6 +2253,11 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, register ssize_t i; + if (GetPixelMask(resize_image,q) != 0) + { + q+=GetPixelChannels(resize_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(resize_image); i++) { MagickRealType @@ -2279,8 +2284,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, if ((traits == UndefinedPixelTrait) || (resize_traits == UndefinedPixelTrait)) continue; - if (((resize_traits & CopyPixelTrait) != 0) || - (GetPixelMask(resize_image,q) != 0)) + if ((resize_traits & CopyPixelTrait) != 0) { j=(ssize_t) (MagickMin(MagickMax(bisect,(double) start),(double) stop-1.0)+0.5); @@ -2467,6 +2471,11 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, register ssize_t i; + if (GetPixelMask(resize_image,q) != 0) + { + q+=GetPixelChannels(resize_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(resize_image); i++) { MagickRealType @@ -2493,8 +2502,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, if ((traits == UndefinedPixelTrait) || (resize_traits == UndefinedPixelTrait)) continue; - if (((resize_traits & CopyPixelTrait) != 0) || - (GetPixelMask(resize_image,q) != 0)) + if ((resize_traits & CopyPixelTrait) != 0) { j=(ssize_t) (MagickMin(MagickMax(bisect,(double) start),(double) stop-1.0)+0.5); diff --git a/MagickCore/statistic.c b/MagickCore/statistic.c index e6fb94ee1..3ccb07cef 100644 --- a/MagickCore/statistic.c +++ b/MagickCore/statistic.c @@ -857,6 +857,8 @@ MagickExport MagickBooleanType EvaluateImage(Image *image, traits=GetPixelChannelMapTraits(image,channel); if (traits == UndefinedPixelTrait) continue; + if ((traits & CopyPixelTrait) != 0) + continue; q[i]=ClampToQuantum(ApplyEvaluateOperator(random_info[id],q[i],op, value)); } @@ -2288,6 +2290,12 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(statistic_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { PixelChannel @@ -2315,8 +2323,7 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type, if ((traits == UndefinedPixelTrait) || (statistic_traits == UndefinedPixelTrait)) continue; - if (((statistic_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((statistic_traits & CopyPixelTrait) != 0) { SetPixelChannel(statistic_image,channel,p[center+i],q); continue; diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c index 997199f13..76a5dd903 100644 --- a/MagickCore/threshold.c +++ b/MagickCore/threshold.c @@ -239,6 +239,12 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image, register ssize_t i; + if (GetPixelMask(image,p) != 0) + { + p+=GetPixelChannels(image); + q+=GetPixelChannels(threshold_image); + continue; + } for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { MagickRealType @@ -267,8 +273,7 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image, if ((traits == UndefinedPixelTrait) || (threshold_traits == UndefinedPixelTrait)) continue; - if (((threshold_traits & CopyPixelTrait) != 0) || - (GetPixelMask(image,p) != 0)) + if ((threshold_traits & CopyPixelTrait) != 0) { SetPixelChannel(threshold_image,channel,p[center+i],q); continue; -- 2.40.0