]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/animate.c
(no commit message)
[imagemagick] / MagickCore / animate.c
index c73ec1f35c770d33ef8e8c1f2699d9b7a9a30fdb..269ea0baaefccbca19de1353c8adb73ebde3965f 100644 (file)
@@ -17,7 +17,7 @@
 %                                July 1992                                    %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -46,6 +46,7 @@
 #include "MagickCore/color.h"
 #include "MagickCore/color-private.h"
 #include "MagickCore/colorspace.h"
+#include "MagickCore/colorspace-private.h"
 #include "MagickCore/constitute.h"
 #include "MagickCore/delegate.h"
 #include "MagickCore/exception.h"
@@ -67,6 +68,7 @@
 #include "MagickCore/string-private.h"
 #include "MagickCore/transform.h"
 #include "MagickCore/utility.h"
+#include "MagickCore/utility-private.h"
 #include "MagickCore/version.h"
 #include "MagickCore/widget.h"
 #include "MagickCore/widget-private.h"
@@ -316,10 +318,8 @@ MagickExport MagickBooleanType AnimateImages(const ImageInfo *image_info,
   resource_info.immutable=MagickTrue;
   argv[0]=AcquireString(GetClientName());
   (void) XAnimateImages(display,&resource_info,argv,1,images,exception);
-  SetErrorHandler((ErrorHandler) NULL);
-  SetWarningHandler((WarningHandler) NULL);
-  SetErrorHandler((ErrorHandler) NULL);
-  SetWarningHandler((WarningHandler) NULL);
+  (void) SetErrorHandler((ErrorHandler) NULL);
+  (void) SetWarningHandler((WarningHandler) NULL);
   argv[0]=DestroyString(argv[0]);
   (void) XCloseDisplay(display);
   XDestroyResourceInfo(&resource_info);
@@ -495,7 +495,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
             *title;
 
           title=InterpretImageProperties(resource_info->image_info,*image,
-            resource_info->title);
+            resource_info->title,exception);
           (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
           title=DestroyString(title);
         }
@@ -542,8 +542,14 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
       status=XSaveImage(display,resource_info,windows,*image,exception);
       if (status == MagickFalse)
         {
-          XNoticeWidget(display,windows,"Unable to write X image:",
-            (*image)->filename);
+          char
+            message[MaxTextExtent];
+
+          (void) FormatLocaleString(message,MaxTextExtent,"%s:%s",
+            exception->reason != (char *) NULL ? exception->reason : "",
+            exception->description != (char *) NULL ? exception->description :
+            "");
+          XNoticeWidget(display,windows,"Unable to save file:",message);
           break;
         }
       break;
@@ -574,7 +580,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info,
     }
     case InfoCommand:
     {
-      XDisplayImageInfo(display,resource_info,windows,(Image *) NULL,*image);
+      XDisplayImageInfo(display,resource_info,windows,(Image *) NULL,*image,
+        exception);
       break;
     }
     case HelpCommand:
@@ -881,14 +888,15 @@ MagickExport void XAnimateBackgroundImage(Display *display,
               (next->colors > (size_t) visual_info->colormap_size))
             break;
           for (i=0; i < (ssize_t) images->colors; i++)
-            if (IsPixelPacketEquivalent(next->colormap+i,images->colormap+i) == MagickFalse)
+            if (IsPixelInfoEquivalent(next->colormap+i,images->colormap+i) == MagickFalse)
               break;
           if (i < (ssize_t) images->colors)
             break;
           next=GetNextImageInList(next);
         }
         if (next != (Image *) NULL)
-          (void) RemapImages(resources.quantize_info,images,(Image *) NULL);
+          (void) RemapImages(resources.quantize_info,images,(Image *) NULL,
+            exception);
       }
   /*
     Sort images by increasing scene number.
@@ -914,7 +922,7 @@ MagickExport void XAnimateBackgroundImage(Display *display,
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
       (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType);
+        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
@@ -922,9 +930,9 @@ MagickExport void XAnimateBackgroundImage(Display *display,
   if ((resource_info->map_type != (char *) NULL) ||
       (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor))
     (void) SetImageType(display_image,display_image->matte == MagickFalse ?
-      TrueColorType : TrueColorMatteType);
+      TrueColorType : TrueColorMatteType,exception);
   XMakeStandardColormap(display,visual_info,&resources,display_image,map_info,
-    &pixel);
+    &pixel,exception);
   /*
     Graphic context superclass.
   */
