From: cristy Date: Sun, 18 Dec 2011 15:54:24 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6527 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3aa9375ebfc21a5356d6b1754bcd1b162ad666c4;p=imagemagick --- diff --git a/MagickCore/cache.c b/MagickCore/cache.c index cfd0f404e..660b71e69 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -2242,68 +2242,6 @@ static MagickBooleanType GetOneAuthenticPixelFromCache(Image *image, % % % % % % -% G e t O n e V i r t u a l M a g i c k P i x e l % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% GetOneVirtualMagickPixel() returns a single pixel at the specified (x,y) -% location. The image background color is returned if an error occurs. If -% you plan to modify the pixel, use GetOneAuthenticPixel() instead. -% -% The format of the GetOneVirtualMagickPixel() method is: -% -% MagickBooleanType GetOneVirtualMagickPixel(const Image image, -% const VirtualPixelMethod virtual_pixel_method,const ssize_t x, -% const ssize_t y,PixelInfo *pixel,ExceptionInfo exception) -% -% A description of each parameter follows: -% -% o image: the image. -% -% o virtual_pixel_method: the virtual pixel method. -% -% o x,y: these values define the location of the pixel to return. -% -% o pixel: return a pixel at the specified (x,y) location. -% -% o exception: return any errors or warnings in this structure. -% -*/ -MagickExport MagickBooleanType GetOneVirtualMagickPixel(const Image *image, - const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y, - PixelInfo *pixel,ExceptionInfo *exception) -{ - CacheInfo - *cache_info; - - const int - id = GetOpenMPThreadId(); - - register const Quantum - *p; - - assert(image != (const Image *) NULL); - assert(image->signature == MagickSignature); - assert(image->cache != (Cache) NULL); - cache_info=(CacheInfo *) image->cache; - assert(cache_info->signature == MagickSignature); - assert(id < (int) cache_info->number_threads); - p=GetVirtualPixelsFromNexus(image,virtual_pixel_method,x,y,1UL,1UL, - cache_info->nexus_info[id],exception); - GetPixelInfo(image,pixel); - if (p == (const Quantum *) NULL) - return(MagickFalse); - GetPixelInfoPixel(image,p,pixel); - return(MagickTrue); -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % % G e t O n e V i r t u a l P i x e l % % % % % @@ -2462,6 +2400,68 @@ static MagickBooleanType GetOneVirtualPixelFromCache(const Image *image, % % % % % % +% G e t O n e V i r t u a l P i x e l I n f o % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% GetOneVirtualPixelInfo() returns a single pixel at the specified (x,y) +% location. The image background color is returned if an error occurs. If +% you plan to modify the pixel, use GetOneAuthenticPixel() instead. +% +% The format of the GetOneVirtualPixelInfo() method is: +% +% MagickBooleanType GetOneVirtualPixelInfo(const Image image, +% const VirtualPixelMethod virtual_pixel_method,const ssize_t x, +% const ssize_t y,PixelInfo *pixel,ExceptionInfo exception) +% +% A description of each parameter follows: +% +% o image: the image. +% +% o virtual_pixel_method: the virtual pixel method. +% +% o x,y: these values define the location of the pixel to return. +% +% o pixel: return a pixel at the specified (x,y) location. +% +% o exception: return any errors or warnings in this structure. +% +*/ +MagickExport MagickBooleanType GetOneVirtualPixelInfo(const Image *image, + const VirtualPixelMethod virtual_pixel_method,const ssize_t x,const ssize_t y, + PixelInfo *pixel,ExceptionInfo *exception) +{ + CacheInfo + *cache_info; + + const int + id = GetOpenMPThreadId(); + + register const Quantum + *p; + + assert(image != (const Image *) NULL); + assert(image->signature == MagickSignature); + assert(image->cache != (Cache) NULL); + cache_info=(CacheInfo *) image->cache; + assert(cache_info->signature == MagickSignature); + assert(id < (int) cache_info->number_threads); + p=GetVirtualPixelsFromNexus(image,virtual_pixel_method,x,y,1UL,1UL, + cache_info->nexus_info[id],exception); + GetPixelInfo(image,pixel); + if (p == (const Quantum *) NULL) + return(MagickFalse); + GetPixelInfoPixel(image,p,pixel); + return(MagickTrue); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + G e t P i x e l C a c h e C o l o r s p a c e % % % % % @@ -3786,9 +3786,8 @@ MagickPrivate const Quantum *GetVirtualPixelsNexus(const Cache cache, % */ -static inline void MagickPixelCompositeMask(const PixelInfo *p, - const MagickRealType alpha,const PixelInfo *q, - const MagickRealType beta,PixelInfo *composite) +static inline void MaskPixelOver(const PixelInfo *p,const MagickRealType alpha, + const PixelInfo *q,const MagickRealType beta,PixelInfo *composite) { MagickRealType gamma; @@ -3866,7 +3865,7 @@ static MagickBooleanType MaskPixelCacheNexus(Image *image,NexusInfo *nexus_info, break; GetPixelInfoPixel(image,p,&alpha); GetPixelInfoPixel(image,q,&beta); - MagickPixelCompositeMask(&beta,(MagickRealType) GetPixelIntensity(image,r), + MaskPixelOver(&beta,(MagickRealType) GetPixelIntensity(image,r), &alpha,alpha.alpha,&beta); SetPixelRed(image,ClampToQuantum(beta.red),q); SetPixelGreen(image,ClampToQuantum(beta.green),q); diff --git a/MagickCore/cache.h b/MagickCore/cache.h index 6902644f5..4d1f6bac4 100644 --- a/MagickCore/cache.h +++ b/MagickCore/cache.h @@ -33,7 +33,7 @@ extern MagickExport const void *GetVirtualMetacontent(const Image *); extern MagickExport MagickBooleanType - GetOneVirtualMagickPixel(const Image *,const VirtualPixelMethod, + GetOneVirtualPixelInfo(const Image *,const VirtualPixelMethod, const ssize_t,const ssize_t,PixelInfo *,ExceptionInfo *), GetOneVirtualPixel(const Image *,const ssize_t,const ssize_t,Quantum *, ExceptionInfo *), diff --git a/MagickCore/composite.c b/MagickCore/composite.c index ee1437d51..a8bd90fcf 100644 --- a/MagickCore/composite.c +++ b/MagickCore/composite.c @@ -2277,7 +2277,7 @@ MagickExport MagickBooleanType CompositeImage(Image *image, } default: { - (void) GetOneVirtualMagickPixel(composite_image, + (void) GetOneVirtualPixelInfo(composite_image, GetPixelCacheVirtualMethod(composite_image),x-x_offset,y- y_offset,&composite,exception); break; diff --git a/MagickCore/display.c b/MagickCore/display.c index 519019030..6d0369af1 100644 --- a/MagickCore/display.c +++ b/MagickCore/display.c @@ -3826,7 +3826,7 @@ static MagickBooleanType XColorEditImage(Display *display, /* Update color information using floodfill algorithm. */ - (void) GetOneVirtualMagickPixel(*image, + (void) GetOneVirtualPixelInfo(*image, GetPixelCacheVirtualMethod(*image),(ssize_t) x_offset,(ssize_t) y_offset,&target,exception); if (method == FillToBorderMethod) @@ -10168,7 +10168,7 @@ static MagickBooleanType XMatteEditImage(Display *display, /* Update matte information using floodfill algorithm. */ - (void) GetOneVirtualMagickPixel(*image, + (void) GetOneVirtualPixelInfo(*image, GetPixelCacheVirtualMethod(*image),(ssize_t) x_offset,(ssize_t) y_offset,&target,exception); if (method == FillToBorderMethod) diff --git a/MagickCore/draw-private.h b/MagickCore/draw-private.h index 963abdd5f..0528d9998 100644 --- a/MagickCore/draw-private.h +++ b/MagickCore/draw-private.h @@ -45,7 +45,7 @@ static inline MagickBooleanType GetFillColor(const DrawInfo *draw_info, #if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203) #pragma omp critical #endif - status=GetOneVirtualMagickPixel(pattern,TileVirtualPixelMethod,x+ + status=GetOneVirtualPixelInfo(pattern,TileVirtualPixelMethod,x+ pattern->tile_offset.x,y+pattern->tile_offset.y,fill,exception); return(status); } @@ -70,7 +70,7 @@ static inline MagickBooleanType GetStrokeColor(const DrawInfo *draw_info, #if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200203) #pragma omp critical #endif - status=GetOneVirtualMagickPixel(pattern,TileVirtualPixelMethod,x+ + status=GetOneVirtualPixelInfo(pattern,TileVirtualPixelMethod,x+ pattern->tile_offset.x,y+pattern->tile_offset.y,stroke,exception); return(status); } diff --git a/MagickCore/draw.c b/MagickCore/draw.c index 2a80d74df..857015ab1 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -4224,7 +4224,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, PixelInfo target; - (void) GetOneVirtualMagickPixel(image,TileVirtualPixelMethod,x,y, + (void) GetOneVirtualPixelInfo(image,TileVirtualPixelMethod,x,y, &target,exception); if (primitive_info->method == FillToBorderMethod) { @@ -4353,7 +4353,7 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, PixelInfo target; - (void) GetOneVirtualMagickPixel(image,TileVirtualPixelMethod,x,y, + (void) GetOneVirtualPixelInfo(image,TileVirtualPixelMethod,x,y, &target,exception); if (primitive_info->method == FillToBorderMethod) { diff --git a/MagickCore/methods.h b/MagickCore/methods.h index d7858f181..edf50c721 100644 --- a/MagickCore/methods.h +++ b/MagickCore/methods.h @@ -543,7 +543,7 @@ extern "C" { #define GetOneCacheViewVirtualMethodPixel PrependMagickMethod(GetOneCacheViewVirtualMethodPixel) #define GetOneCacheViewVirtualPixel PrependMagickMethod(GetOneCacheViewVirtualPixel) #define GetOnePixel PrependMagickMethod(GetOnePixel) -#define GetOneVirtualMagickPixel PrependMagickMethod(GetOneVirtualMagickPixel) +#define GetOneVirtualPixelInfo PrependMagickMethod(GetOneVirtualPixelInfo) #define GetOneVirtualMethodPixel PrependMagickMethod(GetOneVirtualMethodPixel) #define GetOneVirtualPixel PrependMagickMethod(GetOneVirtualPixel) #define GetOptimalKernelWidth1D PrependMagickMethod(GetOptimalKernelWidth1D) diff --git a/MagickCore/pixel-private.h b/MagickCore/pixel-private.h deleted file mode 100644 index 50e849dea..000000000 --- a/MagickCore/pixel-private.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization - dedicated to making software imaging solutions freely available. - - You may not use this file except in compliance with the License. - obtain a copy of the License at - - http://www.imagemagick.org/script/license.php - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - MagickCore image pixel private methods. -*/ -#ifndef _MAGICKCORE_PIXEL_PRIVATE_H -#define _MAGICKCORE_PIXEL_PRIVATE_H - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#include -#include -#include -#include -#include - -static inline MagickPixelInfo *CloneMagickPixelInfo( - const MagickPixelInfo *pixel) -{ - MagickPixelInfo - *clone_pixel; - - clone_pixel=(MagickPixelInfo *) AcquireMemory(sizeof(*clone_pixel)); - if (clone_pixel == (MagickPixelInfo *) NULL) - ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); - *clone_pixel=(*pixel); - return(clone_pixel); -} - -static inline MagickBooleanType IsGrayPixel(const PixelInfo *pixel) -{ -#if !defined(MAGICKCORE_HDRI_SUPPORT) - if ((GetPixelRed(pixel) == GetPixelGreen(pixel)) && - (GetPixelGreen(pixel) == GetPixelBlue(pixel))) - return(MagickTrue); -#else - { - double - alpha, - beta; - - alpha=GetPixelRed(pixel)-GetPixelGreen(pixel); - beta=GetPixelGreen(pixel)-GetPixelBlue(pixel); - if ((fabs(alpha) <= MagickEpsilon) && (fabs(beta) <= MagickEpsilon)) - return(MagickTrue); - } -#endif - return(MagickFalse); -} - -static inline MagickBooleanType IsMonochromePixel(const PixelInfo *pixel) -{ -#if !defined(MAGICKCORE_HDRI_SUPPORT) - if (((GetPixelRed(pixel) == 0) || - (GetPixelRed(pixel) == (Quantum) QuantumRange)) && - (GetPixelRed(pixel) == GetPixelGreen(pixel)) && - (GetPixelGreen(pixel) == GetPixelBlue(pixel))) - return(MagickTrue); -#else - { - double - alpha, - beta; - - alpha=GetPixelRed(pixel)-GetPixelGreen(pixel); - beta=GetPixelGreen(pixel)-GetPixelBlue(pixel); - if (((fabs(GetPixelRed(pixel)) <= MagickEpsilon) || - (fabs(GetPixelRed(pixel)-QuantumRange) <= MagickEpsilon)) && - (fabs(alpha) <= MagickEpsilon) && (fabs(beta) <= MagickEpsilon)) - return(MagickTrue); - } -#endif - return(MagickFalse); -} - -static inline void GetPixelInfo(const Image *image, - const MagickPixelInfo *pixel,PixelInfo *color,IndexPacket *index) -{ - SetPixelRed(color,ClampToQuantum(pixel->red)); - SetPixelGreen(color,ClampToQuantum(pixel->green)); - SetPixelBlue(color,ClampToQuantum(pixel->blue)); - if (image->channel_map[AlphaPixelChannel].traits != UndefinedPixelTrait) - SetPixelAlpha(color,ClampToQuantum(pixel->alpha)); - if (image->channel_map[BlackPixelChannel].traits != UndefinedPixelTrait) - SetPixelBlack(index,ClampToQuantum(pixel->black)); - if (image->channel_map[IndexPixelChannel].traits != UndefinedPixelTrait) - SetPixelIndex(index,ClampToQuantum(pixel->index)); -} - -#if defined(__cplusplus) || defined(c_plusplus) -} -#endif - -#endif diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c index a55d0d6ce..fd07dce72 100644 --- a/MagickCore/xwindow.c +++ b/MagickCore/xwindow.c @@ -7527,7 +7527,7 @@ MagickPrivate void XMakeMagnifyImage(Display *display,XWindows *windows, /* Show center pixel color. */ - (void) GetOneVirtualMagickPixel(windows->image.image,TileVirtualPixelMethod, + (void) GetOneVirtualPixelInfo(windows->image.image,TileVirtualPixelMethod, (ssize_t) windows->magnify.x,(ssize_t) windows->magnify.y,&pixel,exception); (void) FormatLocaleString(tuple,MaxTextExtent,"%d,%d: ", windows->magnify.x,windows->magnify.y); diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index 36cac458f..692cbc815 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -3046,7 +3046,7 @@ WandExport MagickBooleanType MagickFloodfillPaintImage(MagickWand *wand, ThrowWandException(WandError,"ContainsNoImages",wand->name); draw_info=CloneDrawInfo(wand->image_info,(DrawInfo *) NULL); PixelGetQuantumPacket(fill,&draw_info->fill); - (void) GetOneVirtualMagickPixel(wand->images,TileVirtualPixelMethod,x % + (void) GetOneVirtualPixelInfo(wand->images,TileVirtualPixelMethod,x % wand->images->columns,y % wand->images->rows,&target,wand->exception); if (bordercolor != (PixelWand *) NULL) PixelGetMagickColor(bordercolor,&target); diff --git a/coders/msl.c b/coders/msl.c index 7aafa3eda..2c60c54b3 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -1697,7 +1697,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, &geometry,&exception); if ((flags & HeightValue) == 0) geometry.height=geometry.width; - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break; @@ -1712,7 +1712,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (LocaleCompare(keyword,"x") == 0) { geometry.x=StringToLong(value); - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break; @@ -1727,7 +1727,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (LocaleCompare(keyword,"y") == 0) { geometry.y=StringToLong(value); - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break; @@ -3731,7 +3731,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, &geometry,&exception); if ((flags & HeightValue) == 0) geometry.height=geometry.width; - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break; @@ -3758,7 +3758,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (LocaleCompare(keyword,"x") == 0) { geometry.x=StringToLong(value); - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break; @@ -3773,7 +3773,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (LocaleCompare(keyword,"y") == 0) { geometry.y=StringToLong(value); - (void) GetOneVirtualMagickPixel(msl_info->image[n], + (void) GetOneVirtualPixelInfo(msl_info->image[n], TileVirtualPixelMethod,geometry.x,geometry.y,&target, &exception); break;