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.

Overloads:

  • #negate_channel(grayscale = false, channel = Magick::AllChannels) ⇒ Magick::Image

    Parameters:

    • grayscale (Boolean) (defaults to: false)

      If the grayscale argument is true, only the grayscale values are negated.

    • channel (Magick::ChannelType) (defaults to: Magick::AllChannels)

      a ChannelType arguments.

  • #negate_channel(grayscale = false, *channels) ⇒ Magick::Image

    Parameters:

    • grayscale (Boolean) (defaults to: false)

      If the grayscale argument is true, only the grayscale values are negated.

    • *channels (Magick::ChannelType)

      one or more ChannelType arguments.

Returns:



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);
}