Method: Magick::Image#negate_channel
- Defined in:
- ext/RMagick/rmimage.cpp
#negate_channel(grayscale = false, channel = Magick::AllChannels) ⇒ Magick::Image #negate_channel(grayscale = false, *channels) ⇒ Magick::Image
Negate the colors on a particular channel. The grayscale option means that only grayscale values within the image are negated.
9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 |
# File 'ext/RMagick/rmimage.cpp', line 9790
VALUE
Image_negate_channel(int argc, VALUE *argv, VALUE self)
{
Image *image, *new_image;
ChannelType channels;
MagickBooleanType grayscale = MagickFalse;
#if defined(IMAGEMAGICK_7)
ExceptionInfo *exception;
#endif
image = rm_check_destroyed(self);
channels = extract_channels(&argc, argv);
// There can be at most 1 remaining argument.
if (argc > 1)
{
raise_ChannelType_error(argv[argc-1]);
}
else if (argc == 1)
{
grayscale = (MagickBooleanType)RTEST(argv[0]);
}
new_image = rm_clone_image(image);
#if defined(IMAGEMAGICK_7)
exception = AcquireExceptionInfo();
BEGIN_CHANNEL_MASK(new_image, channels);
GVL_STRUCT_TYPE(NegateImage) args = { new_image, grayscale, exception };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(NegateImage), &args);
END_CHANNEL_MASK(new_image);
rm_check_exception(exception, new_image, DestroyOnError);
DestroyExceptionInfo(exception);
#else
GVL_STRUCT_TYPE(NegateImageChannel) args = { new_image, channels, grayscale };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(NegateImageChannel), &args);
rm_check_image_exception(new_image, DestroyOnError);
#endif
return rm_image_new(new_image);
}
|