]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 15 Mar 2010 17:50:24 +0000 (17:50 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 15 Mar 2010 17:50:24 +0000 (17:50 +0000)
magick/constitute.c

index 73c17edcf6e3d6c914b5f306218c768364e9cd86..7eea55d20f8400dce2b67f5b99f402f15e8ceb8b 100644 (file)
@@ -529,6 +529,10 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
       delegate_info=GetDelegateInfo(read_info->magick,(char *) NULL,exception);
       if (delegate_info == (const DelegateInfo *) NULL)
         {
+read_info->affirm=0;
+  (void) SetImageInfo(read_info,1,exception);
+  magick_info=GetMagickInfo(read_info->magick,exception);
+printf("%p\n",magick_info);
           if (IsPathAccessible(read_info->filename) != MagickFalse)
             (void) ThrowMagickException(exception,GetMagickModule(),
               MissingDelegateError,"NoDecodeDelegateForThisImageFormat","`%s'",
@@ -1150,9 +1154,28 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info,
             }
           if ((magick_info == (const MagickInfo *) NULL) ||
               (GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL))
-            (void) ThrowMagickException(&image->exception,GetMagickModule(),
-              MissingDelegateError,"NoEncodeDelegateForThisImageFormat","`%s'",
-              image->filename);
+            { 
+              magick_info=GetMagickInfo(image->magick,&image->exception);
+              if ((magick_info == (const MagickInfo *) NULL) ||
+                  (GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL))
+                (void) ThrowMagickException(&image->exception,GetMagickModule(),
+                  MissingDelegateError,"NoEncodeDelegateForThisImageFormat",
+                  "`%s'",image->filename);
+              else
+                {
+                  /*
+                    Call appropriate image writer based on image type.
+                  */
+                  (void) CopyMagickString(image->filename,filename,
+                    MaxTextExtent);
+                  thread_support=GetMagickThreadSupport(magick_info);
+                  if ((thread_support & EncoderThreadSupport) == 0)
+                    LockSemaphoreInfo(constitute_semaphore);
+                  status=GetImageEncoder(magick_info)(write_info,image);
+                  if ((thread_support & EncoderThreadSupport) == 0)
+                    UnlockSemaphoreInfo(constitute_semaphore);
+                }
+            }
           else
             {
               /*