]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 24 Feb 2012 01:04:04 +0000 (01:04 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 24 Feb 2012 01:04:04 +0000 (01:04 +0000)
MagickCore/option.c
MagickCore/option.h
MagickWand/convert.c
MagickWand/mogrify.c

index 246bf0abc708776a5ca114464642433811e20379..fc726882cd4c9eefd499380b85ca0d9e8c70c2cd 100644 (file)
@@ -120,7 +120,7 @@ static const OptionInfo
   {
     { "Undefined", UndefinedChannel, UndefinedOptionFlag, MagickTrue },
     { "All", CompositeChannels, UndefinedOptionFlag, MagickFalse },
-    { "Alpha", OpacityChannel, UndefinedOptionFlag, MagickFalse },
+    { "Alpha", AlphaChannel, UndefinedOptionFlag, MagickFalse },
     { "Black", BlackChannel, UndefinedOptionFlag, MagickFalse },
     { "Blue", BlueChannel, UndefinedOptionFlag, MagickFalse },
     { "Cyan", CyanChannel, UndefinedOptionFlag, MagickFalse },
@@ -132,8 +132,8 @@ static const OptionInfo
     { "Luminance", BlueChannel, UndefinedOptionFlag, MagickFalse },
     { "Luminosity", BlueChannel, DeprecateOptionFlag, MagickTrue },
     { "Magenta", MagentaChannel, UndefinedOptionFlag, MagickFalse },
-    { "Matte", OpacityChannel, UndefinedOptionFlag, MagickFalse },
-    { "Opacity", OpacityChannel, UndefinedOptionFlag, MagickFalse },
+    { "Matte", AlphaChannel, UndefinedOptionFlag, MagickFalse },
+    { "Opacity", AlphaChannel, UndefinedOptionFlag, MagickFalse },
     { "Red", RedChannel, UndefinedOptionFlag, MagickFalse },
     { "Saturation", GreenChannel, UndefinedOptionFlag, MagickFalse },
     { "Yellow", YellowChannel, UndefinedOptionFlag, MagickFalse },
@@ -2313,7 +2313,7 @@ MagickExport ssize_t ParseChannelOption(const char *channels)
       case 'A':
       case 'a':
       {
-        channel|=OpacityChannel;
+        channel|=AlphaChannel;
         break;
       }
       case 'B':
@@ -2349,7 +2349,7 @@ MagickExport ssize_t ParseChannelOption(const char *channels)
       case 'o':
       case 'O':
       {
-        channel|=OpacityChannel;
+        channel|=AlphaChannel;
         break;
       }
       case 'R':
@@ -2505,6 +2505,121 @@ MagickExport ssize_t ParseCommandOption(const CommandOption option_table,
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   P a r s e P i x e l C h a n n e l O p t i o n                             %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  ParsePixelChannelOption() parses a string and returns an enumerated pixel
+%  channel type(s).
+%
+%  The format of the ParsePixelChannelOption method is:
+%
+%      ssize_t ParsePixelChannelOption(const char *channels)
+%
+%  A description of each parameter follows:
+%
+%    o options: One or more values separated by commas.
+%
+*/
+MagickExport ssize_t ParsePixelChannelOption(const char *channels)
+{
+  register ssize_t
+    i;
+
+  ssize_t
+    channel;
+
+  channel=ParseCommandOption(MagickPixelChannelOptions,MagickTrue,channels);
+  if (channel >= 0)
+    return(channel);
+  channel=0;
+  for (i=0; i < (ssize_t) strlen(channels); i++)
+  {
+    switch (channels[i])
+    {
+      case 'A':
+      case 'a':
+      {
+        channel|=AlphaPixelChannel;
+        break;
+      }
+      case 'B':
+      case 'b':
+      {
+        channel|=BluePixelChannel;
+        break;
+      }
+      case 'C':
+      case 'c':
+      {
+        channel|=CyanPixelChannel;
+        break;
+      }
+      case 'g':
+      case 'G':
+      {
+        channel|=GreenPixelChannel;
+        break;
+      }
+      case 'K':
+      case 'k':
+      {
+        channel|=BlackPixelChannel;
+        break;
+      }
+      case 'M':
+      case 'm':
+      {
+        channel|=MagentaPixelChannel;
+        break;
+      }
+      case 'o':
+      case 'O':
+      {
+        channel|=AlphaPixelChannel;
+        break;
+      }
+      case 'R':
+      case 'r':
+      {
+        channel|=RedPixelChannel;
+        break;
+      }
+      case 'Y':
+      case 'y':
+      {
+        channel|=YellowPixelChannel;
+        break;
+      }
+      case ',':
+      {
+        ssize_t
+          type;
+
+        /*
+          Gather the additional channel flags and merge with shorthand.
+        */
+        type=ParseCommandOption(MagickPixelChannelOptions,MagickTrue,
+          channels+i+1);
+        if (type < 0)
+          return(type);
+        channel|=type;
+        return(channel);
+      }
+      default:
+        return(-1);
+    }
+  }
+  return(channel);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   R e m o v e I m a g e O p t i o n                                         %
 %                                                                             %
 %                                                                             %
index e157996ee37519ceee373455f39706750fb720ad..81ac3a55e9d927e0ca99f6b6935ef003deba86a0 100644 (file)
@@ -173,6 +173,7 @@ extern MagickExport ssize_t
   GetCommandOptionFlags(const CommandOption,const MagickBooleanType,
     const char *),
   ParseChannelOption(const char *),
+  ParsePixelChannelOption(const char *),
   ParseCommandOption(const CommandOption,const MagickBooleanType,const char *);
 
 extern MagickExport void
index fd6fc267eac283d4f810c5eb32a4a08639a2f525..c643bbc2c50ac3944c7bd1e4c8767c46056214a9 100644 (file)
@@ -900,7 +900,7 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowConvertException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowConvertException(OptionError,"UnrecognizedChannelType",
                 argv[i]);
@@ -916,7 +916,7 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowConvertException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowConvertException(OptionError,"UnrecognizedChannelType",
                 argv[i]);
@@ -932,7 +932,7 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowConvertException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowConvertException(OptionError,"UnrecognizedChannelType",
                 argv[i]);
index 16baf3281f775a14e4bde1a2e32d7dd6da5df659..939b941b25d2f7c17b250cc6a3851ab11984b7c1 100644 (file)
@@ -4058,7 +4058,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowMogrifyException(OptionError,"UnrecognizedChannelType",
                 argv[i]);
@@ -4074,7 +4074,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowMogrifyException(OptionError,"UnrecognizedChannelType",
                 argv[i]);
@@ -4090,7 +4090,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info,
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            channel=ParseChannelOption(argv[i]);
+            channel=ParsePixelChannelOption(argv[i]);
             if (channel < 0)
               ThrowMogrifyException(OptionError,"UnrecognizedChannelType",
                 argv[i]);