From: cristy Date: Tue, 24 Jan 2012 00:26:46 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6312 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8561541d3e184b4f8ace71d6274cd27f40fbc79;p=imagemagick --- diff --git a/MagickCore/effect.c b/MagickCore/effect.c index 55dc459e0..e0072b87d 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -434,7 +434,7 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_AdaptiveBlurImage) + #pragma omp critical (MagickCore_AdaptiveBlurImage) #endif proceed=SetImageProgress(image,AdaptiveBlurImageTag,progress++, image->rows); @@ -756,7 +756,7 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_AdaptiveSharpenImage) + #pragma omp critical (MagickCore_AdaptiveSharpenImage) #endif proceed=SetImageProgress(image,AdaptiveSharpenImageTag,progress++, image->rows); @@ -2154,7 +2154,7 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, motion_view=AcquireCacheView(image); blur_view=AcquireCacheView(blur_image); #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp parallel for schedule(static) shared(progress,status) + #pragma omp parallel for schedule(static,4) shared(progress,status) #endif for (y=0; y < (ssize_t) image->rows; y++) { @@ -2265,7 +2265,7 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_MotionBlurImage) + #pragma omp critical (MagickCore_MotionBlurImage) #endif proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows); if (proceed == MagickFalse) @@ -3060,7 +3060,7 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_RadialBlurImage) + #pragma omp critical (MagickCore_RadialBlurImage) #endif proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows); if (proceed == MagickFalse) @@ -3362,7 +3362,7 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_SelectiveBlurImage) + #pragma omp critical (MagickCore_SelectiveBlurImage) #endif proceed=SetImageProgress(image,SelectiveBlurImageTag,progress++, image->rows); @@ -3583,7 +3583,7 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_ShadeImage) + #pragma omp critical (MagickCore_ShadeImage) #endif proceed=SetImageProgress(image,ShadeImageTag,progress++,image->rows); if (proceed == MagickFalse) @@ -3831,7 +3831,7 @@ MagickExport Image *SpreadImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_SpreadImage) + #pragma omp critical (MagickCore_SpreadImage) #endif proceed=SetImageProgress(image,SpreadImageTag,progress++,image->rows); if (proceed == MagickFalse) @@ -3994,7 +3994,7 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_UnsharpMaskImage) + #pragma omp critical (MagickCore_UnsharpMaskImage) #endif proceed=SetImageProgress(image,SharpenImageTag,progress++,image->rows); if (proceed == MagickFalse) diff --git a/MagickCore/paint.c b/MagickCore/paint.c index c8b31a954..27c60d23c 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -551,6 +551,7 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, width; ssize_t + center, y; /* @@ -582,6 +583,8 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, */ status=MagickTrue; progress=0; + center=(ssize_t) GetPixelChannels(image)*(image->columns+width)* + (width/2L)+GetPixelChannels(image)*(width/2L); image_view=AcquireCacheView(image); paint_view=AcquireCacheView(paint_image); #if defined(MAGICKCORE_OPENMP_SUPPORT) @@ -625,45 +628,53 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius, ssize_t j, k, + n, v; /* Assign most frequent color. */ - i=0; + k=0; j=0; count=0; - (void) ResetMagickMemory(histogram,0,NumberPaintBins*sizeof(*histogram)); + (void) ResetMagickMemory(histogram,0,NumberPaintBins* sizeof(*histogram)); for (v=0; v < (ssize_t) width; v++) { for (u=0; u < (ssize_t) width; u++) { - k=(ssize_t) ScaleQuantumToChar(GetPixelIntensity(image,p+ - GetPixelChannels(image)*(u+i))); - histogram[k]++; - if (histogram[k] > count) + n=(ssize_t) ScaleQuantumToChar(GetPixelIntensity(image,p+ + GetPixelChannels(image)*(u+k))); + histogram[n]++; + if (histogram[n] > count) { - j=i+u; - count=histogram[k]; + j=k+u; + count=histogram[n]; } } - i+=(ssize_t) (image->columns+width); + k+=(ssize_t) (image->columns+width); + } + for (i=0; i < (ssize_t) GetPixelChannels(image); i++) + { + PixelChannel + channel; + + PixelTrait + paint_traits, + traits; + + channel=GetPixelChannelMapChannel(image,i); + traits=GetPixelChannelMapTraits(image,channel); + paint_traits=GetPixelChannelMapTraits(paint_image,channel); + if ((traits == UndefinedPixelTrait) || + (paint_traits == UndefinedPixelTrait)) + continue; + if ((paint_traits & CopyPixelTrait) != 0) + { + SetPixelChannel(paint_image,channel,p[center+i],q); + continue; + } + SetPixelChannel(paint_image,channel,p[j*GetPixelChannels(image)+i],q); } - if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) - SetPixelRed(paint_image,GetPixelRed(image,p+j* - GetPixelChannels(image)),q); - if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) - SetPixelGreen(paint_image,GetPixelGreen(image,p+j* - GetPixelChannels(image)),q); - if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) - SetPixelBlue(paint_image,GetPixelBlue(image,p+j* - GetPixelChannels(image)),q); - if ((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) - SetPixelBlack(paint_image,GetPixelBlack(image,p+j* - GetPixelChannels(image)),q); - if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) - SetPixelAlpha(paint_image,GetPixelAlpha(image,p+j* - GetPixelChannels(image)),q); p+=GetPixelChannels(image); q+=GetPixelChannels(paint_image); }