Method: Magick::Image#gamma_channel
- Defined in:
- ext/RMagick/rmimage.cpp
#gamma_channel(gamma, channel = Magick::AllChannels) ⇒ Magick::Image #gamma_channel(gamma, *channels) ⇒ Magick::Image
Apply gamma to a channel.
7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 |
# File 'ext/RMagick/rmimage.cpp', line 7537 VALUE Image_gamma_channel(int argc, VALUE *argv, VALUE self) { Image *image, *new_image; ChannelType channels; double gamma; #if defined(IMAGEMAGICK_7) ExceptionInfo *exception; #endif image = rm_check_destroyed(self); channels = extract_channels(&argc, argv); // There must be exactly one remaining argument. if (argc == 0) { rb_raise(rb_eArgError, "missing gamma argument"); } else if (argc > 1) { raise_ChannelType_error(argv[argc-1]); } gamma = NUM2DBL(argv[0]); new_image = rm_clone_image(image); #if defined(IMAGEMAGICK_7) exception = AcquireExceptionInfo(); BEGIN_CHANNEL_MASK(new_image, channels); GVL_STRUCT_TYPE(GammaImage) args = { new_image, gamma, exception }; CALL_FUNC_WITHOUT_GVL(GVL_FUNC(GammaImage), &args); END_CHANNEL_MASK(new_image); rm_check_exception(exception, new_image, DestroyOnError); DestroyExceptionInfo(exception); #else GVL_STRUCT_TYPE(GammaImageChannel) args = { new_image, channels, gamma }; CALL_FUNC_WITHOUT_GVL(GVL_FUNC(GammaImageChannel), &args); rm_check_image_exception(new_image, DestroyOnError); #endif return rm_image_new(new_image); } |