@@ -1502,7 +1510,7 @@ MagickExport Image *XAnimateImages(Display *display,
               (next->colors > (size_t) visual_info->colormap_size))
             break;
           for (i=0; i < (ssize_t) images->colors; i++)
-            if (IsPixelPacketEquivalent(next->colormap+i,images->colormap+i) == MagickFalse)
+            if (IsPixelInfoEquivalent(next->colormap+i,images->colormap+i) == MagickFalse)
               break;
           if (i < (ssize_t) images->colors)
             break;
@@ -1510,7 +1518,7 @@ MagickExport Image *XAnimateImages(Display *display,
         }
         if (next != (Image *) NULL)
           (void) RemapImages(resource_info->quantize_info,images,
-            (Image *) NULL);
+            (Image *) NULL,exception);
       }
   /*
     Sort images by increasing scene number.
@@ -1536,7 +1544,7 @@ MagickExport Image *XAnimateImages(Display *display,
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
       (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType);
+        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
@@ -1554,7 +1562,7 @@ MagickExport Image *XAnimateImages(Display *display,
         display_image->magick);
     }
   XMakeStandardColormap(display,visual_info,resource_info,display_image,
-    map_info,pixel);
+    map_info,pixel,exception);
   /*
     Initialize graphic context.
   */
@@ -1650,7 +1658,7 @@ MagickExport Image *XAnimateImages(Display *display,
         *title;
 
       title=InterpretImageProperties(resource_info->image_info,display_image,
-        resource_info->title);
+        resource_info->title,exception);
       (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
       (void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent);
       title=DestroyString(title);
@@ -1921,7 +1929,9 @@ MagickExport Image *XAnimateImages(Display *display,
     /*
       Create X image.
     */
-    (void) TransformImageColorspace(image_list[scene],RGBColorspace);
+    if (IsRGBColorspace(image_list[scene]->colorspace) == MagickFalse)
+      (void) TransformImageColorspace(image_list[scene],sRGBColorspace,
+        exception);
     windows->image.pixmap=(Pixmap) NULL;
     windows->image.matte_pixmap=(Pixmap) NULL;
     if ((resource_info->map_type != (char *) NULL) ||
@@ -1961,7 +1971,7 @@ MagickExport Image *XAnimateImages(Display *display,
           *title;
 
         title=InterpretImageProperties(resource_info->image_info,
-          image_list[scene],resource_info->title);
+          image_list[scene],resource_info->title,exception);
         (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
         title=DestroyString(title);
       }
@@ -2099,7 +2109,7 @@ MagickExport Image *XAnimateImages(Display *display,
                     *title;
 
                   title=InterpretImageProperties(resource_info->image_info,
-                    image,resource_info->title);
+                    image,resource_info->title,exception);
                   (void) CopyMagickString(windows->image.name,title,
                     MaxTextExtent);
                   title=DestroyString(title);
@@ -2627,7 +2637,7 @@ MagickExport Image *XAnimateImages(Display *display,
               Create an icon image.
             */
             XMakeStandardColormap(display,icon_visual,icon_resources,
-              display_image,icon_map,icon_pixel);
+              display_image,icon_map,icon_pixel,exception);
             (void) XMakeImage(display,icon_resources,&windows->icon,
               display_image,windows->icon.width,windows->icon.height,
               exception);
@@ -2735,7 +2745,7 @@ MagickExport Image *XAnimateImages(Display *display,
           {
             if (map_info->colormap == icon_map->colormap)
               XConfigureImageColormap(display,resource_info,windows,
-                display_image);
+                display_image,exception);
             (void) XFreeStandardColormap(display,icon_visual,icon_map,
               icon_pixel);
             windows->icon.mapped=MagickFalse;