From: cristy Date: Sun, 28 Aug 2011 22:49:25 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7126 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=051718b74ad68f8584cdac01d0192974ec777f1b;p=imagemagick --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index d1d624690..9f90d6325 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -776,7 +776,11 @@ void Magick::Image::despeckle ( void ) // Display image void Magick::Image::display( void ) { - DisplayImages( imageInfo(), image() ); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); + DisplayImages( imageInfo(), image(), &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Distort image. distorts an image using various distortion methods, by diff --git a/MagickCore/animate-private.h b/MagickCore/animate-private.h index ac69c5496..7ca17ac3a 100644 --- a/MagickCore/animate-private.h +++ b/MagickCore/animate-private.h @@ -26,10 +26,11 @@ extern "C" { #include "MagickCore/xwindow-private.h" extern MagickExport Image - *XAnimateImages(Display *,XResourceInfo *,char **,const int,Image *); + *XAnimateImages(Display *,XResourceInfo *,char **,const int,Image *, + ExceptionInfo *); extern MagickExport void - XAnimateBackgroundImage(Display *,XResourceInfo *,Image *); + XAnimateBackgroundImage(Display *,XResourceInfo *,Image *,ExceptionInfo *); #endif #if defined(__cplusplus) || defined(c_plusplus) diff --git a/MagickCore/animate.c b/MagickCore/animate.c index 7d4236689..aba1d86e5 100644 --- a/MagickCore/animate.c +++ b/MagickCore/animate.c @@ -238,10 +238,10 @@ typedef enum */ static Image *XMagickCommand(Display *,XResourceInfo *,XWindows *,const CommandType, - Image **,MagickStatusType *); + Image **,MagickStatusType *,ExceptionInfo *); static MagickBooleanType - XSaveImage(Display *,XResourceInfo *,XWindows *,Image *); + XSaveImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *); /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -261,7 +261,7 @@ static MagickBooleanType % The format of the AnimateImages method is: % % MagickBooleanType AnimateImages(const ImageInfo *image_info, -% Image *images) +% Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -269,9 +269,11 @@ static MagickBooleanType % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, - Image *images) + Image *images,ExceptionInfo *exception) { char *argv[1]; @@ -297,13 +299,12 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, display=XOpenDisplay(image_info->server_name); if (display == (Display *) NULL) { - (void) ThrowMagickException(&images->exception,GetMagickModule(), - XServerError,"UnableToOpenXServer","`%s'",XDisplayName( - image_info->server_name)); + (void) ThrowMagickException(exception,GetMagickModule(),XServerError, + "UnableToOpenXServer","`%s'",XDisplayName(image_info->server_name)); return(MagickFalse); } - if (images->exception.severity != UndefinedException) - CatchException(&images->exception); + if (exception->severity != UndefinedException) + CatchException(exception); (void) XSetErrorHandler(XError); resource_database=XGetResourceDatabase(display,GetClientName()); (void) ResetMagickMemory(&resource_info,0,sizeof(XResourceInfo)); @@ -312,12 +313,11 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, resource_info.image_geometry=AcquireString(image_info->page); resource_info.immutable=MagickTrue; argv[0]=AcquireString(GetClientName()); - (void) XAnimateImages(display,&resource_info,argv,1,images); + (void) XAnimateImages(display,&resource_info,argv,1,images,exception); argv[0]=DestroyString(argv[0]); (void) XCloseDisplay(display); XDestroyResourceInfo(&resource_info); - status=images->exception.severity == UndefinedException ? - MagickTrue : MagickFalse; + status=exception->severity == UndefinedException ? MagickTrue : MagickFalse; return(status != 0 ? MagickTrue : MagickFalse); } @@ -339,7 +339,7 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, % % Image *XMagickCommand(Display *display,XResourceInfo *resource_info, % XWindows *windows,const CommandType command_type,Image **image, -% MagickStatusType *state) +% MagickStatusType *state,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -356,11 +356,13 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, % o state: Specifies a MagickStatusType; XMagickCommand may return a % modified state. % +% o exception: return any errors or warnings in this structure. +% % */ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XWindows *windows,const CommandType command_type,Image **image, - MagickStatusType *state) + MagickStatusType *state,ExceptionInfo *exception) { Image *nexus; @@ -385,9 +387,6 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, char **filelist; - ExceptionInfo - *exception; - Image *images, *next; @@ -437,7 +436,6 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, return((Image *) NULL); } read_info=CloneImageInfo(resource_info->image_info); - exception=AcquireExceptionInfo(); images=NewImageList(); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); @@ -458,7 +456,6 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, break; } filelist=(char **) RelinquishMagickMemory(filelist); - exception=DestroyExceptionInfo(exception); read_info=DestroyImageInfo(read_info); if (images == (Image *) NULL) { @@ -536,7 +533,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Save image. */ - status=XSaveImage(display,resource_info,windows,*image); + status=XSaveImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to write X image:", @@ -621,7 +618,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); status=InvokeDelegate(resource_info->image_info,*image,"browse", - (char *) NULL,&(*image)->exception); + (char *) NULL,exception); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to browse documentation", (char *) NULL); @@ -682,7 +679,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, % The format of the XAnimateBackgroundImage method is: % % void XAnimateBackgroundImage(Display *display, -% XResourceInfo *resource_info,Image *images) +% XResourceInfo *resource_info,Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -693,6 +690,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, % % o images: the image list. % +% o exception: return any errors or warnings in this structure. +% */ static inline ssize_t MagickMax(const ssize_t x,const ssize_t y) @@ -722,7 +721,7 @@ static int SceneCompare(const void *x,const void *y) #endif MagickExport void XAnimateBackgroundImage(Display *display, - XResourceInfo *resource_info,Image *images) + XResourceInfo *resource_info,Image *images,ExceptionInfo *exception) { char geometry[MaxTextExtent], @@ -853,7 +852,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, */ if (window_info.id == root_window) XDestroyWindowColors(display,root_window); - coalesce_image=CoalesceImages(images,&images->exception); + coalesce_image=CoalesceImages(images,exception); if (coalesce_image == (Image *) NULL) ThrowXWindowFatalException(ResourceLimitError,"MemoryAllocationFailed", images->filename); @@ -889,7 +888,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, Sort images by increasing scene number. */ number_scenes=GetImageListLength(images); - image_list=ImageListToArray(images,&images->exception); + image_list=ImageListToArray(images,exception); if (image_list == (Image **) NULL) ThrowXWindowFatalException(ResourceLimitFatalError, "MemoryAllocationFailed",images->filename); @@ -957,7 +956,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, window_info.x=(int) geometry_info.x; window_info.y=(int) geometry_info.y; status=XMakeImage(display,&resources,&window_info,image_list[0], - window_info.width,window_info.height); + window_info.width,window_info.height,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", images->filename); @@ -1082,7 +1081,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", image_list[scene]->filename); status=XMakeImage(display,&resources,&window_info,image_list[scene], - columns,rows); + columns,rows,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", images->filename); @@ -1173,7 +1172,7 @@ MagickExport void XAnimateBackgroundImage(Display *display, % The format of the XAnimateImages method is: % % Image *XAnimateImages(Display *display,XResourceInfo *resource_info, -% char **argv,const int argc,Image *images) +% char **argv,const int argc,Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1188,9 +1187,12 @@ MagickExport void XAnimateBackgroundImage(Display *display, % % o images: the image list. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport Image *XAnimateImages(Display *display, - XResourceInfo *resource_info,char **argv,const int argc,Image *images) + XResourceInfo *resource_info,char **argv,const int argc,Image *images, + ExceptionInfo *exception) { #define MagickMenus 4 #define MaXWindows 8 @@ -1405,8 +1407,8 @@ MagickExport Image *XAnimateImages(Display *display, status=chdir(working_directory); if (status == -1) - (void) ThrowMagickException(&images->exception,GetMagickModule(), - FileOpenError,"UnableToOpenFile","%s",working_directory); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToOpenFile","%s",working_directory); warning_handler=resource_info->display_warnings ? SetErrorHandler(XWarning) : SetErrorHandler((ErrorHandler) NULL); warning_handler=resource_info->display_warnings ? @@ -1471,7 +1473,7 @@ MagickExport Image *XAnimateImages(Display *display, class_hints=windows->class_hints; manager_hints=windows->manager_hints; root_window=XRootWindow(display,visual_info->screen); - coalesce_image=CoalesceImages(images,&images->exception); + coalesce_image=CoalesceImages(images,exception); if (coalesce_image == (Image *) NULL) ThrowXWindowFatalException(XServerFatalError,"MemoryAllocationFailed", images->filename); @@ -1508,7 +1510,7 @@ MagickExport Image *XAnimateImages(Display *display, Sort images by increasing scene number. */ number_scenes=GetImageListLength(images); - image_list=ImageListToArray(images,&images->exception); + image_list=ImageListToArray(images,exception); if (image_list == (Image **) NULL) ThrowXWindowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed", images->filename); @@ -1929,7 +1931,7 @@ MagickExport Image *XAnimateImages(Display *display, ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", image_list[scene]->filename); status=XMakeImage(display,resource_info,&windows->image,image_list[scene], - columns,rows); + columns,rows,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", images->filename); @@ -1998,7 +2000,7 @@ MagickExport Image *XAnimateImages(Display *display, image=image_list[0]; state=(MagickStatusType) (ForwardAnimationState | RepeatAnimationState); (void) XMagickCommand(display,resource_info,windows,PlayCommand,&images, - &state); + &state,exception); do { if (XEventsQueued(display,QueuedAfterFlush) == 0) @@ -2188,7 +2190,7 @@ MagickExport Image *XAnimateImages(Display *display, } if (command_type != NullCommand) nexus=XMagickCommand(display,resource_info,windows, - command_type,&image,&state); + command_type,&image,&state,exception); continue; } switch (event.type) @@ -2344,8 +2346,8 @@ MagickExport Image *XAnimateImages(Display *display, (void) CopyMagickString(resource_info->image_info->filename, ((char *) data)+5,MaxTextExtent); } - nexus=ReadImage(resource_info->image_info,&image->exception); - CatchException(&image->exception); + nexus=ReadImage(resource_info->image_info,exception); + CatchException(exception); if (nexus != (Image *) NULL) state|=ExitState; (void) XFree((void *) data); @@ -2556,7 +2558,7 @@ MagickExport Image *XAnimateImages(Display *display, } if (command_type != NullCommand) nexus=XMagickCommand(display,resource_info,windows, - command_type,&image,&state); + command_type,&image,&state,exception); break; } case KeyRelease: @@ -2601,7 +2603,7 @@ MagickExport Image *XAnimateImages(Display *display, { if (LocaleCompare(display_image->filename,"LOGO") == 0) nexus=XMagickCommand(display,resource_info,windows, - OpenCommand,&image,&state); + OpenCommand,&image,&state,exception); else state|=ExitState; } @@ -2621,7 +2623,8 @@ MagickExport Image *XAnimateImages(Display *display, XMakeStandardColormap(display,icon_visual,icon_resources, display_image,icon_map,icon_pixel); (void) XMakeImage(display,icon_resources,&windows->icon, - display_image,windows->icon.width,windows->icon.height); + display_image,windows->icon.width,windows->icon.height, + exception); (void) XSetWindowBackgroundPixmap(display,windows->icon.id, windows->icon.pixmap); (void) XClearWindow(display,windows->icon.id); @@ -2687,8 +2690,8 @@ MagickExport Image *XAnimateImages(Display *display, break; (void) CopyMagickString(resource_info->image_info->filename, (char *) data,MaxTextExtent); - nexus=ReadImage(resource_info->image_info,&image->exception); - CatchException(&image->exception); + nexus=ReadImage(resource_info->image_info,exception); + CatchException(exception); if (nexus != (Image *) NULL) state|=ExitState; (void) XFree((void *) data); @@ -2832,8 +2835,8 @@ MagickExport Image *XAnimateImages(Display *display, (void) directory; status=chdir(resource_info->home_directory); if (status == -1) - (void) ThrowMagickException(&images->exception,GetMagickModule(), - FileOpenError,"UnableToOpenFile","%s",resource_info->home_directory); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToOpenFile","%s",resource_info->home_directory); return(nexus); } @@ -2853,7 +2856,8 @@ MagickExport Image *XAnimateImages(Display *display, % The format of the XSaveImage method is: % % MagickBooleanType XSaveImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2872,7 +2876,8 @@ MagickExport Image *XAnimateImages(Display *display, % */ static MagickBooleanType XSaveImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { char filename[MaxTextExtent]; @@ -2901,8 +2906,8 @@ static MagickBooleanType XSaveImage(Display *display, GetPathComponent(image->filename,TailPath,filename); status=chdir(path); if (status == -1) - (void) ThrowMagickException(&image->exception,GetMagickModule(), - FileOpenError,"UnableToOpenFile","%s",path); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToOpenFile","%s",path); } XFileBrowserWidget(display,windows,"Save",filename); if (*filename == '\0') @@ -2921,7 +2926,7 @@ static MagickBooleanType XSaveImage(Display *display, } image_info=CloneImageInfo(resource_info->image_info); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - (void) SetImageInfo(image_info,1,&image->exception); + (void) SetImageInfo(image_info,1,exception); if ((LocaleCompare(image_info->magick,"JPEG") == 0) || (LocaleCompare(image_info->magick,"JPG") == 0)) { @@ -2969,7 +2974,7 @@ static MagickBooleanType XSaveImage(Display *display, Write image. */ image=GetFirstImageInList(image); - status=WriteImages(image_info,image,filename,&image->exception); + status=WriteImages(image_info,image,filename,exception); if (status != MagickFalse) image->taint=MagickFalse; image_info=DestroyImageInfo(image_info); @@ -3004,9 +3009,11 @@ static MagickBooleanType XSaveImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, - Image *image) + Image *image,ExceptionInfo *exception) { assert(image_info != (const ImageInfo *) NULL); assert(image_info->signature == MagickSignature); @@ -3014,9 +3021,8 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info, assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - (void) ThrowMagickException(&image->exception,GetMagickModule(), - MissingDelegateError,"DelegateLibrarySupportNotBuiltIn","`%s' (X11)", - image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError, + "DelegateLibrarySupportNotBuiltIn","`%s' (X11)",image->filename); return(MagickFalse); } #endif diff --git a/MagickCore/animate.h b/MagickCore/animate.h index cf7ece6f9..54e2119a1 100644 --- a/MagickCore/animate.h +++ b/MagickCore/animate.h @@ -23,7 +23,7 @@ extern "C" { #endif extern MagickExport MagickBooleanType - AnimateImages(const ImageInfo *,Image *); + AnimateImages(const ImageInfo *,Image *,ExceptionInfo *); #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/MagickCore/display-private.h b/MagickCore/display-private.h index 86b33488c..a5b74d20b 100644 --- a/MagickCore/display-private.h +++ b/MagickCore/display-private.h @@ -26,10 +26,11 @@ extern "C" { #include "MagickCore/xwindow-private.h" extern MagickExport Image - *XDisplayImage(Display *,XResourceInfo *,char **,int,Image **,size_t *); + *XDisplayImage(Display *,XResourceInfo *,char **,int,Image **,size_t *, + ExceptionInfo *); extern MagickExport MagickBooleanType XDisplayBackgroundImage(Display *, - XResourceInfo *,Image *); + XResourceInfo *,Image *,ExceptionInfo *); #endif #if defined(__cplusplus) || defined(c_plusplus) diff --git a/MagickCore/display.c b/MagickCore/display.c index 5beed0f87..5399c4b52 100644 --- a/MagickCore/display.c +++ b/MagickCore/display.c @@ -1561,37 +1561,49 @@ static const unsigned char */ static CommandType XImageWindowCommand(Display *,XResourceInfo *,XWindows *, - const MagickStatusType,KeySym,Image **); + const MagickStatusType,KeySym,Image **,ExceptionInfo *); static Image *XMagickCommand(Display *,XResourceInfo *,XWindows *,const CommandType, - Image **), + Image **,ExceptionInfo *), *XOpenImage(Display *,XResourceInfo *,XWindows *,const MagickBooleanType), - *XTileImage(Display *,XResourceInfo *,XWindows *,Image *,XEvent *), - *XVisualDirectoryImage(Display *,XResourceInfo *,XWindows *); + *XTileImage(Display *,XResourceInfo *,XWindows *,Image *,XEvent *, + ExceptionInfo *), + *XVisualDirectoryImage(Display *,XResourceInfo *,XWindows *, + ExceptionInfo *); static MagickBooleanType - XAnnotateEditImage(Display *,XResourceInfo *,XWindows *,Image *), - XDrawEditImage(Display *,XResourceInfo *,XWindows *,Image **), - XChopImage(Display *,XResourceInfo *,XWindows *,Image **), - XCropImage(Display *,XResourceInfo *,XWindows *,Image *,const ClipboardMode), - XBackgroundImage(Display *,XResourceInfo *,XWindows *,Image **), - XColorEditImage(Display *,XResourceInfo *,XWindows *,Image **), - XCompositeImage(Display *,XResourceInfo *,XWindows *,Image *), - XConfigureImage(Display *,XResourceInfo *,XWindows *,Image *), - XMatteEditImage(Display *,XResourceInfo *,XWindows *,Image **), - XPasteImage(Display *,XResourceInfo *,XWindows *,Image *), - XPrintImage(Display *,XResourceInfo *,XWindows *,Image *), - XRotateImage(Display *,XResourceInfo *,XWindows *,double,Image **), - XROIImage(Display *,XResourceInfo *,XWindows *,Image **), - XSaveImage(Display *,XResourceInfo *,XWindows *,Image *), - XTrimImage(Display *,XResourceInfo *,XWindows *,Image *); + XAnnotateEditImage(Display *,XResourceInfo *,XWindows *,Image *, + ExceptionInfo *), + XBackgroundImage(Display *,XResourceInfo *,XWindows *,Image **, + ExceptionInfo *), + XChopImage(Display *,XResourceInfo *,XWindows *,Image **, + ExceptionInfo *), + XCropImage(Display *,XResourceInfo *,XWindows *,Image *,const ClipboardMode, + ExceptionInfo *), + XColorEditImage(Display *,XResourceInfo *,XWindows *,Image **, + ExceptionInfo *), + XCompositeImage(Display *,XResourceInfo *,XWindows *,Image *, + ExceptionInfo *), + XConfigureImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *), + XDrawEditImage(Display *,XResourceInfo *,XWindows *,Image **, + ExceptionInfo *), + XMatteEditImage(Display *,XResourceInfo *,XWindows *,Image **, + ExceptionInfo *), + XPasteImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *), + XPrintImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *), + XRotateImage(Display *,XResourceInfo *,XWindows *,double,Image **, + ExceptionInfo *), + XROIImage(Display *,XResourceInfo *,XWindows *,Image **,ExceptionInfo *), + XSaveImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *), + XTrimImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *); static void XDrawPanRectangle(Display *,XWindows *), - XImageCache(Display *,XResourceInfo *,XWindows *,const CommandType,Image **), + XImageCache(Display *,XResourceInfo *,XWindows *,const CommandType,Image **, + ExceptionInfo *), XMagnifyImage(Display *,XWindows *,XEvent *), - XMakePanImage(Display *,XResourceInfo *,XWindows *,Image *), + XMakePanImage(Display *,XResourceInfo *,XWindows *,Image *,ExceptionInfo *), XPanImage(Display *,XWindows *,XEvent *), XMagnifyWindowCommand(Display *,XWindows *,const MagickStatusType, const KeySym), @@ -1617,7 +1629,7 @@ static void % The format of the DisplayImages method is: % % MagickBooleanType DisplayImages(const ImageInfo *image_info, -% Image *images) +% Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1625,9 +1637,11 @@ static void % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType DisplayImages(const ImageInfo *image_info, - Image *images) + Image *images,ExceptionInfo *exception) { char *argv[1]; @@ -1659,13 +1673,12 @@ MagickExport MagickBooleanType DisplayImages(const ImageInfo *image_info, display=XOpenDisplay(image_info->server_name); if (display == (Display *) NULL) { - (void) ThrowMagickException(&images->exception,GetMagickModule(), - XServerError,"UnableToOpenXServer","`%s'",XDisplayName( - image_info->server_name)); + (void) ThrowMagickException(exception,GetMagickModule(),XServerError, + "UnableToOpenXServer","`%s'",XDisplayName(image_info->server_name)); return(MagickFalse); } - if (images->exception.severity != UndefinedException) - CatchException(&images->exception); + if (exception->severity != UndefinedException) + CatchException(exception); (void) XSetErrorHandler(XError); resource_database=XGetResourceDatabase(display,GetClientName()); (void) ResetMagickMemory(&resource_info,0,sizeof(resource_info)); @@ -1680,12 +1693,12 @@ MagickExport MagickBooleanType DisplayImages(const ImageInfo *image_info, if ((images->iterations != 0) && (i >= (ssize_t) images->iterations)) break; image=GetImageFromList(images,i % GetImageListLength(images)); - (void) XDisplayImage(display,&resource_info,argv,1,&image,&state); + (void) XDisplayImage(display,&resource_info,argv,1,&image,&state,exception); } argv[0]=DestroyString(argv[0]); (void) XCloseDisplay(display); XDestroyResourceInfo(&resource_info); - if (images->exception.severity != UndefinedException) + if (exception->severity != UndefinedException) return(MagickFalse); return(MagickTrue); } @@ -1762,7 +1775,8 @@ MagickExport MagickBooleanType RemoteDisplayCommand(const ImageInfo *image_info, % The format of the XAnnotateEditImage method is: % % MagickBooleanType XAnnotateEditImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -1792,7 +1806,8 @@ static inline ssize_t MagickMin(const ssize_t x,const ssize_t y) } static MagickBooleanType XAnnotateEditImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { static const char *AnnotateMenu[] = @@ -2732,7 +2747,7 @@ static MagickBooleanType XAnnotateEditImage(Display *display, Update image configuration. */ XConfigureImageColormap(display,resource_info,windows,image); - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } @@ -2752,7 +2767,8 @@ static MagickBooleanType XAnnotateEditImage(Display *display, % The format of the XBackgroundImage method is: % % MagickBooleanType XBackgroundImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image **image) +% XResourceInfo *resource_info,XWindows *windows,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2765,9 +2781,12 @@ static MagickBooleanType XAnnotateEditImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XBackgroundImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { #define BackgroundImageTag "Background/Image" @@ -2787,19 +2806,22 @@ static MagickBooleanType XBackgroundImage(Display *display, "Enter window id (id 0x00 selects window with pointer):",window_id); if (*window_id == '\0') return(MagickFalse); - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XInfoWidget(display,windows,BackgroundImageTag); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); background_resources=(*resource_info); background_resources.window_id=window_id; background_resources.backdrop=status != 0 ? MagickTrue : MagickFalse; - status=XDisplayBackgroundImage(display,&background_resources,*image); + status=XDisplayBackgroundImage(display,&background_resources,*image, + exception); if (status != MagickFalse) XClientMessage(display,windows->image.id,windows->im_protocols, windows->im_retain_colors,CurrentTime); XSetCursorState(display,windows,MagickFalse); - (void) XMagickCommand(display,resource_info,windows,UndoCommand,image); + (void) XMagickCommand(display,resource_info,windows,UndoCommand,image, + exception); return(MagickTrue); } @@ -2819,7 +2841,7 @@ static MagickBooleanType XBackgroundImage(Display *display, % The format of the XChopImage method is: % % MagickBooleanType XChopImage(Display *display,XResourceInfo *resource_info, -% XWindows *windows,Image **image) +% XWindows *windows,Image **image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2832,9 +2854,12 @@ static MagickBooleanType XBackgroundImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XChopImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { static const char *ChopMenu[] = @@ -3183,7 +3208,8 @@ static MagickBooleanType XChopImage(Display *display, /* Image chopping is relative to image configuration. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); windows->image.window_changes.width=windows->image.ximage->width- @@ -3207,7 +3233,7 @@ static MagickBooleanType XChopImage(Display *display, /* Chop image. */ - chop_image=ChopImage(*image,&chop_info,&(*image)->exception); + chop_image=ChopImage(*image,&chop_info,exception); XSetCursorState(display,windows,MagickFalse); if (chop_image == (Image *) NULL) return(MagickFalse); @@ -3217,7 +3243,7 @@ static MagickBooleanType XChopImage(Display *display, Update image configuration. */ XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); return(MagickTrue); } @@ -3238,7 +3264,8 @@ static MagickBooleanType XChopImage(Display *display, % The format of the XColorEditImage method is: % % MagickBooleanType XColorEditImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image **image) +% XResourceInfo *resource_info,XWindows *windows,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3251,11 +3278,12 @@ static MagickBooleanType XChopImage(Display *display, % % o image: the image; returned from ReadImage. % +% o exception: return any errors or warnings in this structure. +% */ - - static MagickBooleanType XColorEditImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { static const char *ColorEditMenu[] = @@ -3298,9 +3326,6 @@ static MagickBooleanType XColorEditImage(Display *display, Cursor cursor; - ExceptionInfo - *exception; - int entry, id, @@ -3527,7 +3552,7 @@ static MagickBooleanType XColorEditImage(Display *display, case ColorEditUndoCommand: { (void) XMagickCommand(display,resource_info,windows,UndoCommand, - image); + image,exception); break; } case ColorEditHelpCommand: @@ -3565,7 +3590,7 @@ static MagickBooleanType XColorEditImage(Display *display, x=event.xbutton.x; y=event.xbutton.y; (void) XMagickCommand(display,resource_info,windows, - SaveToUndoBufferCommand,image); + SaveToUndoBufferCommand,image,exception); state|=UpdateConfigurationState; break; } @@ -3582,7 +3607,7 @@ static MagickBooleanType XColorEditImage(Display *display, x=event.xbutton.x; y=event.xbutton.y; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); XInfoWidget(display,windows,text); (void) XCheckDefineCursor(display,windows->image.id,cursor); state&=(~UpdateConfigurationState); @@ -3698,7 +3723,6 @@ static MagickBooleanType XColorEditImage(Display *display, if ((x_offset >= (int) (*image)->columns) || (y_offset >= (int) (*image)->rows)) continue; - exception=(&(*image)->exception); image_view=AcquireCacheView(*image); switch (method) { @@ -3717,8 +3741,7 @@ static MagickBooleanType XColorEditImage(Display *display, SetPixelRed(*image,ScaleShortToQuantum(color.red),q); SetPixelGreen(*image,ScaleShortToQuantum(color.green),q); SetPixelBlue(*image,ScaleShortToQuantum(color.blue),q); - (void) SyncCacheViewAuthenticPixels(image_view, - &(*image)->exception); + (void) SyncCacheViewAuthenticPixels(image_view,exception); break; } case ReplaceMethod: @@ -3731,7 +3754,7 @@ static MagickBooleanType XColorEditImage(Display *display, Update color information using replace algorithm. */ (void) GetOneCacheViewVirtualPixel(image_view,(ssize_t) x_offset, - (ssize_t) y_offset,&target,&(*image)->exception); + (ssize_t) y_offset,&target,exception); if ((*image)->storage_class == DirectClass) { for (y=0; y < (int) (*image)->rows; y++) @@ -3862,7 +3885,8 @@ static MagickBooleanType XColorEditImage(Display *display, % The format of the XCompositeImage method is: % % MagickBooleanType XCompositeImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -3875,9 +3899,12 @@ static MagickBooleanType XColorEditImage(Display *display, % % o image: the image; returned from ReadImage. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XCompositeImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { static char displacement_geometry[MaxTextExtent] = "30x30", @@ -3953,8 +3980,8 @@ static MagickBooleanType XCompositeImage(Display *display, XCheckRefreshWindows(display,windows); (void) CopyMagickString(resource_info->image_info->filename,filename, MaxTextExtent); - composite_image=ReadImage(resource_info->image_info,&image->exception); - CatchException(&image->exception); + composite_image=ReadImage(resource_info->image_info,exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (composite_image == (Image *) NULL) return(MagickFalse); @@ -4260,7 +4287,7 @@ static MagickBooleanType XCompositeImage(Display *display, */ resize_image=ResizeImage(composite_image,composite_info.width, composite_info.height,composite_image->filter,composite_image->blur, - &image->exception); + exception); composite_image=DestroyImage(composite_image); if (resize_image == (Image *) NULL) { @@ -4277,9 +4304,6 @@ static MagickBooleanType XCompositeImage(Display *display, CacheView *image_view; - ExceptionInfo - *exception; - int y; @@ -4295,7 +4319,6 @@ static MagickBooleanType XCompositeImage(Display *display, /* Create mattes for blending. */ - exception=(&image->exception); (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel,exception); opacity=(Quantum) (ScaleQuantumToChar((Quantum) QuantumRange)- ((ssize_t) ScaleQuantumToChar((Quantum) QuantumRange)*blend)/100); @@ -4330,7 +4353,7 @@ static MagickBooleanType XCompositeImage(Display *display, Update image configuration. */ XConfigureImageColormap(display,resource_info,windows,image); - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } @@ -4351,7 +4374,8 @@ static MagickBooleanType XCompositeImage(Display *display, % The format of the XConfigureImage method is: % % MagickBooleanType XConfigureImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -4364,10 +4388,14 @@ static MagickBooleanType XCompositeImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% +% o exception: return any errors or warnings in this structure. % */ static MagickBooleanType XConfigureImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { char geometry[MaxTextExtent]; @@ -4419,7 +4447,7 @@ static MagickBooleanType XConfigureImage(Display *display, windows->image.y=(int) (height*windows->image.y/windows->image.ximage->height); status=XMakeImage(display,resource_info,&windows->image,image, - (unsigned int) width,(unsigned int) height); + (unsigned int) width,(unsigned int) height,exception); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to configure X image:", windows->image.name); @@ -4521,7 +4549,7 @@ static MagickBooleanType XConfigureImage(Display *display, % % MagickBooleanType XCropImage(Display *display, % XResourceInfo *resource_info,XWindows *windows,Image *image, -% const ClipboardMode mode) +% const ClipboardMode mode,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -4537,10 +4565,12 @@ static MagickBooleanType XConfigureImage(Display *display, % o mode: This unsigned value specified whether the image should be % cropped, copied, or cut. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XCropImage(Display *display, XResourceInfo *resource_info,XWindows *windows,Image *image, - const ClipboardMode mode) + const ClipboardMode mode,ExceptionInfo *exception) { static const char *CropModeMenu[] = @@ -4580,9 +4610,6 @@ static MagickBooleanType XCropImage(Display *display, Cursor cursor; - ExceptionInfo - *exception; - int id, x, @@ -5279,7 +5306,7 @@ static MagickBooleanType XCropImage(Display *display, XSetCropGeometry(display,windows,&crop_info,image); windows->image.window_changes.width=(int) crop_info.width; windows->image.window_changes.height=(int) crop_info.height; - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } /* @@ -5301,7 +5328,7 @@ static MagickBooleanType XCropImage(Display *display, crop_info.y+=y; crop_info.y=(ssize_t) (scale_factor*crop_info.y+0.5); crop_info.height=(unsigned int) (scale_factor*crop_info.height+0.5); - crop_image=CropImage(image,&crop_info,&image->exception); + crop_image=CropImage(image,&crop_info,exception); XSetCursorState(display,windows,MagickFalse); if (crop_image == (Image *) NULL) return(MagickFalse); @@ -5310,13 +5337,12 @@ static MagickBooleanType XCropImage(Display *display, resource_info->copy_image=crop_image; if (mode == CopyMode) { - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } /* Cut image. */ - exception=(&image->exception); if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse) return(MagickFalse); image->matte=MagickTrue; @@ -5340,7 +5366,7 @@ static MagickBooleanType XCropImage(Display *display, Update image configuration. */ XConfigureImageColormap(display,resource_info,windows,image); - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } @@ -5361,7 +5387,8 @@ static MagickBooleanType XCropImage(Display *display, % The format of the XDrawEditImage method is: % % MagickBooleanType XDrawEditImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image **image) +% XResourceInfo *resource_info,XWindows *windows,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -5374,9 +5401,12 @@ static MagickBooleanType XCropImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XDrawEditImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { static const char *DrawMenu[] = @@ -5471,7 +5501,7 @@ static MagickBooleanType XDrawEditImage(Display *display, sizeof(*coordinate_info)); if (coordinate_info == (XPoint *) NULL) { - (void) ThrowMagickException(&(*image)->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'","..."); return(MagickFalse); } @@ -5710,15 +5740,15 @@ static MagickBooleanType XDrawEditImage(Display *display, image_info=AcquireImageInfo(); (void) CopyMagickString(image_info->filename,filename, MaxTextExtent); - stipple_image=ReadImage(image_info,&(*image)->exception); - CatchException(&(*image)->exception); + stipple_image=ReadImage(image_info,exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (stipple_image == (Image *) NULL) break; (void) AcquireUniqueFileResource(filename); (void) FormatLocaleString(stipple_image->filename,MaxTextExtent, "xbm:%s",filename); - (void) WriteImage(image_info,stipple_image,&(*image)->exception); + (void) WriteImage(image_info,stipple_image,exception); stipple_image=DestroyImage(stipple_image); image_info=DestroyImageInfo(image_info); status=XReadBitmapFile(display,root_window,filename,&width, @@ -5769,7 +5799,7 @@ static MagickBooleanType XDrawEditImage(Display *display, case DrawUndoCommand: { (void) XMagickCommand(display,resource_info,windows,UndoCommand, - image); + image,exception); break; } case DrawHelpCommand: @@ -6096,7 +6126,7 @@ static MagickBooleanType XDrawEditImage(Display *display, coordinate_info=(XPoint *) ResizeQuantumMemory(coordinate_info, max_coordinates,sizeof(*coordinate_info)); if (coordinate_info == (XPoint *) NULL) - (void) ThrowMagickException(&(*image)->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'","..."); break; } @@ -6123,7 +6153,7 @@ static MagickBooleanType XDrawEditImage(Display *display, coordinate_info=(XPoint *) ResizeQuantumMemory(coordinate_info, max_coordinates,sizeof(*coordinate_info)); if (coordinate_info == (XPoint *) NULL) - (void) ThrowMagickException(&(*image)->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'","..."); break; } @@ -6221,7 +6251,7 @@ static MagickBooleanType XDrawEditImage(Display *display, draw_info.x=(int) rectangle_info.x; draw_info.y=(int) rectangle_info.y; (void) XMagickCommand(display,resource_info,windows,SaveToUndoBufferCommand, - image); + image,exception); width=(unsigned int) (*image)->columns; height=(unsigned int) (*image)->rows; x=0; @@ -6294,7 +6324,7 @@ static MagickBooleanType XDrawEditImage(Display *display, Update image colormap and return to image drawing. */ XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); } XSetCursorState(display,windows,MagickFalse); coordinate_info=(XPoint *) RelinquishMagickMemory(coordinate_info); @@ -6371,7 +6401,8 @@ static void XDrawPanRectangle(Display *display,XWindows *windows) % The format of the XImageCache method is: % % void XImageCache(Display *display,XResourceInfo *resource_info, -% XWindows *windows,const CommandType command,Image **image) +% XWindows *windows,const CommandType command,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -6387,9 +6418,12 @@ static void XDrawPanRectangle(Display *display,XWindows *windows) % o image: the image; XImageCache may transform the image and return a new % image pointer. % +% o exception: return any errors or warnings in this structure. +% */ static void XImageCache(Display *display,XResourceInfo *resource_info, - XWindows *windows,const CommandType command,Image **image) + XWindows *windows,const CommandType command,Image **image, + ExceptionInfo *exception) { Image *cache_image; @@ -6450,7 +6484,7 @@ static void XImageCache(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) return; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); return; } case CutCommand: @@ -6565,7 +6599,7 @@ static void XImageCache(Display *display,XResourceInfo *resource_info, break; XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - cache_image->list=CloneImage(*image,0,0,MagickTrue,&(*image)->exception); + cache_image->list=CloneImage(*image,0,0,MagickTrue,exception); XSetCursorState(display,windows,MagickFalse); if (cache_image->list == (Image *) NULL) { @@ -6616,7 +6650,7 @@ static void XImageCache(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) return; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); return; } if (command != InfoCommand) @@ -6644,11 +6678,12 @@ static void XImageCache(Display *display,XResourceInfo *resource_info, % XImageWindowCommand() makes a transform to the image or Image window as % specified by a user menu button or keyboard command. % -% The format of the XMagickCommand method is: +% The format of the XImageWindowCommand method is: % % CommandType XImageWindowCommand(Display *display, % XResourceInfo *resource_info,XWindows *windows, -% const MagickStatusType state,KeySym key_symbol,Image **image) +% const MagickStatusType state,KeySym key_symbol,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -6667,13 +6702,15 @@ static void XImageCache(Display *display,XResourceInfo *resource_info, % % o key_symbol: Specifies a command to perform. % -% o image: the image; XImageWIndowCommand -% may transform the image and return a new image pointer. +% o image: the image; XImageWIndowCommand may transform the image and +% return a new image pointer. +% +% o exception: return any errors or warnings in this structure. % */ static CommandType XImageWindowCommand(Display *display, XResourceInfo *resource_info,XWindows *windows,const MagickStatusType state, - KeySym key_symbol,Image **image) + KeySym key_symbol,Image **image,ExceptionInfo *exception) { static char delta[MaxTextExtent] = ""; @@ -7011,7 +7048,8 @@ static CommandType XImageWindowCommand(Display *display, windows->image.window_changes.width=(int) crop_info.width; windows->image.window_changes.height=(int) crop_info.height; (void) XSetWindowBackgroundPixmap(display,windows->image.id,None); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image, + exception); return(NullCommand); } XTranslateImage(display,windows,*image,key_symbol); @@ -7040,14 +7078,11 @@ static CommandType XImageWindowCommand(Display *display, % The format of the XMagickCommand method is: % % Image *XMagickCommand(Display *display,XResourceInfo *resource_info, -% XWindows *windows,const CommandType command,Image **image) +% XWindows *windows,const CommandType command,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % -% o nexus: Method XMagickCommand returns an image when the -% user chooses 'Load Image' from the command menu. Otherwise a null -% image is returned. -% % o display: Specifies a connection to an X server; returned from % XOpenDisplay. % @@ -7057,12 +7092,15 @@ static CommandType XImageWindowCommand(Display *display, % % o command: Specifies a command to perform. % -% o image: the image; XMagickCommand -% may transform the image and return a new image pointer. +% o image: the image; XMagickCommand may transform the image and return a +% new image pointer. +% +% o exception: return any errors or warnings in this structure. % */ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, - XWindows *windows,const CommandType command,Image **image) + XWindows *windows,const CommandType command,Image **image, + ExceptionInfo *exception) { char filename[MaxTextExtent], @@ -7106,7 +7144,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, Process user command. */ XCheckRefreshWindows(display,windows); - XImageCache(display,resource_info,windows,command,image); + XImageCache(display,resource_info,windows,command,image,exception); nexus=NewImageList(); windows->image.window_changes.width=windows->image.ximage->width; windows->image.window_changes.height=windows->image.ximage->height; @@ -7153,8 +7191,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ status=chdir(resource_info->home_directory); if (status == -1) - (void) ThrowMagickException(&(*image)->exception,GetMagickModule(), - FileOpenError,"UnableToOpenFile","%s",resource_info->home_directory); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToOpenFile","%s",resource_info->home_directory); nexus=XOpenImage(display,resource_info,windows,MagickTrue); break; } @@ -7163,7 +7201,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Save image. */ - status=XSaveImage(display,resource_info,windows,*image); + status=XSaveImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to write X image:", @@ -7177,7 +7215,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Print image. */ - status=XPrintImage(display,resource_info,windows,*image); + status=XPrintImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to print X image:", @@ -7232,8 +7270,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) FormatLocaleString(image_info->filename,MaxTextExtent, "%s:%s",format,color); (void) CloneString(&image_info->size,geometry); - nexus=ReadImage(image_info,&(*image)->exception); - CatchException(&(*image)->exception); + nexus=ReadImage(image_info,exception); + CatchException(exception); XClientMessage(display,windows->image.id,windows->im_protocols, windows->im_next_image,CurrentTime); break; @@ -7243,7 +7281,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Visual Image directory. */ - nexus=XVisualDirectoryImage(display,resource_info,windows); + nexus=XVisualDirectoryImage(display,resource_info,windows,exception); break; } case QuitCommand: @@ -7275,7 +7313,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Cut image. */ - (void) XCropImage(display,resource_info,windows,*image,CutMode); + (void) XCropImage(display,resource_info,windows,*image,CutMode,exception); break; } case CopyCommand: @@ -7283,7 +7321,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Copy image. */ - (void) XCropImage(display,resource_info,windows,*image,CopyMode); + (void) XCropImage(display,resource_info,windows,*image,CopyMode, + exception); break; } case PasteCommand: @@ -7291,7 +7330,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Paste image. */ - status=XPasteImage(display,resource_info,windows,*image); + status=XPasteImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to paste X image", @@ -7307,7 +7346,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ windows->image.window_changes.width=windows->image.ximage->width/2; windows->image.window_changes.height=windows->image.ximage->height/2; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case OriginalSizeCommand: @@ -7317,7 +7356,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ windows->image.window_changes.width=(int) (*image)->columns; windows->image.window_changes.height=(int) (*image)->rows; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case DoubleSizeCommand: @@ -7327,7 +7366,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ windows->image.window_changes.width=windows->image.ximage->width << 1; windows->image.window_changes.height=windows->image.ximage->height << 1; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ResizeCommand: @@ -7361,7 +7400,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) ParseMetaGeometry(geometry,&x,&y,&width,&height); windows->image.window_changes.width=(int) width; windows->image.window_changes.height=(int) height; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ApplyCommand: @@ -7390,12 +7429,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, windows->image.x=0; windows->image.y=0; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case RefreshCommand: { - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case RestoreCommand: @@ -7421,7 +7460,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, windows->image.y=0; } XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case CropCommand: @@ -7429,7 +7468,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Crop image. */ - (void) XCropImage(display,resource_info,windows,*image,CropMode); + (void) XCropImage(display,resource_info,windows,*image,CropMode, + exception); break; } case ChopCommand: @@ -7437,7 +7477,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Chop image. */ - status=XChopImage(display,resource_info,windows,image); + status=XChopImage(display,resource_info,windows,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to cut X image", @@ -7456,13 +7496,13 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - flop_image=FlopImage(*image,&(*image)->exception); + flop_image=FlopImage(*image,exception); if (flop_image != (Image *) NULL) { *image=DestroyImage(*image); *image=flop_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.crop_geometry != (char *) NULL) { @@ -7478,7 +7518,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, } if (windows->image.orphan != MagickFalse) break; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case FlipCommand: @@ -7491,13 +7531,13 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - flip_image=FlipImage(*image,&(*image)->exception); + flip_image=FlipImage(*image,exception); if (flip_image != (Image *) NULL) { *image=DestroyImage(*image); *image=flip_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.crop_geometry != (char *) NULL) { @@ -7513,7 +7553,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, } if (windows->image.orphan != MagickFalse) break; - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case RotateRightCommand: @@ -7521,7 +7561,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Rotate image 90 degrees clockwise. */ - status=XRotateImage(display,resource_info,windows,90.0,image); + status=XRotateImage(display,resource_info,windows,90.0,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to rotate X image", @@ -7535,7 +7575,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Rotate image 90 degrees counter-clockwise. */ - status=XRotateImage(display,resource_info,windows,-90.0,image); + status=XRotateImage(display,resource_info,windows,-90.0,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to rotate X image", @@ -7549,7 +7589,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Rotate image. */ - status=XRotateImage(display,resource_info,windows,0.0,image); + status=XRotateImage(display,resource_info,windows,0.0,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to rotate X image", @@ -7579,29 +7619,30 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Shear image. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) QueryColorDatabase(color,&(*image)->background_color, - &(*image)->exception); + exception); flags=ParseGeometry(geometry,&geometry_info); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; shear_image=ShearImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (shear_image != (Image *) NULL) { *image=DestroyImage(*image); *image=shear_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; windows->image.window_changes.width=(int) (*image)->columns; windows->image.window_changes.height=(int) (*image)->rows; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case RollCommand: @@ -7622,26 +7663,27 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Roll image. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) ParsePageGeometry(*image,geometry,&page_geometry, - &(*image)->exception); + exception); roll_image=RollImage(*image,page_geometry.x,page_geometry.y, - &(*image)->exception); + exception); if (roll_image != (Image *) NULL) { *image=DestroyImage(*image); *image=roll_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; windows->image.window_changes.width=(int) (*image)->columns; windows->image.window_changes.height=(int) (*image)->rows; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case TrimCommand: @@ -7661,7 +7703,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Trim image. */ - status=XTrimImage(display,resource_info,windows,*image); + status=XTrimImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to trim X image", @@ -7690,12 +7732,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) CopyMagickString(modulate_factors,"100.0/100.0/",MaxTextExtent); (void) ConcatenateMagickString(modulate_factors,hue_percent, MaxTextExtent); - (void) ModulateImage(*image,modulate_factors,&(*image)->exception); + (void) ModulateImage(*image,modulate_factors,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SaturationCommand: @@ -7718,12 +7760,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) CopyMagickString(modulate_factors,"100.0/",MaxTextExtent); (void) ConcatenateMagickString(modulate_factors,saturation_percent, MaxTextExtent); - (void) ModulateImage(*image,modulate_factors,&(*image)->exception); + (void) ModulateImage(*image,modulate_factors,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case BrightnessCommand: @@ -7745,12 +7787,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); (void) CopyMagickString(modulate_factors,brightness_percent, MaxTextExtent); - (void) ModulateImage(*image,modulate_factors,&(*image)->exception); + (void) ModulateImage(*image,modulate_factors,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case GammaCommand: @@ -7770,12 +7812,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) GammaImage(*image,atof(factor),&(*image)->exception); + (void) GammaImage(*image,atof(factor),exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SpiffCommand: @@ -7785,12 +7827,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) ContrastImage(*image,MagickTrue,&(*image)->exception); + (void) ContrastImage(*image,MagickTrue,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case DullCommand: @@ -7800,12 +7842,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) ContrastImage(*image,MagickFalse,&(*image)->exception); + (void) ContrastImage(*image,MagickFalse,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ContrastStretchCommand: @@ -7839,12 +7881,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, } white_point=(MagickRealType) (*image)->columns*(*image)->rows-white_point; (void) ContrastStretchImage(*image,black_point,white_point, - &(*image)->exception); + exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SigmoidalContrastCommand: @@ -7876,12 +7918,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if ((flags & PercentValue) != 0) geometry_info.sigma=1.0*QuantumRange*geometry_info.sigma/100.0; (void) SigmoidalContrastImage(*image,MagickTrue,geometry_info.rho, - geometry_info.sigma,&(*image)->exception); + geometry_info.sigma,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case NormalizeCommand: @@ -7891,12 +7933,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) NormalizeImage(*image,&(*image)->exception); + (void) NormalizeImage(*image,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case EqualizeCommand: @@ -7906,12 +7948,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) EqualizeImage(*image,&(*image)->exception); + (void) EqualizeImage(*image,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case NegateCommand: @@ -7921,12 +7963,12 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - (void) NegateImage(*image,MagickFalse,&(*image)->exception); + (void) NegateImage(*image,MagickFalse,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case GrayscaleCommand: @@ -7942,7 +7984,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case MapCommand: @@ -7965,18 +8007,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - affinity_image=ReadImage(image_info,&(*image)->exception); + affinity_image=ReadImage(image_info,exception); if (affinity_image != (Image *) NULL) { (void) RemapImage(&quantize_info,*image,affinity_image); affinity_image=DestroyImage(affinity_image); } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case QuantizeCommand: @@ -8006,7 +8048,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case DespeckleCommand: @@ -8019,18 +8061,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - despeckle_image=DespeckleImage(*image,&(*image)->exception); + despeckle_image=DespeckleImage(*image,exception); if (despeckle_image != (Image *) NULL) { *image=DestroyImage(*image); *image=despeckle_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case EmbossCommand: @@ -8057,18 +8099,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; emboss_image=EmbossImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (emboss_image != (Image *) NULL) { *image=DestroyImage(*image); *image=emboss_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ReduceNoiseCommand: @@ -8093,18 +8135,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); noise_image=StatisticImage(*image,NonpeakStatistic,(size_t) - geometry_info.rho,(size_t) geometry_info.rho,&(*image)->exception); + geometry_info.rho,(size_t) geometry_info.rho,exception); if (noise_image != (Image *) NULL) { *image=DestroyImage(*image); *image=noise_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case AddNoiseCommand: @@ -8133,18 +8175,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); noise_image=AddNoiseImage(*image,(NoiseType) ParseCommandOption( - MagickNoiseOptions,MagickFalse,noise_type),&(*image)->exception); + MagickNoiseOptions,MagickFalse,noise_type),exception); if (noise_image != (Image *) NULL) { *image=DestroyImage(*image); *image=noise_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SharpenCommand: @@ -8169,18 +8211,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); sharp_image=SharpenImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (sharp_image != (Image *) NULL) { *image=DestroyImage(*image); *image=sharp_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case BlurCommand: @@ -8205,18 +8247,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); blur_image=BlurImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (blur_image != (Image *) NULL) { *image=DestroyImage(*image); *image=blur_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ThresholdCommand: @@ -8245,7 +8287,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case EdgeDetectCommand: @@ -8269,18 +8311,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); - edge_image=EdgeImage(*image,geometry_info.rho,&(*image)->exception); + edge_image=EdgeImage(*image,geometry_info.rho,exception); if (edge_image != (Image *) NULL) { *image=DestroyImage(*image); *image=edge_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SpreadCommand: @@ -8304,18 +8346,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); flags=ParseGeometry(amount,&geometry_info); - spread_image=EdgeImage(*image,geometry_info.rho,&(*image)->exception); + spread_image=EdgeImage(*image,geometry_info.rho,exception); if (spread_image != (Image *) NULL) { *image=DestroyImage(*image); *image=spread_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ShadeCommand: @@ -8345,18 +8387,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; shade_image=ShadeImage(*image,status != 0 ? MagickFalse : MagickTrue, - geometry_info.rho,geometry_info.sigma,&(*image)->exception); + geometry_info.rho,geometry_info.sigma,exception); if (shade_image != (Image *) NULL) { *image=DestroyImage(*image); *image=shade_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case RaiseCommand: @@ -8373,17 +8415,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Raise an image. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) ParsePageGeometry(*image,bevel_width,&page_geometry, - &(*image)->exception); - (void) RaiseImage(*image,&page_geometry,MagickTrue,&(*image)->exception); + exception); + (void) RaiseImage(*image,&page_geometry,MagickTrue,exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SegmentCommand: @@ -8412,7 +8455,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SepiaToneCommand: @@ -8439,18 +8482,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); threshold=SiPrefixToDouble(factor,QuantumRange); - sepia_image=SepiaToneImage(*image,threshold,&(*image)->exception); + sepia_image=SepiaToneImage(*image,threshold,exception); if (sepia_image != (Image *) NULL) { *image=DestroyImage(*image); *image=sepia_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SolarizeCommand: @@ -8479,7 +8522,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case SwirlCommand: @@ -8503,18 +8546,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); flags=ParseGeometry(degrees,&geometry_info); - swirl_image=SwirlImage(*image,geometry_info.rho,&(*image)->exception); + swirl_image=SwirlImage(*image,geometry_info.rho,exception); if (swirl_image != (Image *) NULL) { *image=DestroyImage(*image); *image=swirl_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case ImplodeCommand: @@ -8538,18 +8581,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); flags=ParseGeometry(factor,&geometry_info); - implode_image=ImplodeImage(*image,geometry_info.rho,&(*image)->exception); + implode_image=ImplodeImage(*image,geometry_info.rho,exception); if (implode_image != (Image *) NULL) { *image=DestroyImage(*image); *image=implode_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case VignetteCommand: @@ -8581,18 +8624,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, geometry_info.psi=0.1*(*image)->rows; vignette_image=VignetteImage(*image,geometry_info.rho,geometry_info.sigma, (ssize_t) ceil(geometry_info.xi-0.5),(ssize_t) ceil(geometry_info.psi- - 0.5),&(*image)->exception); + 0.5),exception); if (vignette_image != (Image *) NULL) { *image=DestroyImage(*image); *image=vignette_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case WaveCommand: @@ -8619,18 +8662,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; wave_image=WaveImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (wave_image != (Image *) NULL) { *image=DestroyImage(*image); *image=wave_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case OilPaintCommand: @@ -8655,18 +8698,18 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); paint_image=OilPaintImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (paint_image != (Image *) NULL) { *image=DestroyImage(*image); *image=paint_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case CharcoalDrawCommand: @@ -8687,25 +8730,26 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Charcoal the image. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); flags=ParseGeometry(radius,&geometry_info); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; charcoal_image=CharcoalImage(*image,geometry_info.rho,geometry_info.sigma, - &(*image)->exception); + exception); if (charcoal_image != (Image *) NULL) { *image=DestroyImage(*image); *image=charcoal_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case AnnotateCommand: @@ -8713,7 +8757,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Annotate the image with text. */ - status=XAnnotateEditImage(display,resource_info,windows,*image); + status=XAnnotateEditImage(display,resource_info,windows,*image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to annotate X image", @@ -8727,7 +8771,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Draw image. */ - status=XDrawEditImage(display,resource_info,windows,image); + status=XDrawEditImage(display,resource_info,windows,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to draw on the X image", @@ -8741,7 +8785,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Color edit. */ - status=XColorEditImage(display,resource_info,windows,image); + status=XColorEditImage(display,resource_info,windows,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to pixel edit X image", @@ -8755,7 +8799,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Matte edit. */ - status=XMatteEditImage(display,resource_info,windows,image); + status=XMatteEditImage(display,resource_info,windows,image,exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to matte edit X image", @@ -8769,7 +8813,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Composite image. */ - status=XCompositeImage(display,resource_info,windows,*image); + status=XCompositeImage(display,resource_info,windows,*image, + exception); if (status == MagickFalse) { XNoticeWidget(display,windows,"Unable to composite X image", @@ -8799,27 +8844,28 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Add a border to the image. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) QueryColorDatabase(color,&(*image)->border_color, - &(*image)->exception); + exception); (void) ParsePageGeometry(*image,geometry,&page_geometry, - &(*image)->exception); - border_image=BorderImage(*image,&page_geometry,&(*image)->exception); + exception); + border_image=BorderImage(*image,&page_geometry,exception); if (border_image != (Image *) NULL) { *image=DestroyImage(*image); *image=border_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; windows->image.window_changes.width=(int) (*image)->columns; windows->image.window_changes.height=(int) (*image)->rows; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case AddFrameCommand: @@ -8846,13 +8892,14 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Surround image with an ornamental border. */ - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (void) QueryColorDatabase(color,&(*image)->matte_color, - &(*image)->exception); + exception); (void) ParsePageGeometry(*image,geometry,&page_geometry, - &(*image)->exception); + exception); frame_info.width=page_geometry.width; frame_info.height=page_geometry.height; frame_info.outer_bevel=page_geometry.x; @@ -8861,20 +8908,20 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, frame_info.y=(ssize_t) frame_info.height; frame_info.width=(*image)->columns+2*frame_info.width; frame_info.height=(*image)->rows+2*frame_info.height; - frame_image=FrameImage(*image,&frame_info,&(*image)->exception); + frame_image=FrameImage(*image,&frame_info,exception); if (frame_image != (Image *) NULL) { *image=DestroyImage(*image); *image=frame_image; } - CatchException(&(*image)->exception); + CatchException(exception); XSetCursorState(display,windows,MagickFalse); if (windows->image.orphan != MagickFalse) break; windows->image.window_changes.width=(int) (*image)->columns; windows->image.window_changes.height=(int) (*image)->rows; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); break; } case CommentCommand: @@ -8918,7 +8965,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); status=InvokeDelegate(image_info,*image,"edit",(char *) NULL, - &(*image)->exception); + exception); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to edit image comment", (char *) NULL); @@ -8927,7 +8974,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, char *comment; - comment=FileToString(image_info->filename,~0UL,&(*image)->exception); + comment=FileToString(image_info->filename,~0UL,exception); if (comment != (char *) NULL) { (void) SetImageProperty(*image,"comment",comment); @@ -8948,14 +8995,14 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) AcquireUniqueFilename(filename); (void) FormatLocaleString((*image)->filename,MaxTextExtent,"launch:%s", filename); - status=WriteImage(image_info,*image,&(*image)->exception); + status=WriteImage(image_info,*image,exception); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to launch image editor", (char *) NULL); else { - nexus=ReadImage(resource_info->image_info,&(*image)->exception); - CatchException(&(*image)->exception); + nexus=ReadImage(resource_info->image_info,exception); + CatchException(exception); XClientMessage(display,windows->image.id,windows->im_protocols, windows->im_next_image,CurrentTime); } @@ -8968,7 +9015,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Apply an image processing technique to a region of interest. */ - (void) XROIImage(display,resource_info,windows,image); + (void) XROIImage(display,resource_info,windows,image,exception); break; } case InfoCommand: @@ -9027,15 +9074,15 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) AcquireUniqueFilename(filename); (void) FormatLocaleString((*image)->filename,MaxTextExtent,"preview:%s", filename); - status=WriteImage(image_info,*image,&(*image)->exception); + status=WriteImage(image_info,*image,exception); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - preview_image=ReadImage(image_info,&(*image)->exception); + preview_image=ReadImage(image_info,exception); (void) RelinquishUniqueFileResource(filename); if (preview_image == (Image *) NULL) break; (void) FormatLocaleString(preview_image->filename,MaxTextExtent,"show:%s", filename); - status=WriteImage(image_info,preview_image,&(*image)->exception); + status=WriteImage(image_info,preview_image,exception); preview_image=DestroyImage(preview_image); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to show image preview", @@ -9060,15 +9107,15 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) AcquireUniqueFilename(filename); (void) FormatLocaleString((*image)->filename,MaxTextExtent,"histogram:%s", filename); - status=WriteImage(image_info,*image,&(*image)->exception); + status=WriteImage(image_info,*image,exception); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - histogram_image=ReadImage(image_info,&(*image)->exception); + histogram_image=ReadImage(image_info,exception); (void) RelinquishUniqueFileResource(filename); if (histogram_image == (Image *) NULL) break; (void) FormatLocaleString(histogram_image->filename,MaxTextExtent, "show:%s",filename); - status=WriteImage(image_info,histogram_image,&(*image)->exception); + status=WriteImage(image_info,histogram_image,exception); histogram_image=DestroyImage(histogram_image); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to show histogram", @@ -9099,15 +9146,15 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, (void) AcquireUniqueFilename(filename); (void) FormatLocaleString((*image)->filename,MaxTextExtent,"matte:%s", filename); - status=WriteImage(image_info,*image,&(*image)->exception); + status=WriteImage(image_info,*image,exception); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - matte_image=ReadImage(image_info,&(*image)->exception); + matte_image=ReadImage(image_info,exception); (void) RelinquishUniqueFileResource(filename); if (matte_image == (Image *) NULL) break; (void) FormatLocaleString(matte_image->filename,MaxTextExtent,"show:%s", filename); - status=WriteImage(image_info,matte_image,&(*image)->exception); + status=WriteImage(image_info,matte_image,exception); matte_image=DestroyImage(matte_image); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to show matte", @@ -9121,10 +9168,10 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, /* Background image. */ - status=XBackgroundImage(display,resource_info,windows,image); + status=XBackgroundImage(display,resource_info,windows,image,exception); if (status == MagickFalse) break; - nexus=CloneImage(*image,0,0,MagickTrue,&(*image)->exception); + nexus=CloneImage(*image,0,0,MagickTrue,exception); if (nexus != (Image *) NULL) XClientMessage(display,windows->image.id,windows->im_protocols, windows->im_next_image,CurrentTime); @@ -9155,7 +9202,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, status=XPreferencesWidget(display,resource_info,windows); if (status == MagickFalse) break; - nexus=CloneImage(*image,0,0,MagickTrue,&(*image)->exception); + nexus=CloneImage(*image,0,0,MagickTrue,exception); if (nexus != (Image *) NULL) XClientMessage(display,windows->image.id,windows->im_protocols, windows->im_next_image,CurrentTime); @@ -9207,7 +9254,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); status=InvokeDelegate(image_info,*image,"browse",(char *) NULL, - &(*image)->exception); + exception); if (status == MagickFalse) XNoticeWidget(display,windows,"Unable to browse documentation", (char *) NULL); @@ -9494,7 +9541,7 @@ static void XMagnifyWindowCommand(Display *display,XWindows *windows, % The format of the XMakePanImage method is: % % void XMakePanImage(Display *display,XResourceInfo *resource_info, -% XWindows *windows,Image *image) +% XWindows *windows,Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -9507,9 +9554,11 @@ static void XMagnifyWindowCommand(Display *display,XWindows *windows, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static void XMakePanImage(Display *display,XResourceInfo *resource_info, - XWindows *windows,Image *image) + XWindows *windows,Image *image,ExceptionInfo *exception) { MagickStatusType status; @@ -9522,10 +9571,10 @@ static void XMakePanImage(Display *display,XResourceInfo *resource_info, windows->pan.x=(int) windows->image.x; windows->pan.y=(int) windows->image.y; status=XMakeImage(display,resource_info,&windows->pan,image, - windows->pan.width,windows->pan.height); + windows->pan.width,windows->pan.height,exception); if (status == MagickFalse) - ThrowXWindowFatalException(XServerError,image->exception.reason, - image->exception.description); + ThrowXWindowFatalException(ResourceLimitError, + "MemoryAllocationFailed",image->filename); (void) XSetWindowBackgroundPixmap(display,windows->pan.id, windows->pan.pixmap); (void) XClearWindow(display,windows->pan.id); @@ -9551,7 +9600,8 @@ static void XMakePanImage(Display *display,XResourceInfo *resource_info, % The format of the XMatteEditImage method is: % % MagickBooleanType XMatteEditImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image **image) +% XResourceInfo *resource_info,XWindows *windows,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -9564,9 +9614,12 @@ static void XMakePanImage(Display *display,XResourceInfo *resource_info, % % o image: the image; returned from ReadImage. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XMatteEditImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { static char matte[MaxTextExtent] = "0"; @@ -9824,7 +9877,7 @@ static MagickBooleanType XMatteEditImage(Display *display, case MatteEditUndoCommand: { (void) XMagickCommand(display,resource_info,windows,UndoCommand, - image); + image,exception); break; } case MatteEditHelpCommand: @@ -9863,7 +9916,7 @@ static MagickBooleanType XMatteEditImage(Display *display, x=event.xbutton.x; y=event.xbutton.y; (void) XMagickCommand(display,resource_info,windows, - SaveToUndoBufferCommand,image); + SaveToUndoBufferCommand,image,exception); state|=UpdateConfigurationState; break; } @@ -9880,7 +9933,7 @@ static MagickBooleanType XMatteEditImage(Display *display, x=event.xbutton.x; y=event.xbutton.y; XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); XInfoWidget(display,windows,text); (void) XCheckDefineCursor(display,windows->image.id,cursor); state&=(~UpdateConfigurationState); @@ -9972,9 +10025,6 @@ static MagickBooleanType XMatteEditImage(Display *display, CacheView *image_view; - ExceptionInfo - *exception; - int x, y; @@ -10002,7 +10052,6 @@ static MagickBooleanType XMatteEditImage(Display *display, if ((x_offset >= (int) (*image)->columns) || (y_offset >= (int) (*image)->rows)) continue; - exception=(&(*image)->exception); if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse) return(MagickFalse); (*image)->matte=MagickTrue; @@ -10037,7 +10086,7 @@ static MagickBooleanType XMatteEditImage(Display *display, for (y=0; y < (int) (*image)->rows; y++) { q=GetCacheViewAuthenticPixels(image_view,0,(ssize_t) y, - (*image)->columns,1,&(*image)->exception); + (*image)->columns,1,exception); if (q == (Quantum *) NULL) break; for (x=0; x < (int) (*image)->columns; x++) @@ -10494,7 +10543,8 @@ static void XPanImage(Display *display,XWindows *windows,XEvent *event) % The format of the XPasteImage method is: % % MagickBooleanType XPasteImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -10507,9 +10557,12 @@ static void XPanImage(Display *display,XWindows *windows,XEvent *event) % % o image: the image; returned from ReadImage. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XPasteImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { static const char *PasteMenu[] = @@ -10568,8 +10621,7 @@ static MagickBooleanType XPasteImage(Display *display, */ if (resource_info->copy_image == (Image *) NULL) return(MagickFalse); - paste_image=CloneImage(resource_info->copy_image,0,0,MagickTrue, - &image->exception); + paste_image=CloneImage(resource_info->copy_image,0,0,MagickTrue,exception); /* Map Command widget. */ @@ -10840,7 +10892,7 @@ static MagickBooleanType XPasteImage(Display *display, Update image colormap. */ XConfigureImageColormap(display,resource_info,windows,image); - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); return(MagickTrue); } @@ -10860,7 +10912,8 @@ static MagickBooleanType XPasteImage(Display *display, % The format of the XPrintImage method is: % % MagickBooleanType XPrintImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -10873,9 +10926,12 @@ static MagickBooleanType XPasteImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XPrintImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { char filename[MaxTextExtent], @@ -10907,7 +10963,7 @@ static MagickBooleanType XPrintImage(Display *display, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - print_image=CloneImage(image,0,0,MagickTrue,&image->exception); + print_image=CloneImage(image,0,0,MagickTrue,exception); if (print_image == (Image *) NULL) return(MagickFalse); (void) FormatLocaleString(geometry,MaxTextExtent,"%dx%d!", @@ -10919,7 +10975,7 @@ static MagickBooleanType XPrintImage(Display *display, (void) AcquireUniqueFilename(filename); (void) FormatLocaleString(print_image->filename,MaxTextExtent,"print:%s", filename); - status=WriteImage(image_info,print_image,&image->exception); + status=WriteImage(image_info,print_image,exception); (void) RelinquishUniqueFileResource(filename); print_image=DestroyImage(print_image); image_info=DestroyImageInfo(image_info); @@ -10943,7 +10999,8 @@ static MagickBooleanType XPrintImage(Display *display, % The format of the XROIImage method is: % % MagickBooleanType XROIImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image **image) +% XResourceInfo *resource_info,XWindows *windows,Image **image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -10956,9 +11013,12 @@ static MagickBooleanType XPrintImage(Display *display, % % o image: the image; returned from ReadImage. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XROIImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image **image) + XResourceInfo *resource_info,XWindows *windows,Image **image, + ExceptionInfo *exception) { #define ApplyMenus 7 @@ -11513,7 +11573,7 @@ static MagickBooleanType XROIImage(Display *display, case RedoCommand: { (void) XMagickCommand(display,resource_info,windows,command_type, - image); + image,exception); break; } default: @@ -11541,7 +11601,7 @@ static MagickBooleanType XROIImage(Display *display, crop_info.y=(ssize_t) (scale_factor*crop_info.y+0.5); crop_info.height=(unsigned int) (scale_factor*crop_info.height+0.5); - roi_image=CropImage(*image,&crop_info,&(*image)->exception); + roi_image=CropImage(*image,&crop_info,exception); (void) SetImageProgressMonitor(*image,progress_monitor, (*image)->client_data); if (roi_image == (Image *) NULL) @@ -11551,11 +11611,11 @@ static MagickBooleanType XROIImage(Display *display, */ windows->image.orphan=MagickTrue; (void) XMagickCommand(display,resource_info,windows,command_type, - &roi_image); + &roi_image,exception); progress_monitor=SetImageProgressMonitor(*image, (MagickProgressMonitor) NULL,(*image)->client_data); (void) XMagickCommand(display,resource_info,windows, - SaveToUndoBufferCommand,image); + SaveToUndoBufferCommand,image,exception); windows->image.orphan=MagickFalse; (void) CompositeImage(*image,CopyCompositeOp,roi_image, crop_info.x,crop_info.y); @@ -11568,7 +11628,7 @@ static MagickBooleanType XROIImage(Display *display, if (command_type != InfoCommand) { XConfigureImageColormap(display,resource_info,windows,*image); - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); } XCheckRefreshWindows(display,windows); XInfoWidget(display,windows,text); @@ -11784,7 +11844,7 @@ static MagickBooleanType XROIImage(Display *display, default: { command_type=XImageWindowCommand(display,resource_info,windows, - event.xkey.state,key_symbol,image); + event.xkey.state,key_symbol,image,exception); if (command_type != NullCommand) state|=UpdateRegionState; break; @@ -11887,7 +11947,7 @@ static MagickBooleanType XROIImage(Display *display, % % MagickBooleanType XRotateImage(Display *display, % XResourceInfo *resource_info,XWindows *windows,double degrees, -% Image **image) +% Image **image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -11902,9 +11962,12 @@ static MagickBooleanType XROIImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XRotateImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,double degrees,Image **image) + XResourceInfo *resource_info,XWindows *windows,double degrees,Image **image, + ExceptionInfo *exception) { static const char *RotateMenu[] = @@ -12287,7 +12350,8 @@ static MagickBooleanType XRotateImage(Display *display, for (rotations=0; normalized_degrees > 45.0; rotations++) normalized_degrees-=90.0; if (normalized_degrees != 0.0) - (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image); + (void) XMagickCommand(display,resource_info,windows,ApplyCommand,image, + exception); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); (*image)->background_color.red=ScaleShortToQuantum( @@ -12296,7 +12360,7 @@ static MagickBooleanType XRotateImage(Display *display, windows->pixel_info->pen_colors[pen_id].green); (*image)->background_color.blue=ScaleShortToQuantum( windows->pixel_info->pen_colors[pen_id].blue); - rotate_image=RotateImage(*image,degrees,&(*image)->exception); + rotate_image=RotateImage(*image,degrees,exception); XSetCursorState(display,windows,MagickFalse); if (rotate_image == (Image *) NULL) return(MagickFalse); @@ -12375,7 +12439,7 @@ static MagickBooleanType XRotateImage(Display *display, /* Update image configuration. */ - (void) XConfigureImage(display,resource_info,windows,*image); + (void) XConfigureImage(display,resource_info,windows,*image,exception); return(MagickTrue); } @@ -12395,7 +12459,8 @@ static MagickBooleanType XRotateImage(Display *display, % The format of the XSaveImage method is: % % MagickBooleanType XSaveImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -12408,9 +12473,12 @@ static MagickBooleanType XRotateImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XSaveImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { char filename[MaxTextExtent], @@ -12443,7 +12511,7 @@ static MagickBooleanType XSaveImage(Display *display, GetPathComponent(image->filename,TailPath,filename); status=chdir(path); if (status == -1) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), FileOpenError,"UnableToOpenFile","%s",path); } XFileBrowserWidget(display,windows,"Save",filename); @@ -12463,7 +12531,7 @@ static MagickBooleanType XSaveImage(Display *display, } image_info=CloneImageInfo(resource_info->image_info); (void) CopyMagickString(image_info->filename,filename,MaxTextExtent); - (void) SetImageInfo(image_info,1,&image->exception); + (void) SetImageInfo(image_info,1,exception); if ((LocaleCompare(image_info->magick,"JPEG") == 0) || (LocaleCompare(image_info->magick,"JPG") == 0)) { @@ -12511,7 +12579,7 @@ static MagickBooleanType XSaveImage(Display *display, */ XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); - save_image=CloneImage(image,0,0,MagickTrue,&image->exception); + save_image=CloneImage(image,0,0,MagickTrue,exception); if (save_image == (Image *) NULL) return(MagickFalse); (void) FormatLocaleString(geometry,MaxTextExtent,"%dx%d!", @@ -12521,7 +12589,7 @@ static MagickBooleanType XSaveImage(Display *display, Write image. */ (void) CopyMagickString(save_image->filename,filename,MaxTextExtent); - status=WriteImage(image_info,save_image,&image->exception); + status=WriteImage(image_info,save_image,exception); if (status != MagickFalse) image->taint=MagickFalse; save_image=DestroyImage(save_image); @@ -12905,7 +12973,7 @@ static void XSetCropGeometry(Display *display,XWindows *windows, % The format of the XTileImage method is: % % Image *XTileImage(Display *display,XResourceInfo *resource_info, -% XWindows *windows,Image *image,XEvent *event) +% XWindows *windows,Image *image,XEvent *event,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -12924,9 +12992,11 @@ static void XSetCropGeometry(Display *display,XWindows *windows, % o event: Specifies a pointer to a XEvent structure. If it is NULL, % the entire image is refreshed. % +% o exception: return any errors or warnings in this structure. +% */ static Image *XTileImage(Display *display,XResourceInfo *resource_info, - XWindows *windows,Image *image,XEvent *event) + XWindows *windows,Image *image,XEvent *event,ExceptionInfo *exception) { static const char *VerbMenu[] = @@ -13056,8 +13126,8 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info, MaxTextExtent); (void) CopyMagickString(resource_info->image_info->filename,filename, MaxTextExtent); - tile_image=ReadImage(resource_info->image_info,&image->exception); - CatchException(&image->exception); + tile_image=ReadImage(resource_info->image_info,exception); + CatchException(exception); (void) XWithdrawWindow(display,windows->info.id,windows->info.screen); break; } @@ -13102,9 +13172,6 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info, } case TileUpdateCommand: { - ExceptionInfo - *exception; - int x_offset, y_offset; @@ -13142,7 +13209,6 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info, */ x_offset=(int) (width*(tile % (((int) image->columns-x)/width))+x); y_offset=(int) (height*(tile/(((int) image->columns-x)/width))+y); - exception=(&image->exception); image_view=AcquireCacheView(image); (void) GetOneCacheViewVirtualPixel(image_view,0,0,&pixel,exception); for (i=0; i < (int) height; i++) @@ -13165,7 +13231,7 @@ static Image *XTileImage(Display *display,XResourceInfo *resource_info, windows->image.window_changes.width=(int) image->columns; windows->image.window_changes.height=(int) image->rows; XConfigureImageColormap(display,resource_info,windows,image); - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); break; } default: @@ -13311,7 +13377,8 @@ static void XTranslateImage(Display *display,XWindows *windows, % The format of the XTrimImage method is: % % MagickBooleanType XTrimImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows,Image *image) +% XResourceInfo *resource_info,XWindows *windows,Image *image, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -13324,9 +13391,12 @@ static void XTranslateImage(Display *display,XWindows *windows, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType XTrimImage(Display *display, - XResourceInfo *resource_info,XWindows *windows,Image *image) + XResourceInfo *resource_info,XWindows *windows,Image *image, + ExceptionInfo *exception) { RectangleInfo trim_info; @@ -13424,7 +13494,7 @@ static MagickBooleanType XTrimImage(Display *display, XSetCropGeometry(display,windows,&trim_info,image); windows->image.window_changes.width=(int) trim_info.width; windows->image.window_changes.height=(int) trim_info.height; - (void) XConfigureImage(display,resource_info,windows,image); + (void) XConfigureImage(display,resource_info,windows,image,exception); } XSetCursorState(display,windows,MagickFalse); return(MagickTrue); @@ -13446,14 +13516,11 @@ static MagickBooleanType XTrimImage(Display *display, % The format of the XVisualDirectoryImage method is: % % Image *XVisualDirectoryImage(Display *display, -% XResourceInfo *resource_info,XWindows *windows) +% XResourceInfo *resource_info,XWindows *windows, +% ExceptionInfo *exception) % % A description of each parameter follows: % -% o nexus: Method XVisualDirectoryImage returns a visual image -% directory if it can be created successfully. Otherwise a null image -% is returned. -% % o display: Specifies a connection to an X server; returned from % XOpenDisplay. % @@ -13461,9 +13528,11 @@ static MagickBooleanType XTrimImage(Display *display, % % o windows: Specifies a pointer to a XWindows structure. % +% o exception: return any errors or warnings in this structure. +% */ static Image *XVisualDirectoryImage(Display *display, - XResourceInfo *resource_info,XWindows *windows) + XResourceInfo *resource_info,XWindows *windows,ExceptionInfo *exception) { #define TileImageTag "Scale/Image" #define XClientName "montage" @@ -13471,9 +13540,6 @@ static Image *XVisualDirectoryImage(Display *display, char **filelist; - ExceptionInfo - *exception; - Image *images, *montage_image, @@ -13555,7 +13621,6 @@ static Image *XVisualDirectoryImage(Display *display, (void) SetImageInfoProgressMonitor(read_info,(MagickProgressMonitor) NULL, (void *) NULL); images=NewImageList(); - exception=AcquireExceptionInfo(); XSetCursorState(display,windows,MagickTrue); XCheckRefreshWindows(display,windows); for (i=0; i < (int) number_files; i++) @@ -13582,7 +13647,7 @@ static Image *XVisualDirectoryImage(Display *display, if (backdrop) { (void) XDisplayBackgroundImage(display,&background_resources, - next_image); + next_image,exception); XSetCursorState(display,windows,MagickTrue); } AppendImageToList(&images,next_image); @@ -13598,7 +13663,6 @@ static Image *XVisualDirectoryImage(Display *display, } } } - exception=DestroyExceptionInfo(exception); filelist=(char **) RelinquishMagickMemory(filelist); if (images == (Image *) NULL) { @@ -13616,7 +13680,7 @@ static Image *XVisualDirectoryImage(Display *display, (void) CloneString(&montage_info->font,resource_info->font); (void) CopyMagickString(montage_info->filename,filename,MaxTextExtent); montage_image=MontageImageList(read_info,montage_info,GetFirstImageInList( - images),&images->exception); + images),exception); images=DestroyImageList(images); montage_info=DestroyMontageInfo(montage_info); read_info=DestroyImageInfo(read_info); @@ -13644,7 +13708,7 @@ static Image *XVisualDirectoryImage(Display *display, % The format of the XDisplayBackgroundImage method is: % % MagickBooleanType XDisplayBackgroundImage(Display *display, -% XResourceInfo *resource_info,Image *image) +% XResourceInfo *resource_info,Image *image,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -13655,9 +13719,11 @@ static Image *XVisualDirectoryImage(Display *display, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType XDisplayBackgroundImage(Display *display, - XResourceInfo *resource_info,Image *image) + XResourceInfo *resource_info,Image *image,ExceptionInfo *exception) { char geometry[MaxTextExtent], @@ -13811,7 +13877,7 @@ MagickExport MagickBooleanType XDisplayBackgroundImage(Display *display, window_info.x=(int) geometry_info.x; window_info.y=(int) geometry_info.y; status=XMakeImage(display,&resources,&window_info,image,window_info.width, - window_info.height); + window_info.height,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", image->filename); @@ -13921,7 +13987,8 @@ MagickExport MagickBooleanType XDisplayBackgroundImage(Display *display, % The format of the XDisplayImage method is: % % Image *XDisplayImage(Display *display,XResourceInfo *resource_info, -% char **argv,int argc,Image **image,size_t *state) +% char **argv,int argc,Image **image,size_t *state, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -13940,9 +14007,11 @@ MagickExport MagickBooleanType XDisplayBackgroundImage(Display *display, % % o image: Specifies an address to an address of an Image structure; % +% o exception: return any errors or warnings in this structure. +% */ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, - char **argv,int argc,Image **image,size_t *state) + char **argv,int argc,Image **image,size_t *state,ExceptionInfo *exception) { #define MagnifySize 256 /* must be a power of 2 */ #define MagickMenus 10 @@ -14406,8 +14475,8 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, status=chdir(working_directory); if (status == -1) - (void) ThrowMagickException(&(*image)->exception,GetMagickModule(), - FileOpenError,"UnableToOpenFile","%s",working_directory); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToOpenFile","%s",working_directory); warning_handler=resource_info->display_warnings ? SetErrorHandler(XWarning) : SetErrorHandler((ErrorHandler) NULL); warning_handler=resource_info->display_warnings ? @@ -14909,12 +14978,12 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", display_image->filename); status=XMakeImage(display,resource_info,&windows->image,display_image, - width,height); + width,height,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", display_image->filename); status=XMakeImage(display,resource_info,&windows->magnify,(Image *) NULL, - windows->magnify.width,windows->magnify.height); + windows->magnify.width,windows->magnify.height,exception); if (status == MagickFalse) ThrowXWindowFatalException(XServerFatalError,"UnableToCreateXImage", display_image->filename); @@ -14924,7 +14993,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, (void) XMapRaised(display,windows->pan.id); windows->image.window_changes.width=(int) display_image->columns; windows->image.window_changes.height=(int) display_image->rows; - (void) XConfigureImage(display,resource_info,windows,display_image); + (void) XConfigureImage(display,resource_info,windows,display_image,exception); (void) XWithdrawWindow(display,windows->info.id,windows->info.screen); (void) XSync(display,MagickFalse); /* @@ -15033,7 +15102,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, } if (command_type != NullCommand) nexus=XMagickCommand(display,resource_info,windows,command_type, - &display_image); + &display_image,exception); continue; } switch (event.type) @@ -15074,7 +15143,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, command); if (entry >= 0) nexus=XMagickCommand(display,resource_info,windows, - VirtualCommands[entry],&display_image); + VirtualCommands[entry],&display_image,exception); break; } /* @@ -15097,7 +15166,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, User pressed the image magnify button. */ (void) XMagickCommand(display,resource_info,windows,ZoomCommand, - &display_image); + &display_image,exception); XMagnifyImage(display,windows,&event); break; } @@ -15112,7 +15181,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, command); if (entry >= 0) nexus=XMagickCommand(display,resource_info,windows, - VirtualCommands[entry],&display_image); + VirtualCommands[entry],&display_image,exception); break; } if (display_image->montage != (char *) NULL) @@ -15121,7 +15190,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, Open or delete a tile from a visual image directory. */ nexus=XTileImage(display,resource_info,windows, - display_image,&event); + display_image,&event,exception); if (nexus != (Image *) NULL) *state|=MontageImageState | NextImageState | ExitState; vid_info.x=(short int) windows->image.x; @@ -15135,7 +15204,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, command); if (entry >= 0) nexus=XMagickCommand(display,resource_info,windows, - ShortCutsCommands[entry],&display_image); + ShortCutsCommands[entry],&display_image,exception); break; } case Button4: @@ -15400,7 +15469,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, windows->image.window_changes.width=windows->image.ximage->width; windows->image.window_changes.height=windows->image.ximage->height; (void) XConfigureImage(display,resource_info,windows, - display_image); + display_image,exception); } break; } @@ -15500,7 +15569,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, windows->image.window_changes.width=event.xconfigure.width; windows->image.window_changes.height=event.xconfigure.height; (void) XConfigureImage(display,resource_info,windows, - display_image); + display_image,exception); } /* Update pan window configuration. @@ -15549,7 +15618,8 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, (windows->magnify.stasis != MagickFalse)) { status=XMakeImage(display,resource_info,&windows->magnify, - display_image,windows->magnify.width,windows->magnify.height); + display_image,windows->magnify.width,windows->magnify.height, + exception); XMakeMagnifyImage(display,windows); } break; @@ -15660,10 +15730,10 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, if (event.xkey.window == windows->image.id) { command_type=XImageWindowCommand(display,resource_info,windows, - event.xkey.state,key_symbol,&display_image); + event.xkey.state,key_symbol,&display_image,exception); if (command_type != NullCommand) nexus=XMagickCommand(display,resource_info,windows,command_type, - &display_image); + &display_image,exception); } if (event.xkey.window == windows->magnify.id) XMagnifyWindowCommand(display,windows,event.xkey.state,key_symbol); @@ -15743,7 +15813,8 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, } if (event.xmap.window == windows->pan.id) { - XMakePanImage(display,resource_info,windows,display_image); + XMakePanImage(display,resource_info,windows,display_image, + exception); windows->pan.mapped=MagickTrue; break; } @@ -15764,7 +15835,8 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, XMakeStandardColormap(display,icon_visual,icon_resources, display_image,icon_map,icon_pixel); (void) XMakeImage(display,icon_resources,&windows->icon, - display_image,windows->icon.width,windows->icon.height); + display_image,windows->icon.width,windows->icon.height, + exception); display_image->taint=taint; (void) XSetWindowBackgroundPixmap(display,windows->icon.id, windows->icon.pixmap); @@ -15926,7 +15998,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, } while (!(*state & ExitState)); if ((*state & ExitState) == 0) (void) XMagickCommand(display,resource_info,windows,FreeBuffersCommand, - &display_image); + &display_image,exception); else if (resource_info->confirm_edit != MagickFalse) { @@ -15946,7 +16018,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, else if (status > 0) (void) XMagickCommand(display,resource_info,windows,SaveCommand, - &display_image); + &display_image,exception); } } if ((windows->visual_info->klass == GrayScale) || @@ -16044,7 +16116,7 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, % The format of the DisplayImages method is: % % MagickBooleanType DisplayImages(const ImageInfo *image_info, -% Image *images) +% Image *images,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -16052,9 +16124,11 @@ MagickExport Image *XDisplayImage(Display *display,XResourceInfo *resource_info, % % o image: the image. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType DisplayImages(const ImageInfo *image_info, - Image *image) + Image *image,ExceptionInfo *exception) { assert(image_info != (const ImageInfo *) NULL); assert(image_info->signature == MagickSignature); @@ -16062,9 +16136,8 @@ MagickExport MagickBooleanType DisplayImages(const ImageInfo *image_info, assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - (void) ThrowMagickException(&image->exception,GetMagickModule(), - MissingDelegateError,"DelegateLibrarySupportNotBuiltIn","`%s' (X11)", - image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError, + "DelegateLibrarySupportNotBuiltIn","`%s' (X11)",image->filename); return(MagickFalse); } diff --git a/MagickCore/display.h b/MagickCore/display.h index 79f180ecd..b4710b351 100644 --- a/MagickCore/display.h +++ b/MagickCore/display.h @@ -23,7 +23,7 @@ extern "C" { #endif extern MagickExport MagickBooleanType - DisplayImages(const ImageInfo *,Image *), + DisplayImages(const ImageInfo *,Image *,ExceptionInfo *), RemoteDisplayCommand(const ImageInfo *,const char *,const char *, ExceptionInfo *); diff --git a/MagickCore/effect.c b/MagickCore/effect.c index 1362e056d..7cd1a346c 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -121,16 +121,13 @@ */ MagickExport MagickBooleanType AdaptiveLevelImage(Image *image, - const char *levels) + const char *levels,ExceptionInfo *exception) { double black_point, gamma, white_point; - ExceptionInfo - *exception; - GeometryInfo geometry_info; @@ -145,7 +142,6 @@ MagickExport MagickBooleanType AdaptiveLevelImage(Image *image, */ if (levels == (char *) NULL) return(MagickFalse); - exception=(&image->exception); flags=ParseGeometry(levels,&geometry_info); black_point=geometry_info.rho; white_point=(double) QuantumRange; @@ -235,14 +231,14 @@ MagickExport Image *AdaptiveBlurImage(const Image *image, blur_image=DestroyImage(blur_image); return((Image *) NULL); } - (void) AdaptiveLevelImage(edge_image,"20%,95%"); + (void) AdaptiveLevelImage(edge_image,"20%,95%",exception); gaussian_image=GaussianBlurImage(edge_image,radius,sigma,exception); if (gaussian_image != (Image *) NULL) { edge_image=DestroyImage(edge_image); edge_image=gaussian_image; } - (void) AdaptiveLevelImage(edge_image,"10%,95%"); + (void) AdaptiveLevelImage(edge_image,"10%,95%",exception); /* Create a set of kernels from maximum (radius,sigma) to minimum. */ @@ -526,14 +522,14 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius, sharp_image=DestroyImage(sharp_image); return((Image *) NULL); } - (void) AdaptiveLevelImage(edge_image,"20%,95%"); + (void) AdaptiveLevelImage(edge_image,"20%,95%",exception); gaussian_image=GaussianBlurImage(edge_image,radius,sigma,exception); if (gaussian_image != (Image *) NULL) { edge_image=DestroyImage(edge_image); edge_image=gaussian_image; } - (void) AdaptiveLevelImage(edge_image,"10%,95%"); + (void) AdaptiveLevelImage(edge_image,"10%,95%",exception); /* Create a set of kernels from maximum (radius,sigma) to minimum. */ diff --git a/MagickCore/xwindow-private.h b/MagickCore/xwindow-private.h index b56a32ecf..43caa6338 100644 --- a/MagickCore/xwindow-private.h +++ b/MagickCore/xwindow-private.h @@ -525,7 +525,7 @@ extern MagickExport MagickBooleanType XMagickProgressMonitor(const char *,const MagickOffsetType, const MagickSizeType,void *), XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int, - unsigned int), + unsigned int,ExceptionInfo *), XQueryColorDatabase(const char *,XColor *), XRemoteCommand(Display *,const char *,const char *); diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c index ee23c3f09..68614a3f9 100644 --- a/MagickCore/xwindow.c +++ b/MagickCore/xwindow.c @@ -5398,7 +5398,7 @@ MagickExport Cursor XMakeCursor(Display *display,Window window, % % MagickBooleanType XMakeImage(Display *display, % const XResourceInfo *resource_info,XWindowInfo *window,Image *image, -% unsigned int width,unsigned int height) +% unsigned int width,unsigned int height,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -5417,10 +5417,12 @@ MagickExport Cursor XMakeCursor(Display *display,Window window, % o height: Specifies the height in pixels of the rectangular area to % display. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType XMakeImage(Display *display, const XResourceInfo *resource_info,XWindowInfo *window,Image *image, - unsigned int width,unsigned int height) + unsigned int width,unsigned int height,ExceptionInfo *exception) { #define CheckOverflowException(length,width,height) \ (((height) != 0) && ((length)/((size_t) height) != ((size_t) width))) diff --git a/MagickWand/animate.c b/MagickWand/animate.c index ce1d18fdf..0038faccf 100644 --- a/MagickWand/animate.c +++ b/MagickWand/animate.c @@ -1442,7 +1442,7 @@ WandExport MagickBooleanType AnimateImageCommand(ImageInfo *image_info, ThrowAnimateException(OptionError,"MissingAnImageFilename",argv[argc-1]) if (resource_info.window_id != (char *) NULL) { - XAnimateBackgroundImage(display,&resource_info,image); + XAnimateBackgroundImage(display,&resource_info,image,exception); status&=MagickTrue; } else @@ -1453,12 +1453,14 @@ WandExport MagickBooleanType AnimateImageCommand(ImageInfo *image_info, /* Animate image to X server. */ - animate_image=XAnimateImages(display,&resource_info,argv,argc,image); + animate_image=XAnimateImages(display,&resource_info,argv,argc,image, + exception); status&=animate_image != (Image *) NULL; while (animate_image != (Image *) NULL) { image=animate_image; - animate_image=XAnimateImages(display,&resource_info,argv,argc,image); + animate_image=XAnimateImages(display,&resource_info,argv,argc,image, + exception); if (animate_image != image) image=DestroyImageList(image); } diff --git a/MagickWand/display.c b/MagickWand/display.c index 7c45a47a6..17d7c60ed 100644 --- a/MagickWand/display.c +++ b/MagickWand/display.c @@ -542,7 +542,7 @@ WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info, Display image to a specified X window. */ status=XDisplayBackgroundImage(display,&resource_info, - display_image); + display_image,exception); if (status != MagickFalse) { state|=RetainColorsState; @@ -561,7 +561,7 @@ WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info, if (resource_info.delay != 1) display_image->delay=resource_info.delay; nexus=XDisplayImage(display,&resource_info,argv,argc, - &display_image,&state); + &display_image,&state,exception); status&=nexus != (Image *) NULL; if (nexus == (Image *) NULL) break; @@ -579,7 +579,7 @@ WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info, break; } next=XDisplayImage(display,&resource_info,argv,argc,&nexus, - &state); + &state,exception); if ((next == (Image *) NULL) && (GetNextImageInList(nexus) != (Image *) NULL)) { diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index 57fb05306..2ac924f2a 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -646,9 +646,7 @@ WandExport MagickBooleanType MagickAnimateImages(MagickWand *wand, if (wand->debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); (void) CloneString(&wand->image_info->server_name,server_name); - status=AnimateImages(wand->image_info,wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=AnimateImages(wand->image_info,wand->images,&wand->images->exception); return(status); } @@ -2313,9 +2311,7 @@ WandExport MagickBooleanType MagickDisplayImage(MagickWand *wand, if (image == (Image *) NULL) return(MagickFalse); (void) CloneString(&wand->image_info->server_name,server_name); - status=DisplayImages(wand->image_info,image); - if (status == MagickFalse) - InheritException(wand->exception,&image->exception); + status=DisplayImages(wand->image_info,image,&image->exception); image=DestroyImage(image); return(status); } @@ -2356,9 +2352,7 @@ WandExport MagickBooleanType MagickDisplayImages(MagickWand *wand, if (wand->debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); (void) CloneString(&wand->image_info->server_name,server_name); - status=DisplayImages(wand->image_info,wand->images); - if (status == MagickFalse) - InheritException(wand->exception,&wand->images->exception); + status=DisplayImages(wand->image_info,wand->images,&wand->images->exception); return(status); } diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index addb658b8..7aea07bdb 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -2422,9 +2422,8 @@ Animate(ref,...) for (i=2; i < items; i+=2) SetAttribute(aTHX_ package_info,image,SvPV(ST(i-1),na),ST(i), exception); - (void) AnimateImages(package_info->image_info,image); + (void) AnimateImages(package_info->image_info,image,exception); (void) CatchImageException(image); - InheritException(exception,&image->exception); PerlException: if (package_info != (struct PackageInfo *) NULL) @@ -3529,9 +3528,8 @@ Display(ref,...) for (i=2; i < items; i+=2) SetAttribute(aTHX_ package_info,image,SvPV(ST(i-1),na),ST(i), exception); - (void) DisplayImages(package_info->image_info,image); + (void) DisplayImages(package_info->image_info,image,exception); (void) CatchImageException(image); - InheritException(exception,&image->exception); PerlException: if (package_info != (struct PackageInfo *) NULL) diff --git a/coders/msl.c b/coders/msl.c index 7d05389cf..3441e3619 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -2336,7 +2336,8 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } } - (void) DisplayImages(msl_info->image_info[n],msl_info->image[n]); + (void) DisplayImages(msl_info->image_info[n],msl_info->image[n], + &msl_info->image[n]->exception); break; } if (LocaleCompare((const char *) tag,"draw") == 0) diff --git a/coders/x.c b/coders/x.c index 92d0e53bd..2e276548e 100644 --- a/coders/x.c +++ b/coders/x.c @@ -207,5 +207,5 @@ ModuleExport void UnregisterXImage(void) static MagickBooleanType WriteXImage(const ImageInfo *image_info,Image *image, ExceptionInfo *exception) { - return(DisplayImages(image_info,image)); + return(DisplayImages(image_info,image,exception)); }