]> granicus.if.org Git - imagemagick/blobdiff - coders/txt.c
(no commit message)
[imagemagick] / coders / txt.c
index 6a012cd925497dcd2e7bd7e7c11fcf79eecc492f..c4eaea0aa6bdf48e4497821d645a7e6bf72b5018 100644 (file)
 %                      Render Text Onto A Canvas Image.                       %
 %                                                                             %
 %                              Software Design                                %
-%                                John Cristy                                  %
+%                                   Cristy                                    %
 %                                 July 1992                                   %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2014 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  %
@@ -570,6 +570,13 @@ ModuleExport size_t RegisterTXTImage(void)
   MagickInfo
     *entry;
 
+  entry=SetMagickInfo("SPARSE-COLOR");
+  entry->encoder=(EncodeImageHandler *) WriteTXTImage;
+  entry->raw=MagickTrue;
+  entry->endian_support=MagickTrue;
+  entry->description=ConstantString("Sparse Color");
+  entry->module=ConstantString("TXT");
+  (void) RegisterMagickInfo(entry);
   entry=SetMagickInfo("TEXT");
   entry->decoder=(DecodeImageHandler *) ReadTXTImage;
   entry->encoder=(EncodeImageHandler *) WriteTXTImage;
@@ -609,6 +616,7 @@ ModuleExport size_t RegisterTXTImage(void)
 */
 ModuleExport void UnregisterTXTImage(void)
 {
+  (void) UnregisterMagickInfo("SPARSE-COLOR");
   (void) UnregisterMagickInfo("TEXT");
   (void) UnregisterMagickInfo("TXT");
 }
@@ -648,11 +656,7 @@ static MagickBooleanType WriteTXTImage(const ImageInfo *image_info,Image *image,
     colorspace[MaxTextExtent],
     tuple[MaxTextExtent];
 
-  const char
-    *option;
-
   MagickBooleanType
-    sparse_color,
     status;
 
   MagickOffsetType
@@ -682,22 +686,28 @@ static MagickBooleanType WriteTXTImage(const ImageInfo *image_info,Image *image,
   status=OpenBlob(image_info,image,WriteBlobMode,exception);
   if (status == MagickFalse)
     return(status);
-  option=GetImageOption(image_info,"txt:sparse-color");
-  sparse_color=IsStringTrue(option);
   scene=0;
   do
   {
+    ComplianceType
+      compliance;
+
     (void) CopyMagickString(colorspace,CommandOptionToMnemonic(
       MagickColorspaceOptions,(ssize_t) image->colorspace),MaxTextExtent);
     LocaleLower(colorspace);
     image->depth=GetImageQuantumDepth(image,MagickTrue);
     if (image->alpha_trait == BlendPixelTrait)
       (void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
-    (void) FormatLocaleString(buffer,MaxTextExtent,
-      "# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
-      image->columns,(double) image->rows,(double)
-      GetQuantumRange(image->depth),colorspace);
-    (void) WriteBlobString(image,buffer);
+    compliance=NoCompliance;
+    if (LocaleCompare(image_info->magick,"SPARSE-COLOR") != 0)
+      {
+        (void) FormatLocaleString(buffer,MaxTextExtent,
+          "# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
+          image->columns,(double) image->rows,(double) ((MagickOffsetType)
+          GetQuantumRange(image->depth)),colorspace);
+        (void) WriteBlobString(image,buffer);
+        compliance=SVGCompliance;
+      }
     GetPixelInfo(image,&pixel);
     for (y=0; y < (ssize_t) image->rows; y++)
     {
@@ -712,19 +722,17 @@ static MagickBooleanType WriteTXTImage(const ImageInfo *image_info,Image *image,
             pixel.green-=(QuantumRange+1)/2.0;
             pixel.blue-=(QuantumRange+1)/2.0;
           }
-        if (sparse_color != MagickFalse)
+        if (LocaleCompare(image_info->magick,"SPARSE-COLOR") == 0)
           {
             /*
               Sparse-color format.
             */
             if (GetPixelAlpha(image,p) == (Quantum) OpaqueAlpha)
               {
-                (void) QueryColorname(image,&pixel,SVGCompliance,tuple,
-                  exception);
-                (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g,%.20g ",
+                GetColorTuple(&pixel,MagickFalse,tuple);
+                (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g,%.20g,",
                   (double) x,(double) y);
                 (void) WriteBlobString(image,buffer);
-                (void) WriteBlobString(image," ");
                 (void) WriteBlobString(image,tuple);
                 (void) WriteBlobString(image," ");
               }
@@ -736,29 +744,27 @@ static MagickBooleanType WriteTXTImage(const ImageInfo *image_info,Image *image,
         (void) WriteBlobString(image,buffer);
         (void) CopyMagickString(tuple,"(",MaxTextExtent);
         if (pixel.colorspace == GRAYColorspace)
-          ConcatenateColorComponent(&pixel,GrayPixelChannel,X11Compliance,
+          ConcatenateColorComponent(&pixel,GrayPixelChannel,compliance,
             tuple);
         else
           {
-            ConcatenateColorComponent(&pixel,RedPixelChannel,X11Compliance,
-              tuple);
+            ConcatenateColorComponent(&pixel,RedPixelChannel,compliance,tuple);
             (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
-            ConcatenateColorComponent(&pixel,GreenPixelChannel,X11Compliance,
+            ConcatenateColorComponent(&pixel,GreenPixelChannel,compliance,
               tuple);
             (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
-            ConcatenateColorComponent(&pixel,BluePixelChannel,X11Compliance,
-              tuple);
+            ConcatenateColorComponent(&pixel,BluePixelChannel,compliance,tuple);
           }
         if (pixel.colorspace == CMYKColorspace)
           {
             (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
-            ConcatenateColorComponent(&pixel,BlackPixelChannel,X11Compliance,
+            ConcatenateColorComponent(&pixel,BlackPixelChannel,compliance,
               tuple);
           }
         if (pixel.alpha_trait == BlendPixelTrait)
           {
             (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
-            ConcatenateColorComponent(&pixel,AlphaPixelChannel,X11Compliance,
+            ConcatenateColorComponent(&pixel,AlphaPixelChannel,compliance,
               tuple);
           }
         (void) ConcatenateMagickString(tuple,")",MaxTextExtent);