From: cristy Date: Fri, 24 Feb 2012 01:04:04 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6126 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=953c4bda9af9c1f804004bf164521079841d5a97;p=imagemagick --- diff --git a/MagickCore/option.c b/MagickCore/option.c index 246bf0abc..fc726882c 100644 --- a/MagickCore/option.c +++ b/MagickCore/option.c @@ -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); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % R e m o v e I m a g e O p t i o n % % % % % diff --git a/MagickCore/option.h b/MagickCore/option.h index e157996ee..81ac3a55e 100644 --- a/MagickCore/option.h +++ b/MagickCore/option.h @@ -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 diff --git a/MagickWand/convert.c b/MagickWand/convert.c index fd6fc267e..c643bbc2c 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -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]); diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 16baf3281..939b941b2 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -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]);