]> granicus.if.org Git - imagemagick/blobdiff - coders/uil.c
(no commit message)
[imagemagick] / coders / uil.c
index 4e48f6e82e43fc0a159f8899f1afc7fe86faad27..8c539f04d93ec769c103f85f5f3be78d392d9dde 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  %
@@ -40,6 +40,7 @@
   Include declarations.
 */
 #include "MagickCore/studio.h"
+#include "MagickCore/attribute.h"
 #include "MagickCore/blob.h"
 #include "MagickCore/blob-private.h"
 #include "MagickCore/cache.h"
@@ -65,7 +66,7 @@
   Forward declarations.
 */
 static MagickBooleanType
-  WriteUILImage(const ImageInfo *,Image *);
+  WriteUILImage(const ImageInfo *,Image *,ExceptionInfo *);
 \f
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -144,7 +145,8 @@ ModuleExport void UnregisterUILImage(void)
 %
 %  The format of the WriteUILImage method is:
 %
-%      MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
+%      MagickBooleanType WriteUILImage(const ImageInfo *image_info,
+%        Image *image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows.
 %
@@ -152,8 +154,11 @@ ModuleExport void UnregisterUILImage(void)
 %
 %    o image:  The image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
-static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
+static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image,
+  ExceptionInfo *exception)
 {
 #define MaxCixels  92
 
@@ -163,9 +168,6 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
     name[MaxTextExtent],
     *symbol;
 
-  ExceptionInfo
-    *exception;
-
   int
     j;
 
@@ -173,12 +175,12 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
     status,
     transparent;
 
-  PixelInfo
-    pixel;
-
   MagickSizeType
     number_pixels;
 
+  PixelInfo
+    pixel;
+
   register const Quantum
     *p;
 
@@ -207,12 +209,13 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  status=OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception);
+  assert(exception != (ExceptionInfo *) NULL);
+  assert(exception->signature == MagickSignature);
+  status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
   if (status == MagickFalse)
     return(status);
-  if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
-  exception=(&image->exception);
+  if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
+    (void) TransformImageColorspace(image,sRGBColorspace,exception);
   transparent=MagickFalse;
   i=0;
   p=(const Quantum *) NULL;
@@ -251,11 +254,11 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
               if (matte_image[i] != 0)
                 transparent=MagickTrue;
               i++;
-              p+=GetPixelComponents(image);
+              p+=GetPixelChannels(image);
             }
           }
         }
-      (void) SetImageType(image,PaletteType);
+      (void) SetImageType(image,PaletteType,exception);
       colors=image->colors;
       if (transparent != MagickFalse)
         {
@@ -266,14 +269,14 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
           for (y=0; y < (ssize_t) image->rows; y++)
           {
             q=GetAuthenticPixels(image,0,y,image->columns,1,exception);
-            if (q == (const Quantum *) NULL)
+            if (q == (Quantum *) NULL)
               break;
             for (x=0; x < (ssize_t) image->columns; x++)
             {
               if (matte_image[i] != 0)
                 SetPixelIndex(image,image->colors,q);
               p++;
-              q+=GetPixelComponents(image);
+              q+=GetPixelChannels(image);
             }
           }
         }
@@ -301,8 +304,8 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
     /*
       Define UIL color.
     */
-    SetPixelInfoPacket(image,image->colormap+i,&pixel);
-    pixel.colorspace=RGBColorspace;
+    pixel=image->colormap[i];
+    pixel.colorspace=sRGBColorspace;
     pixel.depth=8;
     pixel.alpha=(MagickRealType) OpaqueAlpha;
     GetColorTuple(&pixel,MagickTrue,name);
@@ -327,8 +330,8 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
     else
       (void) FormatLocaleString(buffer,MaxTextExtent,
         "    color('%s',%s) = '%s'",name,
-        GetPixelPacketIntensity(image->colormap+i) <
-        ((Quantum) QuantumRange/2) ? "background" : "foreground",symbol);
+        GetPixelInfoIntensity(image->colormap+i) <
+        (QuantumRange/2) ? "background" : "foreground",symbol);
     (void) WriteBlobString(image,buffer);
     (void) FormatLocaleString(buffer,MaxTextExtent,"%s",
       (i == (ssize_t) (colors-1) ? ");\n" : ",\n"));
@@ -343,7 +346,7 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
   (void) WriteBlobString(image,buffer);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
-    p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception);
+    p=GetVirtualPixels(image,0,y,image->columns,1,exception);
     if (p == (const Quantum *) NULL)
       break;
     (void) WriteBlobString(image,"    \"");
@@ -360,7 +363,7 @@ static MagickBooleanType WriteUILImage(const ImageInfo *image_info,Image *image)
       symbol[j]='\0';
       (void) CopyMagickString(buffer,symbol,MaxTextExtent);
       (void) WriteBlobString(image,buffer);
-      p+=GetPixelComponents(image);
+      p+=GetPixelChannels(image);
     }
     (void) FormatLocaleString(buffer,MaxTextExtent,"\"%s\n",
       (y == (ssize_t) (image->rows-1) ? ");" : ","));