diff --git a/MagickCore/animate.c b/MagickCore/animate.c
index b79c0d6..97a3df1 100644
--- a/MagickCore/animate.c
+++ b/MagickCore/animate.c
@@ -496,7 +496,7 @@
*title;
title=InterpretImageProperties(resource_info->image_info,*image,
- resource_info->title);
+ resource_info->title,exception);
(void) CopyMagickString(windows->image.name,title,MaxTextExtent);
title=DestroyString(title);
}
@@ -889,7 +889,8 @@
next=GetNextImageInList(next);
}
if (next != (Image *) NULL)
- (void) RemapImages(resources.quantize_info,images,(Image *) NULL);
+ (void) RemapImages(resources.quantize_info,images,(Image *) NULL,
+ exception);
}
/*
Sort images by increasing scene number.
@@ -915,7 +916,7 @@
(visual_info->klass == TrueColor) ||
(visual_info->klass == DirectColor))
(void) SetImageType(image_list[scene],image_list[scene]->matte ==
- MagickFalse ? TrueColorType : TrueColorMatteType);
+ MagickFalse ? TrueColorType : TrueColorMatteType,exception);
if ((display_image->columns < image_list[scene]->columns) &&
(display_image->rows < image_list[scene]->rows))
display_image=image_list[scene];
@@ -923,7 +924,7 @@
if ((resource_info->map_type != (char *) NULL) ||
(visual_info->klass == TrueColor) || (visual_info->klass == DirectColor))
(void) SetImageType(display_image,display_image->matte == MagickFalse ?
- TrueColorType : TrueColorMatteType);
+ TrueColorType : TrueColorMatteType,exception);
XMakeStandardColormap(display,visual_info,&resources,display_image,map_info,
&pixel);
/*
@@ -1511,7 +1512,7 @@
}
if (next != (Image *) NULL)
(void) RemapImages(resource_info->quantize_info,images,
- (Image *) NULL);
+ (Image *) NULL,exception);
}
/*
Sort images by increasing scene number.
@@ -1537,7 +1538,7 @@
(visual_info->klass == TrueColor) ||
(visual_info->klass == DirectColor))
(void) SetImageType(image_list[scene],image_list[scene]->matte ==
- MagickFalse ? TrueColorType : TrueColorMatteType);
+ MagickFalse ? TrueColorType : TrueColorMatteType,exception);
if ((display_image->columns < image_list[scene]->columns) &&
(display_image->rows < image_list[scene]->rows))
display_image=image_list[scene];
@@ -1651,7 +1652,7 @@
*title;
title=InterpretImageProperties(resource_info->image_info,display_image,
- resource_info->title);
+ resource_info->title,exception);
(void) CopyMagickString(windows->image.name,title,MaxTextExtent);
(void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent);
title=DestroyString(title);
@@ -1962,7 +1963,7 @@
*title;
title=InterpretImageProperties(resource_info->image_info,
- image_list[scene],resource_info->title);
+ image_list[scene],resource_info->title,exception);
(void) CopyMagickString(windows->image.name,title,MaxTextExtent);
title=DestroyString(title);
}
@@ -2100,7 +2101,7 @@
*title;
title=InterpretImageProperties(resource_info->image_info,
- image,resource_info->title);
+ image,resource_info->title,exception);
(void) CopyMagickString(windows->image.name,title,
MaxTextExtent);
title=DestroyString(title);
diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 0def9c9..5559c98 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -463,7 +463,7 @@
(void) FormatLocaleString(primitive,MaxTextExtent,
"rectangle 0,0 %g,%.20g",metrics.origin.x,(double) height);
(void) CloneString(&undercolor_info->primitive,primitive);
- (void) DrawImage(image,undercolor_info);
+ (void) DrawImage(image,undercolor_info,exception);
(void) DestroyDrawInfo(undercolor_info);
}
annotate_info->affine.tx=offset.x;
@@ -475,7 +475,7 @@
annotate_info->affine.ty-=(draw_info->affine.sy*(metrics.ascent+
metrics.descent-metrics.underline_position));
(void) CloneString(&annotate_info->primitive,primitive);
- (void) DrawImage(image,annotate_info);
+ (void) DrawImage(image,annotate_info,exception);
}
else
if (annotate->decorate == UnderlineDecoration)
@@ -483,7 +483,7 @@
annotate_info->affine.ty-=(draw_info->affine.sy*
metrics.underline_position);
(void) CloneString(&annotate_info->primitive,primitive);
- (void) DrawImage(image,annotate_info);
+ (void) DrawImage(image,annotate_info,exception);
}
/*
Annotate image with text.
@@ -496,7 +496,7 @@
annotate_info->affine.ty-=(draw_info->affine.sy*(height+
metrics.underline_position+metrics.descent)/2.0);
(void) CloneString(&annotate_info->primitive,primitive);
- (void) DrawImage(image,annotate_info);
+ (void) DrawImage(image,annotate_info,exception);
}
}
/*
@@ -1476,7 +1476,7 @@
annotate_info->affine.tx=offset->x;
annotate_info->affine.ty=offset->y;
(void) ConcatenateString(&annotate_info->primitive,"'");
- (void) DrawImage(image,annotate_info);
+ (void) DrawImage(image,annotate_info,exception);
}
}
/*
diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c
index 265a11c..75f47b6 100644
--- a/MagickCore/colormap.c
+++ b/MagickCore/colormap.c
@@ -87,7 +87,7 @@
% The format of the AcquireImageColormap method is:
%
% MagickBooleanType AcquireImageColormap(Image *image,
-% const size_t colors)
+% const size_t colors,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -95,6 +95,8 @@
%
% o colors: the number of colors in the image colormap.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline size_t MagickMax(const size_t x,
@@ -114,7 +116,7 @@
}
MagickExport MagickBooleanType AcquireImageColormap(Image *image,
- const size_t colors)
+ const size_t colors,ExceptionInfo *exception)
{
register ssize_t
i;
@@ -171,7 +173,8 @@
%
% The format of the CycleColormapImage method is:
%
-% MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace)
+% MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -179,16 +182,15 @@
%
% o displace: displace the colormap this amount.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType CycleColormapImage(Image *image,
- const ssize_t displace)
+ const ssize_t displace,ExceptionInfo *exception)
{
CacheView
*image_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -200,9 +202,8 @@
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
if (image->storage_class == DirectClass)
- (void) SetImageType(image,PaletteType);
+ (void) SetImageType(image,PaletteType,exception);
status=MagickTrue;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -258,12 +259,15 @@
%
% The format of the SortColormapByIntensity method is:
%
-% MagickBooleanType SortColormapByIntensity(Image *image)
+% MagickBooleanType SortColormapByIntensity(Image *image,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: A pointer to an Image structure.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
#if defined(__cplusplus) || defined(c_plusplus)
@@ -290,14 +294,12 @@
}
#endif
-MagickExport MagickBooleanType SortColormapByIntensity(Image *image)
+MagickExport MagickBooleanType SortColormapByIntensity(Image *image,
+ ExceptionInfo *exception)
{
CacheView
*image_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -346,7 +348,6 @@
for (i=0; i < (ssize_t) image->colors; i++)
pixels[(ssize_t) image->colormap[i].alpha]=(unsigned short) i;
status=MagickTrue;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
for (y=0; y < (ssize_t) image->rows; y++)
{
diff --git a/MagickCore/colormap.h b/MagickCore/colormap.h
index d81fa66..8d5b3cb 100644
--- a/MagickCore/colormap.h
+++ b/MagickCore/colormap.h
@@ -23,9 +23,9 @@
#endif
extern MagickExport MagickBooleanType
- AcquireImageColormap(Image *,const size_t),
- CycleColormapImage(Image *,const ssize_t),
- SortColormapByIntensity(Image *);
+ AcquireImageColormap(Image *,const size_t,ExceptionInfo *),
+ CycleColormapImage(Image *,const ssize_t,ExceptionInfo *),
+ SortColormapByIntensity(Image *,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index 5729719..22cf788 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -1458,7 +1458,7 @@
% The format of the IsImagesEqual method is:
%
% MagickBooleanType IsImagesEqual(Image *image,
-% const Image *reconstruct_image)
+% const Image *reconstruct_image,ExceptionInfo *exception)
%
% A description of each parameter follows.
%
@@ -1466,17 +1466,16 @@
%
% o reconstruct_image: the reconstruct image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType IsImagesEqual(Image *image,
- const Image *reconstruct_image)
+ const Image *reconstruct_image,ExceptionInfo *exception)
{
CacheView
*image_view,
*reconstruct_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -1500,7 +1499,6 @@
maximum_error=0.0;
mean_error_per_pixel=0.0;
mean_error=0.0;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
reconstruct_view=AcquireCacheView(reconstruct_image);
for (y=0; y < (ssize_t) image->rows; y++)
diff --git a/MagickCore/compare.h b/MagickCore/compare.h
index 714fea4..15944b7 100644
--- a/MagickCore/compare.h
+++ b/MagickCore/compare.h
@@ -50,7 +50,7 @@
extern MagickExport MagickBooleanType
GetImageDistortion(Image *,const Image *,const MetricType,double *,
ExceptionInfo *),
- IsImagesEqual(Image *,const Image *);
+ IsImagesEqual(Image *,const Image *,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickCore/compress.c b/MagickCore/compress.c
index d29dd3b..812537d 100644
--- a/MagickCore/compress.c
+++ b/MagickCore/compress.c
@@ -361,12 +361,15 @@
%
% The format of the HuffmanDecodeImage method is:
%
-% MagickBooleanType HuffmanDecodeImage(Image *image)
+% MagickBooleanType HuffmanDecodeImage(Image *image,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline size_t MagickMax(const size_t x,const size_t y)
@@ -383,7 +386,8 @@
return(y);
}
-MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
+MagickExport MagickBooleanType HuffmanDecodeImage(Image *image,
+ ExceptionInfo *exception)
{
#define HashSize 1021
#define MBHashA 293
@@ -423,9 +427,6 @@
const HuffmanTable
*entry;
- ExceptionInfo
- *exception;
-
HuffmanTable
**mb_hash,
**mw_hash;
@@ -507,7 +508,6 @@
image->x_resolution=204.0;
image->y_resolution=196.0;
image->units=PixelsPerInchResolution;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); )
{
@@ -673,7 +673,7 @@
% The format of the HuffmanEncodeImage method is:
%
% MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info,
-% Image *image,Image *inject_image)
+% Image *image,Image *inject_image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -683,9 +683,11 @@
%
% o inject_image: inject into the image stream.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info,
- Image *image,Image *inject_image)
+ Image *image,Image *inject_image,ExceptionInfo *exception)
{
#define HuffmanOutputCode(entry) \
{ \
@@ -716,9 +718,6 @@
const HuffmanTable
*entry;
- ExceptionInfo
- *exception;
-
int
k,
runlength;
@@ -780,7 +779,7 @@
scanline=(unsigned char *) RelinquishMagickMemory(scanline);
return(MagickFalse);
}
- (void) SetImageType(huffman_image,BilevelType);
+ (void) SetImageType(huffman_image,BilevelType,exception);
byte='\0';
bit=(unsigned char) 0x80;
if (LocaleCompare(image_info->magick,"FAX") != 0)
@@ -797,7 +796,6 @@
/*
Compress to 1D Huffman pixels.
*/
- exception=(&huffman_image->exception);
q=scanline;
for (y=0; y < (ssize_t) huffman_image->rows; y++)
{
@@ -915,7 +913,7 @@
% The format of the LZWEncodeImage method is:
%
% MagickBooleanType LZWEncodeImage(Image *image,const size_t length,
-% unsigned char *pixels)
+% unsigned char *pixels,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -926,9 +924,11 @@
% o pixels: the address of an unsigned array of characters containing the
% pixels to compress.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType LZWEncodeImage(Image *image,const size_t length,
- unsigned char *pixels)
+ unsigned char *pixels,ExceptionInfo *exception)
{
#define LZWClr 256UL /* Clear Table Marker */
#define LZWEod 257UL /* End of Data marker */
@@ -1090,7 +1090,7 @@
%
*/
MagickExport MagickBooleanType PackbitsEncodeImage(Image *image,
- const size_t length,unsigned char *pixels)
+ const size_t length,unsigned char *pixels,ExceptionInfo *exception)
{
int
count;
@@ -1212,7 +1212,7 @@
% The format of the ZLIBEncodeImage method is:
%
% MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length,
-% unsigned char *pixels)
+% unsigned char *pixels,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -1224,6 +1224,8 @@
% o pixels: the address of an unsigned array of characters containing the
% pixels to compress.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static voidpf AcquireZIPMemory(voidpf context,unsigned int items,
@@ -1240,7 +1242,7 @@
}
MagickExport MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length,
- unsigned char *pixels)
+ unsigned char *pixels,ExceptionInfo *exception)
{
int
status;
diff --git a/MagickCore/compress.h b/MagickCore/compress.h
index 313ee3b..4b7fcbc 100644
--- a/MagickCore/compress.h
+++ b/MagickCore/compress.h
@@ -52,11 +52,11 @@
Ascii85Info;
extern MagickExport MagickBooleanType
- HuffmanDecodeImage(Image *),
- HuffmanEncodeImage(const ImageInfo *,Image *,Image *),
- LZWEncodeImage(Image *,const size_t,unsigned char *),
- PackbitsEncodeImage(Image *,const size_t,unsigned char *),
- ZLIBEncodeImage(Image *,const size_t,unsigned char *);
+ HuffmanDecodeImage(Image *,ExceptionInfo *),
+ HuffmanEncodeImage(const ImageInfo *,Image *,Image *,ExceptionInfo *),
+ LZWEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *),
+ PackbitsEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *),
+ ZLIBEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *);
extern MagickExport void
Ascii85Encode(Image *,const unsigned char),
diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c
index e2d0e29..b0749ce 100644
--- a/MagickCore/constitute.c
+++ b/MagickCore/constitute.c
@@ -203,12 +203,9 @@
image->columns=columns;
image->rows=rows;
(void) SetImageBackgroundColor(image);
- status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels);
+ status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels,exception);
if (status == MagickFalse)
- {
- InheritException(exception,&image->exception);
- image=DestroyImage(image);
- }
+ image=DestroyImage(image);
return(image);
}
@@ -694,21 +691,21 @@
option=GetImageOption(read_info,"caption");
if (option != (const char *) NULL)
{
- property=InterpretImageProperties(read_info,next,option);
+ property=InterpretImageProperties(read_info,next,option,exception);
(void) SetImageProperty(next,"caption",property);
property=DestroyString(property);
}
option=GetImageOption(read_info,"comment");
if (option != (const char *) NULL)
{
- property=InterpretImageProperties(read_info,next,option);
+ property=InterpretImageProperties(read_info,next,option,exception);
(void) SetImageProperty(next,"comment",property);
property=DestroyString(property);
}
option=GetImageOption(read_info,"label");
if (option != (const char *) NULL)
{
- property=InterpretImageProperties(read_info,next,option);
+ property=InterpretImageProperties(read_info,next,option,exception);
(void) SetImageProperty(next,"label",property);
property=DestroyString(property);
}
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 2f47595..caa2cc7 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -287,7 +287,7 @@
decode ? decode : encode);
return((char *) NULL);
}
- command=InterpretImageProperties(image_info,image,commands[0]);
+ command=InterpretImageProperties(image_info,image,commands[0],exception);
if (command == (char *) NULL)
(void) ThrowMagickException(exception,GetMagickModule(),ResourceLimitError,
"MemoryAllocationFailed","`%s'",commands[0]);
@@ -936,7 +936,7 @@
return(MagickFalse);
}
magick=InterpretImageProperties(image_info,image,decode != (char *) NULL ?
- delegate_info->encode : delegate_info->decode);
+ delegate_info->encode : delegate_info->decode,exception);
if (magick == (char *) NULL)
{
(void) RelinquishUniqueFileResource(image_info->unique);
@@ -1029,7 +1029,7 @@
}
}
status=MagickFalse;
- command=InterpretImageProperties(image_info,image,commands[i]);
+ command=InterpretImageProperties(image_info,image,commands[i],exception);
if (command != (char *) NULL)
{
/*
diff --git a/MagickCore/display.c b/MagickCore/display.c
index 84c09bb..536b064 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -7984,7 +7984,7 @@
XSetCursorState(display,windows,MagickTrue);
XCheckRefreshWindows(display,windows);
(void) SetImageType(*image,(*image)->matte == MagickFalse ?
- GrayscaleType : GrayscaleMatteType);
+ GrayscaleType : GrayscaleMatteType,exception);
XSetCursorState(display,windows,MagickFalse);
if (windows->image.orphan != MagickFalse)
break;
@@ -8015,7 +8015,7 @@
affinity_image=ReadImage(image_info,exception);
if (affinity_image != (Image *) NULL)
{
- (void) RemapImage(&quantize_info,*image,affinity_image);
+ (void) RemapImage(&quantize_info,*image,affinity_image,exception);
affinity_image=DestroyImage(affinity_image);
}
CatchException(exception);
@@ -8048,7 +8048,7 @@
XCheckRefreshWindows(display,windows);
quantize_info.number_colors=StringToUnsignedLong(colors);
quantize_info.dither=status != 0 ? MagickTrue : MagickFalse;
- (void) QuantizeImage(&quantize_info,*image);
+ (void) QuantizeImage(&quantize_info,*image,exception);
XSetCursorState(display,windows,MagickFalse);
if (windows->image.orphan != MagickFalse)
break;
@@ -8455,7 +8455,7 @@
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
(void) SegmentImage(*image,RGBColorspace,MagickFalse,geometry_info.rho,
- geometry_info.sigma);
+ geometry_info.sigma,exception);
XSetCursorState(display,windows,MagickFalse);
if (windows->image.orphan != MagickFalse)
break;
@@ -13642,7 +13642,7 @@
{
(void) DeleteImageProperty(next_image,"label");
(void) SetImageProperty(next_image,"label",InterpretImageProperties(
- read_info,next_image,DefaultTileLabel));
+ read_info,next_image,DefaultTileLabel,exception));
(void) ParseRegionGeometry(next_image,read_info->size,&geometry,
exception);
thumbnail_image=ThumbnailImage(next_image,geometry.width,
@@ -14652,7 +14652,7 @@
*title;
title=InterpretImageProperties(resource_info->image_info,display_image,
- resource_info->title);
+ resource_info->title,exception);
(void) CopyMagickString(windows->image.name,title,MaxTextExtent);
(void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent);
title=DestroyString(title);
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index cde1013..ee38ad6 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -1372,7 +1372,7 @@
% The format of the DrawClipPath method is:
%
% MagickBooleanType DrawClipPath(Image *image,const DrawInfo *draw_info,
-% const char *name)
+% const char *name,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -1382,9 +1382,11 @@
%
% o name: the name of the clip path.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType DrawClipPath(Image *image,
- const DrawInfo *draw_info,const char *name)
+ const DrawInfo *draw_info,const char *name,ExceptionInfo *exception)
{
char
clip_mask[MaxTextExtent];
@@ -1416,7 +1418,7 @@
&image->exception);
if (clip_mask == (Image *) NULL)
return(MagickFalse);
- (void) SetImageClipMask(image,clip_mask);
+ (void) SetImageClipMask(image,clip_mask,exception);
clip_mask=DestroyImage(clip_mask);
}
(void) QueryColorDatabase("#00000000",&image->clip_mask->background_color,
@@ -1430,7 +1432,7 @@
(void) CloneString(&clone_info->primitive,value);
(void) QueryColorDatabase("#ffffff",&clone_info->fill,&image->exception);
clone_info->clip_mask=(char *) NULL;
- status=DrawImage(image->clip_mask,clone_info);
+ status=DrawImage(image->clip_mask,clone_info,exception);
status|=NegateImage(image->clip_mask,MagickFalse,&image->exception);
clone_info=DestroyDrawInfo(clone_info);
if (image->debug != MagickFalse)
@@ -1628,7 +1630,8 @@
%
% The format of the DrawImage method is:
%
-% MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
+% MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -1636,6 +1639,8 @@
%
% o draw_info: the draw info.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline MagickBooleanType IsPoint(const char *point)
@@ -1657,7 +1662,8 @@
primitive_info->point=point;
}
-MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
+MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
+ ExceptionInfo *exception)
{
#define RenderImageTag "Render/Image"
@@ -1871,7 +1877,7 @@
GetMagickToken(q,&q,token);
(void) CloneString(&graphic_context[n]->clip_mask,token);
(void) DrawClipPath(image,graphic_context[n],
- graphic_context[n]->clip_mask);
+ graphic_context[n]->clip_mask,exception);
break;
}
if (LocaleCompare("clip-rule",keyword) == 0)
@@ -1976,7 +1982,7 @@
(void) FormatLocaleString(pattern,MaxTextExtent,"%s",token);
if (GetImageArtifact(image,pattern) != (const char *) NULL)
(void) DrawPatternPath(image,draw_info,token,
- &graphic_context[n]->fill_pattern);
+ &graphic_context[n]->fill_pattern,exception);
else
{
status=QueryColorDatabase(token,&graphic_context[n]->fill,
@@ -2259,7 +2265,7 @@
if (graphic_context[n]->clip_mask != (char *) NULL)
if (LocaleCompare(graphic_context[n]->clip_mask,
graphic_context[n-1]->clip_mask) != 0)
- (void) SetImageClipMask(image,(Image *) NULL);
+ (void) SetImageClipMask(image,(Image *) NULL,exception);
graphic_context[n]=DestroyDrawInfo(graphic_context[n]);
n--;
break;
@@ -2505,7 +2511,7 @@
(void) FormatLocaleString(pattern,MaxTextExtent,"%s",token);
if (GetImageArtifact(image,pattern) != (const char *) NULL)
(void) DrawPatternPath(image,draw_info,token,
- &graphic_context[n]->stroke_pattern);
+ &graphic_context[n]->stroke_pattern,exception);
else
{
status=QueryColorDatabase(token,&graphic_context[n]->stroke,
@@ -3106,7 +3112,7 @@
(LocaleCompare(graphic_context[n]->clip_mask,
graphic_context[n-1]->clip_mask) != 0))
(void) DrawClipPath(image,graphic_context[n],
- graphic_context[n]->clip_mask);
+ graphic_context[n]->clip_mask,exception);
(void) DrawPrimitive(image,graphic_context[n],primitive_info);
}
if (primitive_info->text != (char *) NULL)
@@ -3464,7 +3470,7 @@
% The format of the DrawPatternPath method is:
%
% MagickBooleanType DrawPatternPath(Image *image,const DrawInfo *draw_info,
-% const char *name,Image **pattern)
+% const char *name,Image **pattern,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -3476,9 +3482,12 @@
%
% o image: the image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType DrawPatternPath(Image *image,
- const DrawInfo *draw_info,const char *name,Image **pattern)
+ const DrawInfo *draw_info,const char *name,Image **pattern,
+ ExceptionInfo *exception)
{
char
property[MaxTextExtent];
@@ -3526,7 +3535,7 @@
clone_info->fill_pattern=NewImageList();
clone_info->stroke_pattern=NewImageList();
(void) CloneString(&clone_info->primitive,path);
- status=DrawImage(*pattern,clone_info);
+ status=DrawImage(*pattern,clone_info,exception);
clone_info=DestroyDrawInfo(clone_info);
if (image->debug != MagickFalse)
(void) LogMagickEvent(DrawEvent,GetMagickModule(),"end pattern-path");
diff --git a/MagickCore/draw.h b/MagickCore/draw.h
index 66e80aa..164b10c 100644
--- a/MagickCore/draw.h
+++ b/MagickCore/draw.h
@@ -377,10 +377,11 @@
extern MagickExport MagickBooleanType
DrawAffineImage(Image *,const Image *,const AffineMatrix *),
- DrawClipPath(Image *,const DrawInfo *,const char *),
+ DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *),
DrawGradientImage(Image *,const DrawInfo *),
- DrawImage(Image *,const DrawInfo *),
- DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
+ DrawImage(Image *,const DrawInfo *,ExceptionInfo *),
+ DrawPatternPath(Image *,const DrawInfo *,const char *,Image **,
+ ExceptionInfo *),
DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
extern MagickExport void
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index c45593a..6e35d15 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -2492,7 +2492,7 @@
colors<<=1;
quantize_info.number_colors=colors;
quantize_info.colorspace=GRAYColorspace;
- (void) QuantizeImage(&quantize_info,preview_image);
+ (void) QuantizeImage(&quantize_info,preview_image,exception);
(void) FormatLocaleString(label,MaxTextExtent,
"-colorspace gray -colors %.20g",(double) colors);
break;
@@ -2504,7 +2504,7 @@
break;
colors<<=1;
quantize_info.number_colors=colors;
- (void) QuantizeImage(&quantize_info,preview_image);
+ (void) QuantizeImage(&quantize_info,preview_image,exception);
(void) FormatLocaleString(label,MaxTextExtent,"colors %.20g",(double)
colors);
break;
@@ -2658,7 +2658,7 @@
break;
threshold+=0.4f;
(void) SegmentImage(preview_image,RGBColorspace,MagickFalse,threshold,
- threshold);
+ threshold,exception);
(void) FormatLocaleString(label,MaxTextExtent,"segment %gx%g",
threshold,threshold);
break;
diff --git a/MagickCore/exception-private.h b/MagickCore/exception-private.h
index 8fef7e9..e1ce013 100644
--- a/MagickCore/exception-private.h
+++ b/MagickCore/exception-private.h
@@ -28,7 +28,7 @@
#define ThrowBinaryException(severity,tag,context) \
{ \
if (image != (Image *) NULL) \
- (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \
+ (void) ThrowMagickException(exception,GetMagickModule(),severity, \
tag == (const char *) NULL ? "unknown" : tag,"`%s'",context); \
return(MagickFalse); \
}
@@ -78,7 +78,7 @@
}
#define ThrowWriterException(severity,tag) \
{ \
- (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \
+ (void) ThrowMagickException(exception,GetMagickModule(),severity, \
tag == (const char *) NULL ? "unknown" : tag,"`%s'",image->filename); \
if (image_info->adjoin != MagickFalse) \
while (image->previous != (Image *) NULL) \
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 045399c..da805a2 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -640,7 +640,7 @@
clone_image=CloneImage(image,0,0,MagickTrue,exception);
if (clone_image == (Image *) NULL)
return((Image *) NULL);
- (void) SetImageType(clone_image,GrayscaleType);
+ (void) SetImageType(clone_image,GrayscaleType,exception);
edge_image=EdgeImage(clone_image,radius,exception);
clone_image=DestroyImage(clone_image);
if (edge_image == (Image *) NULL)
@@ -651,7 +651,7 @@
return((Image *) NULL);
(void) NormalizeImage(charcoal_image,exception);
(void) NegateImage(charcoal_image,MagickFalse,exception);
- (void) SetImageType(charcoal_image,GrayscaleType);
+ (void) SetImageType(charcoal_image,GrayscaleType,exception);
return(charcoal_image);
}
@@ -3845,7 +3845,7 @@
return((Image *) NULL);
annotate_info=CloneDrawInfo((const ImageInfo *) NULL,draw_info);
caption=InterpretImageProperties((ImageInfo *) NULL,(Image *) image,
- value);
+ value,exception);
(void) CloneString(&annotate_info->text,caption);
count=FormatMagickCaption(caption_image,annotate_info,MagickTrue,&metrics,
&caption,exception);
@@ -5273,7 +5273,7 @@
"ellipse %g,%g,%g,%g,0.0,360.0",image->columns/2.0,
image->rows/2.0,image->columns/2.0-x,image->rows/2.0-y);
draw_info->primitive=AcquireString(ellipse);
- (void) DrawImage(oval_image,draw_info);
+ (void) DrawImage(oval_image,draw_info,exception);
draw_info=DestroyDrawInfo(draw_info);
blur_image=BlurImage(oval_image,radius,sigma,exception);
oval_image=DestroyImage(oval_image);
diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c
index 7a07c42..11b5303 100644
--- a/MagickCore/histogram.c
+++ b/MagickCore/histogram.c
@@ -1333,7 +1333,7 @@
quantize_info->number_colors=MaxColormapSize;
quantize_info->dither=MagickFalse;
quantize_info->tree_depth=8;
- (void) QuantizeImage(quantize_info,unique_image);
+ (void) QuantizeImage(quantize_info,unique_image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
}
cube_info=DestroyCubeInfo(image,cube_info);
diff --git a/MagickCore/identify.c b/MagickCore/identify.c
index 4bcbad7..782d048 100644
--- a/MagickCore/identify.c
+++ b/MagickCore/identify.c
@@ -365,7 +365,7 @@
p=GetVirtualPixels(image,0,0,1,1,exception);
ping=p == (const Quantum *) NULL ? MagickTrue : MagickFalse;
type=GetImageType(image,exception);
- (void) SignatureImage(image);
+ (void) SignatureImage(image,exception);
(void) FormatLocaleFile(file,"Image: %s\n",image->filename);
if (*image->magick_filename != '\0')
if (LocaleCompare(image->magick_filename,image->filename) != 0)
@@ -796,7 +796,7 @@
}
(void) FormatLocaleFile(file," %.20gx%.20g %s\n",(double)
tile->magick_columns,(double) tile->magick_rows,tile->magick);
- (void) SignatureImage(tile);
+ (void) SignatureImage(tile,exception);
ResetImagePropertyIterator(tile);
property=GetNextImageProperty(tile);
while (property != (const char *) NULL)
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 558f033..6f3adfb 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -636,7 +636,7 @@
% The format of the ClipImagePath method is:
%
% MagickBooleanType ClipImagePath(Image *image,const char *pathname,
-% const MagickBooleanType inside)
+% const MagickBooleanType inside,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -648,15 +648,17 @@
% o inside: if non-zero, later operations take effect inside clipping path.
% Otherwise later operations take effect outside clipping path.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
-MagickExport MagickBooleanType ClipImage(Image *image)
+MagickExport MagickBooleanType ClipImage(Image *image,ExceptionInfo *exception)
{
- return(ClipImagePath(image,"#1",MagickTrue));
+ return(ClipImagePath(image,"#1",MagickTrue,exception));
}
MagickExport MagickBooleanType ClipImagePath(Image *image,const char *pathname,
- const MagickBooleanType inside)
+ const MagickBooleanType inside,ExceptionInfo *exception)
{
#define ClipImagePathTag "ClipPath/Image"
@@ -705,7 +707,7 @@
(void) NegateImage(clip_mask,MagickFalse,&image->exception);
(void) FormatLocaleString(clip_mask->magick_filename,MaxTextExtent,
"8BIM:1999,2998:%s\nPS",pathname);
- (void) SetImageClipMask(image,clip_mask);
+ (void) SetImageClipMask(image,clip_mask,exception);
clip_mask=DestroyImage(clip_mask);
return(MagickTrue);
}
@@ -2902,7 +2904,8 @@
%
% The format of the SetImageClipMask method is:
%
-% MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask)
+% MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2910,9 +2913,11 @@
%
% o clip_mask: the image clip path.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType SetImageClipMask(Image *image,
- const Image *clip_mask)
+ const Image *clip_mask,ExceptionInfo *exception)
{
assert(image != (Image *) NULL);
if (image->debug != MagickFalse)
@@ -3401,7 +3406,8 @@
%
% The format of the SetImageMask method is:
%
-% MagickBooleanType SetImageMask(Image *image,const Image *mask)
+% MagickBooleanType SetImageMask(Image *image,const Image *mask,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -3409,9 +3415,11 @@
%
% o mask: the image mask.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType SetImageMask(Image *image,
- const Image *mask)
+ const Image *mask,ExceptionInfo *exception)
{
assert(image != (Image *) NULL);
if (image->debug != MagickFalse)
@@ -3532,7 +3540,8 @@
%
% The format of the SetImageType method is:
%
-% MagickBooleanType SetImageType(Image *image,const ImageType type)
+% MagickBooleanType SetImageType(Image *image,const ImageType type,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -3540,15 +3549,15 @@
%
% o type: Image type.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
-MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type)
+MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type,
+ ExceptionInfo *exception)
{
const char
*artifact;
- ExceptionInfo
- *exception;
-
ImageInfo
*image_info;
@@ -3568,7 +3577,6 @@
artifact=GetImageArtifact(image,"dither");
if (artifact != (const char *) NULL)
(void) SetImageOption(image_info,"dither",artifact);
- exception=(&image->exception);
switch (type)
{
case BilevelType:
@@ -3580,7 +3588,7 @@
quantize_info=AcquireQuantizeInfo(image_info);
quantize_info->number_colors=2;
quantize_info->colorspace=GRAYColorspace;
- status=QuantizeImage(quantize_info,image);
+ status=QuantizeImage(quantize_info,image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
}
image->matte=MagickFalse;
@@ -3609,7 +3617,7 @@
{
quantize_info=AcquireQuantizeInfo(image_info);
quantize_info->number_colors=256;
- status=QuantizeImage(quantize_info,image);
+ status=QuantizeImage(quantize_info,image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
}
image->matte=MagickFalse;
@@ -3628,7 +3636,7 @@
(void) BilevelImage(image,(double) QuantumRange/2.0);
(void) SetPixelChannelMask(image,channel_mask);
quantize_info=AcquireQuantizeInfo(image_info);
- status=QuantizeImage(quantize_info,image);
+ status=QuantizeImage(quantize_info,image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
break;
}
@@ -3640,7 +3648,7 @@
(void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
quantize_info=AcquireQuantizeInfo(image_info);
quantize_info->colorspace=TransparentColorspace;
- status=QuantizeImage(quantize_info,image);
+ status=QuantizeImage(quantize_info,image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
break;
}
diff --git a/MagickCore/image.h b/MagickCore/image.h
index bade504..2e5ee7e 100644
--- a/MagickCore/image.h
+++ b/MagickCore/image.h
@@ -521,8 +521,8 @@
*DestroyImageInfo(ImageInfo *);
extern MagickExport MagickBooleanType
- ClipImage(Image *),
- ClipImagePath(Image *,const char *,const MagickBooleanType),
+ ClipImage(Image *,ExceptionInfo *),
+ ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
GetImageAlphaChannel(const Image *),
IsTaintImage(const Image *),
IsMagickConflict(const char *),
@@ -534,14 +534,14 @@
SeparateImage(Image *),
SetImageAlphaChannel(Image *,const AlphaChannelType,ExceptionInfo *),
SetImageBackgroundColor(Image *),
- SetImageClipMask(Image *,const Image *),
+ SetImageClipMask(Image *,const Image *,ExceptionInfo *),
SetImageColor(Image *,const PixelInfo *),
SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
- SetImageMask(Image *,const Image *),
+ SetImageMask(Image *,const Image *,ExceptionInfo *),
SetImageOpacity(Image *,const Quantum),
SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
- SetImageType(Image *,const ImageType),
+ SetImageType(Image *,const ImageType,ExceptionInfo *),
StripImage(Image *),
SyncImage(Image *),
SyncImageSettings(const ImageInfo *,Image *),
diff --git a/MagickCore/montage.c b/MagickCore/montage.c
index 62c4633..9ab2015 100644
--- a/MagickCore/montage.c
+++ b/MagickCore/montage.c
@@ -387,7 +387,6 @@
geometry,
extract_info;
-
size_t
bevel_width,
border_width,
@@ -560,7 +559,8 @@
/*
Determine the number of lines in an next label.
*/
- title=InterpretImageProperties(clone_info,image_list[0],montage_info->title);
+ title=InterpretImageProperties(clone_info,image_list[0],montage_info->title,
+ exception);
title_offset=0;
if (montage_info->title != (char *) NULL)
title_offset=(size_t) (2*(metrics.ascent-metrics.descent)*
diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c
index 0e179bb..aecd19c 100644
--- a/MagickCore/pixel.c
+++ b/MagickCore/pixel.c
@@ -1797,7 +1797,7 @@
% MagickBooleanType ImportImagePixels(Image *image,const ssize_t x_offset,
% const ssize_t y_offset,const size_t columns,
% const size_t rows,const char *map,const StorageType type,
-% const void *pixels)
+% const void *pixels,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -1821,15 +1821,14 @@
% map and type. You must preallocate this array where the expected
% length varies depending on the values of width, height, map, and type.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType ImportImagePixels(Image *image,
const ssize_t x_offset,const ssize_t y_offset,const size_t columns,
const size_t rows,const char *map,const StorageType type,
- const void *pixels)
+ const void *pixels,ExceptionInfo *exception)
{
- ExceptionInfo
- *exception;
-
QuantumType
*quantum_map;
@@ -1858,7 +1857,6 @@
if (quantum_map == (QuantumType *) NULL)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
- exception=(&image->exception);
for (i=0; i < (ssize_t) length; i++)
{
switch (map[i])
diff --git a/MagickCore/pixel.h b/MagickCore/pixel.h
index 08ef29d..59715fc 100644
--- a/MagickCore/pixel.h
+++ b/MagickCore/pixel.h
@@ -147,7 +147,7 @@
ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
const size_t,const char *,const StorageType,void *,ExceptionInfo *),
ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
- const size_t,const char *,const StorageType,const void *),
+ const size_t,const char *,const StorageType,const void *,ExceptionInfo *),
InterpolatePixelChannel(const Image *,const CacheView_ *,
const PixelChannel,const InterpolatePixelMethod,const double,const double,
double *,ExceptionInfo *),
diff --git a/MagickCore/property.c b/MagickCore/property.c
index f157ecf..6340419 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -2523,7 +2523,7 @@
% The format of the InterpretImageProperties method is:
%
% char *InterpretImageProperties(const ImageInfo *image_info,Image *image,
-% const char *embed_text)
+% const char *embed_text,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2534,9 +2534,11 @@
% o embed_text: the address of a character string containing the embedded
% formatting characters.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport char *InterpretImageProperties(const ImageInfo *image_info,
- Image *image,const char *embed_text)
+ Image *image,const char *embed_text,ExceptionInfo *exception)
{
char
filename[MaxTextExtent],
@@ -3108,7 +3110,7 @@
/*
Image bounding box.
*/
- page=GetImageBoundingBox(image,&image->exception);
+ page=GetImageBoundingBox(image,exception);
q+=FormatLocaleString(q,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
(double) page.width,(double) page.height,(double) page.x,(double)
page.y);
@@ -3119,7 +3121,7 @@
/*
Image signature.
*/
- (void) SignatureImage(image);
+ (void) SignatureImage(image,exception);
value=GetImageProperty(image,"signature");
if (value == (const char *) NULL)
break;
diff --git a/MagickCore/property.h b/MagickCore/property.h
index a67af02..4b8af40 100644
--- a/MagickCore/property.h
+++ b/MagickCore/property.h
@@ -24,7 +24,8 @@
extern MagickExport char
*GetNextImageProperty(const Image *),
- *InterpretImageProperties(const ImageInfo *,Image *,const char *),
+ *InterpretImageProperties(const ImageInfo *,Image *,const char *,
+ ExceptionInfo *),
*RemoveImageProperty(Image *,const char *);
extern MagickExport const char
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index c863e0c..cab87d9 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -328,10 +328,10 @@
*GetNodeInfo(CubeInfo *,const size_t,const size_t,NodeInfo *);
static MagickBooleanType
- AssignImageColors(Image *,CubeInfo *),
+ AssignImageColors(Image *,CubeInfo *,ExceptionInfo *),
ClassifyImageColors(CubeInfo *,const Image *,ExceptionInfo *),
DitherImage(Image *,CubeInfo *),
- SetGrayscaleImage(Image *);
+ SetGrayscaleImage(Image *,ExceptionInfo *);
static size_t
DefineImageColormap(Image *,CubeInfo *,NodeInfo *);
@@ -497,7 +497,8 @@
return(id);
}
-static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info)
+static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info,
+ ExceptionInfo *exception)
{
#define AssignImageTag "Assign/Image"
@@ -516,7 +517,7 @@
(IsRGBColorspace(image->colorspace) == MagickFalse) &&
(image->colorspace != CMYColorspace))
(void) TransformImageColorspace((Image *) image,RGBColorspace);
- if (AcquireImageColormap(image,cube_info->colors) == MagickFalse)
+ if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
image->colors=0;
@@ -1160,14 +1161,18 @@
%
% The format of the CompressImageColormap method is:
%
-% MagickBooleanType CompressImageColormap(Image *image)
+% MagickBooleanType CompressImageColormap(Image *image,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
-MagickExport MagickBooleanType CompressImageColormap(Image *image)
+MagickExport MagickBooleanType CompressImageColormap(Image *image,
+ ExceptionInfo *exception)
{
QuantizeInfo
quantize_info;
@@ -1181,7 +1186,7 @@
GetQuantizeInfo(&quantize_info);
quantize_info.number_colors=image->colors;
quantize_info.tree_depth=MaxTreeDepth;
- return(QuantizeImage(&quantize_info,image));
+ return(QuantizeImage(&quantize_info,image,exception));
}
/*
@@ -2265,7 +2270,7 @@
% %
% %
% %
-% P o s t e r i z e I m a g e C h a n n e l %
+% P o s t e r i z e I m a g e %
% %
% %
% %
@@ -2277,7 +2282,7 @@
% The format of the PosterizeImage method is:
%
% MagickBooleanType PosterizeImage(Image *image,const size_t levels,
-% const MagickBooleanType dither)
+% const MagickBooleanType dither,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2289,6 +2294,8 @@
% o dither: Set this integer value to something other than zero to dither
% the mapped image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static inline ssize_t MagickRound(MagickRealType x)
@@ -2302,7 +2309,7 @@
}
MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
- const MagickBooleanType dither)
+ const MagickBooleanType dither,ExceptionInfo *exception)
{
#define PosterizeImageTag "Posterize/Image"
#define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \
@@ -2311,9 +2318,6 @@
CacheView
*image_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -2356,7 +2360,6 @@
*/
status=MagickTrue;
progress=0;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(progress,status)
@@ -2415,7 +2418,7 @@
levels,MaxColormapSize+1);
quantize_info->dither=dither;
quantize_info->tree_depth=MaxTreeDepth;
- status=QuantizeImage(quantize_info,image);
+ status=QuantizeImage(quantize_info,image,exception);
quantize_info=DestroyQuantizeInfo(quantize_info);
return(status);
}
@@ -2594,7 +2597,7 @@
% The format of the QuantizeImage method is:
%
% MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info,
-% Image *image)
+% Image *image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2602,6 +2605,8 @@
%
% o image: the image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static MagickBooleanType DirectToColormapImage(Image *image,
@@ -2624,7 +2629,7 @@
status=MagickTrue;
number_colors=(size_t) (image->columns*image->rows);
- if (AcquireImageColormap(image,number_colors) == MagickFalse)
+ if (AcquireImageColormap(image,number_colors,exception) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
if (image->colors != number_colors)
@@ -2667,7 +2672,7 @@
}
MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info,
- Image *image)
+ Image *image,ExceptionInfo *exception)
{
CubeInfo
*cube_info;
@@ -2694,7 +2699,7 @@
(void) DirectToColormapImage(image,&image->exception);
if ((IsImageGray(image,&image->exception) != MagickFalse) &&
(image->matte == MagickFalse))
- (void) SetGrayscaleImage(image);
+ (void) SetGrayscaleImage(image,exception);
if ((image->storage_class == PseudoClass) &&
(image->colors <= maximum_colors))
return(MagickTrue);
@@ -2729,7 +2734,7 @@
Reduce the number of colors in the image.
*/
ReduceImageColors(image,cube_info);
- status=AssignImageColors(image,cube_info);
+ status=AssignImageColors(image,cube_info,exception);
}
DestroyCubeInfo(cube_info);
return(status);
@@ -2754,7 +2759,7 @@
% The format of the QuantizeImages method is:
%
% MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info,
-% Image *images)
+% Image *images,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2762,9 +2767,11 @@
%
% o images: Specifies a pointer to a list of Image structures.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info,
- Image *images)
+ Image *images,ExceptionInfo *exception)
{
CubeInfo
*cube_info;
@@ -2798,7 +2805,7 @@
/*
Handle a single image with QuantizeImage.
*/
- status=QuantizeImage(quantize_info,images);
+ status=QuantizeImage(quantize_info,images,exception);
return(status);
}
status=MagickFalse;
@@ -2859,7 +2866,7 @@
{
progress_monitor=SetImageProgressMonitor(image,(MagickProgressMonitor)
NULL,image->client_data);
- status=AssignImageColors(image,cube_info);
+ status=AssignImageColors(image,cube_info,exception);
if (status == MagickFalse)
break;
(void) SetImageProgressMonitor(image,progress_monitor,
@@ -3031,7 +3038,7 @@
% The format of the RemapImage method is:
%
% MagickBooleanType RemapImage(const QuantizeInfo *quantize_info,
-% Image *image,const Image *remap_image)
+% Image *image,const Image *remap_image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -3041,9 +3048,11 @@
%
% o remap_image: the reference image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info,
- Image *image,const Image *remap_image)
+ Image *image,const Image *remap_image,ExceptionInfo *exception)
{
CubeInfo
*cube_info;
@@ -3072,7 +3081,7 @@
Classify image colors from the reference image.
*/
cube_info->quantize_info->number_colors=cube_info->colors;
- status=AssignImageColors(image,cube_info);
+ status=AssignImageColors(image,cube_info,exception);
}
DestroyCubeInfo(cube_info);
return(status);
@@ -3095,7 +3104,7 @@
% The format of the RemapImage method is:
%
% MagickBooleanType RemapImages(const QuantizeInfo *quantize_info,
-% Image *images,Image *remap_image)
+% Image *images,Image *remap_image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -3105,9 +3114,11 @@
%
% o remap_image: the reference image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info,
- Image *images,const Image *remap_image)
+ Image *images,const Image *remap_image,ExceptionInfo *exception)
{
CubeInfo
*cube_info;
@@ -3128,7 +3139,7 @@
/*
Create a global colormap for an image sequence.
*/
- status=QuantizeImages(quantize_info,images);
+ status=QuantizeImages(quantize_info,images,exception);
return(status);
}
/*
@@ -3139,7 +3150,7 @@
if (cube_info == (CubeInfo *) NULL)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
- status=ClassifyImageColors(cube_info,remap_image,&image->exception);
+ status=ClassifyImageColors(cube_info,remap_image,exception);
if (status != MagickFalse)
{
/*
@@ -3149,7 +3160,7 @@
image=images;
for ( ; image != (Image *) NULL; image=GetNextImageInList(image))
{
- status=AssignImageColors(image,cube_info);
+ status=AssignImageColors(image,cube_info,exception);
if (status == MagickFalse)
break;
}
@@ -3173,12 +3184,14 @@
%
% The format of the SetGrayscaleImage method is:
%
-% MagickBooleanType SetGrayscaleImage(Image *image)
+% MagickBooleanType SetGrayscaleImage(Image *image,ExceptionInfo *exeption)
%
% A description of each parameter follows:
%
% o image: The image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
#if defined(__cplusplus) || defined(c_plusplus)
@@ -3205,14 +3218,12 @@
}
#endif
-static MagickBooleanType SetGrayscaleImage(Image *image)
+static MagickBooleanType SetGrayscaleImage(Image *image,
+ ExceptionInfo *exception)
{
CacheView
*image_view;
- ExceptionInfo
- *exception;
-
MagickBooleanType
status;
@@ -3238,17 +3249,13 @@
image->filename);
if (image->storage_class != PseudoClass)
{
- ExceptionInfo
- *exception;
-
for (i=0; i <= (ssize_t) MaxMap; i++)
colormap_index[i]=(-1);
- if (AcquireImageColormap(image,MaxMap+1) == MagickFalse)
+ if (AcquireImageColormap(image,MaxMap+1,exception) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
image->colors=0;
status=MagickTrue;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -3323,7 +3330,6 @@
image->colormap=(PixelPacket *) RelinquishMagickMemory(image->colormap);
image->colormap=colormap;
status=MagickTrue;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(status)
diff --git a/MagickCore/quantize.h b/MagickCore/quantize.h
index 61d6d29..445c40d 100644
--- a/MagickCore/quantize.h
+++ b/MagickCore/quantize.h
@@ -57,13 +57,13 @@
} QuantizeInfo;
extern MagickExport MagickBooleanType
- CompressImageColormap(Image *),
+ CompressImageColormap(Image *,ExceptionInfo *),
GetImageQuantizeError(Image *),
- PosterizeImage(Image *,const size_t,const MagickBooleanType),
- QuantizeImage(const QuantizeInfo *,Image *),
- QuantizeImages(const QuantizeInfo *,Image *),
- RemapImage(const QuantizeInfo *,Image *,const Image *),
- RemapImages(const QuantizeInfo *,Image *,const Image *);
+ PosterizeImage(Image *,const size_t,const MagickBooleanType,ExceptionInfo *),
+ QuantizeImage(const QuantizeInfo *,Image *,ExceptionInfo *),
+ QuantizeImages(const QuantizeInfo *,Image *,ExceptionInfo *),
+ RemapImage(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *),
+ RemapImages(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *);
extern MagickExport QuantizeInfo
*AcquireQuantizeInfo(const ImageInfo *),
diff --git a/MagickCore/resize.c b/MagickCore/resize.c
index 83367a4..9f34a81 100644
--- a/MagickCore/resize.c
+++ b/MagickCore/resize.c
@@ -2604,8 +2604,11 @@
*/
filter_image=DestroyImage(filter_image);
resize_filter=DestroyResizeFilter(resize_filter);
- if ((status == MagickFalse) || (resize_image == (Image *) NULL))
- return((Image *) NULL);
+ if (status == MagickFalse)
+ {
+ resize_image=DestroyImage(resize_image);
+ return((Image *) NULL);
+ }
resize_image->type=image->type;
return(resize_image);
}
diff --git a/MagickCore/segment.c b/MagickCore/segment.c
index 3d66c91..91a1055 100644
--- a/MagickCore/segment.c
+++ b/MagickCore/segment.c
@@ -218,7 +218,7 @@
% MagickBooleanType Classify(Image *image,short **extrema,
% const MagickRealType cluster_threshold,
% const MagickRealType weighting_exponent,
-% const MagickBooleanType verbose)
+% const MagickBooleanType verbose,ExceptionInfo *exception)
%
% A description of each parameter follows.
%
@@ -237,10 +237,13 @@
% o verbose: A value greater than zero prints detailed information about
% the identified classes.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
static MagickBooleanType Classify(Image *image,short **extrema,
const MagickRealType cluster_threshold,
- const MagickRealType weighting_exponent,const MagickBooleanType verbose)
+ const MagickRealType weighting_exponent,const MagickBooleanType verbose,
+ ExceptionInfo *exception)
{
#define SegmentImageTag "Segment/Image"
@@ -253,9 +256,6 @@
*last_cluster,
*next_cluster;
- ExceptionInfo
- *exception;
-
ExtentPacket
blue,
green,
@@ -352,7 +352,6 @@
status=MagickTrue;
count=0;
progress=0;
- exception=(&image->exception);
image_view=AcquireCacheView(image);
for (y=0; y < (ssize_t) image->rows; y++)
{
@@ -512,7 +511,7 @@
/*
Allocate image colormap.
*/
- if (AcquireImageColormap(image,number_clusters) == MagickFalse)
+ if (AcquireImageColormap(image,number_clusters,exception) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
i=0;
@@ -1768,7 +1767,8 @@
%
% MagickBooleanType SegmentImage(Image *image,
% const ColorspaceType colorspace,const MagickBooleanType verbose,
-% const double cluster_threshold,const double smooth_threshold)
+% const double cluster_threshold,const double smooth_threshold,
+% ExceptionInfo *exception)
%
% A description of each parameter follows.
%
@@ -1787,10 +1787,13 @@
% derivative of the histogram. As the value is increased, you can expect a
% smoother second derivative.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
MagickExport MagickBooleanType SegmentImage(Image *image,
const ColorspaceType colorspace,const MagickBooleanType verbose,
- const double cluster_threshold,const double smooth_threshold)
+ const double cluster_threshold,const double smooth_threshold,
+ ExceptionInfo *exception)
{
MagickBooleanType
status;
@@ -1841,7 +1844,8 @@
/*
Classify using the fuzzy c-Means technique.
*/
- status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose);
+ status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose,
+ exception);
if (IsRGBColorspace(colorspace) == MagickFalse)
(void) TransformImageColorspace(image,colorspace);
/*
diff --git a/MagickCore/segment.h b/MagickCore/segment.h
index 06314da..d9bb2c6 100644
--- a/MagickCore/segment.h
+++ b/MagickCore/segment.h
@@ -26,7 +26,7 @@
GetImageDynamicThreshold(const Image *,const double,const double,
PixelInfo *,ExceptionInfo *),
SegmentImage(Image *,const ColorspaceType,const MagickBooleanType,
- const double,const double);
+ const double,const double,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickCore/signature-private.h b/MagickCore/signature-private.h
index 2171e17..d7001dd 100644
--- a/MagickCore/signature-private.h
+++ b/MagickCore/signature-private.h
@@ -30,7 +30,7 @@
SignatureInfo;
extern MagickExport MagickBooleanType
- SignatureImage(Image *);
+ SignatureImage(Image *,ExceptionInfo *exception);
extern MagickExport SignatureInfo
*AcquireSignatureInfo(void),
diff --git a/MagickCore/signature.c b/MagickCore/signature.c
index 52345bb..8a0b2b8 100644
--- a/MagickCore/signature.c
+++ b/MagickCore/signature.c
@@ -458,14 +458,17 @@
%
% The format of the SignatureImage method is:
%
-% MagickBooleanType SignatureImage(Image *image)
+% MagickBooleanType SignatureImage(Image *image,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
-MagickExport MagickBooleanType SignatureImage(Image *image)
+MagickExport MagickBooleanType SignatureImage(Image *image,
+ ExceptionInfo *exception)
{
CacheView
*image_view;
@@ -473,9 +476,6 @@
char
*hex_signature;
- ExceptionInfo
- *exception;
-
QuantumInfo
*quantum_info;
@@ -523,7 +523,6 @@
signature_info=AcquireSignatureInfo();
signature=AcquireStringInfo(quantum_info->extent);
pixels=GetQuantumPixels(quantum_info);
- exception=(&image->exception);
image_view=AcquireCacheView(image);
for (y=0; y < (ssize_t) image->rows; y++)
{
diff --git a/MagickCore/signature.h b/MagickCore/signature.h
index 6f59e38..976c463 100644
--- a/MagickCore/signature.h
+++ b/MagickCore/signature.h
@@ -23,7 +23,7 @@
#endif
extern MagickExport MagickBooleanType
- SignatureImage(Image *);
+ SignatureImage(Image *,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index 4c73de7..69f9de5 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -1541,7 +1541,7 @@
progress=0;
if (image->sync != MagickFalse)
{
- if (AcquireImageColormap(image,2) == MagickFalse)
+ if (AcquireImageColormap(image,2,exception) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
image->filename);
random_info=AcquireRandomInfoThreadSet();
diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c
index 4304c16..395022c 100644
--- a/MagickCore/xwindow.c
+++ b/MagickCore/xwindow.c
@@ -4445,7 +4445,7 @@
/*
Create colormap.
*/
- if (AcquireImageColormap(composite_image,number_colors) == MagickFalse)
+ if (AcquireImageColormap(composite_image,number_colors,exception) == MagickFalse)
{
XDestroyImage(ximage);
composite_image=DestroyImage(composite_image);
@@ -7803,7 +7803,7 @@
}
(void) SyncAuthenticPixels(affinity_image,exception);
(void) RemapImage(resource_info->quantize_info,image,
- affinity_image);
+ affinity_image,exception);
}
XGetPixelInfo(display,visual_info,map_info,resource_info,image,
pixel);
@@ -7838,7 +7838,7 @@
*/
quantize_info=(*resource_info->quantize_info);
quantize_info.number_colors=(size_t) visual_info->colormap_size;
- (void) QuantizeImage(&quantize_info,image);
+ (void) QuantizeImage(&quantize_info,image,exception);
}
/*
Free previous and create new colormap.