#include "MagickCore/string_.h"
#include "MagickCore/thread-private.h"
#include "MagickCore/utility.h"
+#include "MagickCore/utility-private.h"
#include "MagickCore/version.h"
\f
/*
%
% MagickBooleanType CompositeImage(Image *image,
% const CompositeOperator compose,Image *composite_image,
-% const ssize_t x_offset,const ssize_t y_offset)
+% const ssize_t x_offset,const ssize_t y_offset,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
%
% Previous to IM v6.5.3-3 this was called "modify-outside-overlay"
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline double MagickMin(const double x,const double y)
*hue=0.0;
*saturation=0.0;
*brightness=(double) (QuantumScale*max);
- if (max == 0.0)
+ if (fabs(max) < MagickEpsilon)
return;
*saturation=(double) (1.0-min/max);
delta=max-min;
- if (delta == 0.0)
+ if (fabs(delta) < MagickEpsilon)
return;
- if (red == max)
+ if (fabs(red-max) < MagickEpsilon)
*hue=(double) ((green-blue)/delta);
else
- if (green == max)
+ if (fabs(green-max) < MagickEpsilon)
*hue=(double) (2.0+(blue-red)/delta);
else
- if (blue == max)
+ if (fabs(blue-max) < MagickEpsilon)
*hue=(double) (4.0+(red-green)/delta);
*hue/=6.0;
if (*hue < 0.0)
MagickExport MagickBooleanType CompositeImage(Image *image,
const CompositeOperator compose,const Image *composite_image,
- const ssize_t x_offset,const ssize_t y_offset)
+ const ssize_t x_offset,const ssize_t y_offset,ExceptionInfo *exception)
{
#define CompositeImageTag "Composite/Image"
double
sans;
- ExceptionInfo
- *exception;
-
GeometryInfo
geometry_info;
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(composite_image != (Image *) NULL);
assert(composite_image->signature == MagickSignature);
- exception=(&image->exception);
if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
return(MagickFalse);
GetPixelInfo(image,&zero);
Y = green_channel; compose:args = x_scale[,y_scale[,angle]].
*/
destination_image=CloneImage(image,image->columns,image->rows,MagickTrue,
- &image->exception);
+ exception);
if (destination_image == (Image *) NULL)
return(MagickFalse);
/*
Blur Image by resampling.
*/
pixel=zero;
- exception=(&image->exception);
- resample_filter=AcquireResampleFilter(image,&image->exception);
+ resample_filter=AcquireResampleFilter(image,exception);
SetResampleFilter(resample_filter,CubicFilter,2.0);
destination_view=AcquireCacheView(destination_image);
composite_view=AcquireCacheView(composite_image);
p=GetCacheViewVirtualPixels(composite_view,0,y,composite_image->columns,
1,exception);
q=QueueCacheViewAuthenticPixels(destination_view,0,y,
- destination_image->columns,1,&image->exception);
+ destination_image->columns,1,exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
break;
for (x=0; x < (ssize_t) composite_image->columns; x++)
compose:args = x_scale[,y_scale[,center.x,center.y]]
*/
destination_image=CloneImage(image,image->columns,image->rows,MagickTrue,
- &image->exception);
+ exception);
if (destination_image == (Image *) NULL)
return(MagickFalse);
SetGeometryInfo(&geometry_info);
displacement/distortion map. -- Like a lens...
*/
pixel=zero;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
destination_view=AcquireCacheView(destination_image);
composite_view=AcquireCacheView(composite_image);
p=GetCacheViewVirtualPixels(composite_view,0,y,composite_image->columns,
1,exception);
q=QueueCacheViewAuthenticPixels(destination_view,0,y,
- destination_image->columns,1,&image->exception);
+ destination_image->columns,1,exception);
if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
break;
for (x=0; x < (ssize_t) composite_image->columns; x++)
progress=0;
midpoint=((MagickRealType) QuantumRange+1.0)/2;
GetPixelInfo(composite_image,&zero);
- exception=(&image->exception);
image_view=AcquireCacheView(image);
composite_view=AcquireCacheView(composite_image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
%
% The format of the TextureImage method is:
%
-% MagickBooleanType TextureImage(Image *image,const Image *texture)
+% MagickBooleanType TextureImage(Image *image,const Image *texture,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o texture: This image is the texture to layer on the background.
%
*/
-MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture)
+MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture,
+ ExceptionInfo *exception)
{
#define TextureImageTag "Texture/Image"
*image_view,
*texture_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
if (texture == (const Image *) NULL)
return(MagickFalse);
(void) SetImageVirtualPixelMethod(texture,TileVirtualPixelMethod);
- exception=(&image->exception);
if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
return(MagickFalse);
status=MagickTrue;
thread_status;
thread_status=CompositeImage(image,image->compose,texture,x+
- texture->tile_offset.x,y+texture->tile_offset.y);
+ texture->tile_offset.x,y+texture->tile_offset.y,exception);
if (thread_status == MagickFalse)
{
status=thread_status;