rmagick 5.4.4 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/ImageMagick6/devcontainer.json +1 -1
  3. data/.devcontainer/devcontainer.json +1 -1
  4. data/.github/workflows/ci.yml +41 -31
  5. data/.gitignore +1 -0
  6. data/.rubocop.yml +36 -9
  7. data/.rubocop_todo.yml +369 -187
  8. data/CHANGELOG.md +77 -0
  9. data/Gemfile +14 -0
  10. data/README.md +3 -3
  11. data/Rakefile +12 -1
  12. data/before_install_linux.sh +1 -11
  13. data/before_install_osx.sh +5 -7
  14. data/ext/RMagick/extconf.rb +58 -68
  15. data/ext/RMagick/rmagick.h +7 -12
  16. data/ext/RMagick/rmdraw.cpp +10 -20
  17. data/ext/RMagick/rmfill.cpp +4 -4
  18. data/ext/RMagick/rmilist.cpp +10 -2
  19. data/ext/RMagick/rmimage.cpp +342 -344
  20. data/ext/RMagick/rminfo.cpp +22 -21
  21. data/ext/RMagick/rmkinfo.cpp +5 -18
  22. data/ext/RMagick/rmmain.cpp +42 -91
  23. data/ext/RMagick/rmmontage.cpp +5 -5
  24. data/ext/RMagick/rmpixel.cpp +3 -3
  25. data/ext/RMagick/rmutil.cpp +58 -89
  26. data/lib/rmagick/version.rb +3 -3
  27. data/lib/rmagick.rb +1 -1
  28. data/lib/rmagick_internal.rb +111 -103
  29. data/lib/rvg/container.rb +3 -3
  30. data/lib/rvg/embellishable.rb +7 -3
  31. data/lib/rvg/misc.rb +15 -15
  32. data/lib/rvg/rvg.rb +6 -6
  33. data/lib/rvg/stretchable.rb +2 -2
  34. data/lib/rvg/stylable.rb +2 -2
  35. data/lib/rvg/transformable.rb +1 -1
  36. data/lib/rvg/units.rb +1 -0
  37. data/rmagick.gemspec +2 -15
  38. data/sig/rmagick/_draw_common_methods.rbs +64 -0
  39. data/sig/rmagick/_image_common_methods.rbs +387 -0
  40. data/sig/rmagick/draw.rbs +38 -0
  41. data/sig/rmagick/draw_attribute.rbs +28 -0
  42. data/sig/rmagick/enum.rbs +820 -0
  43. data/sig/rmagick/error.rbs +11 -0
  44. data/sig/rmagick/fill.rbs +21 -0
  45. data/sig/rmagick/geometry.rbs +14 -0
  46. data/sig/rmagick/image.rbs +196 -0
  47. data/sig/rmagick/image_list.rbs +183 -0
  48. data/sig/rmagick/iptc.rbs +101 -0
  49. data/sig/rmagick/kernel_info.rbs +12 -0
  50. data/sig/rmagick/optional_method_arguments.rbs +10 -0
  51. data/sig/rmagick/pixel.rbs +46 -0
  52. data/sig/rmagick/struct.rbs +90 -0
  53. data/sig/rmagick.rbs +43 -0
  54. data/sig/rvg/clippath.rbs +34 -0
  55. data/sig/rvg/container.rbs +78 -0
  56. data/sig/rvg/deep_equal.rbs +48 -0
  57. data/sig/rvg/describable.rbs +30 -0
  58. data/sig/rvg/embellishable.rbs +226 -0
  59. data/sig/rvg/misc.rbs +145 -0
  60. data/sig/rvg/paint.rbs +55 -0
  61. data/sig/rvg/pathdata.rbs +77 -0
  62. data/sig/rvg/rvg.rbs +125 -0
  63. data/sig/rvg/stretchable.rbs +56 -0
  64. data/sig/rvg/stylable.rbs +66 -0
  65. data/sig/rvg/text.rbs +118 -0
  66. data/sig/rvg/transformable.rbs +59 -0
  67. data/sig/rvg/units.rbs +33 -0
  68. metadata +38 -134
@@ -288,17 +288,11 @@ DEFINE_GVL_STUB2(WriteImage, const ImageInfo *, Image *);
288
288
  DEFINE_GVL_STUB4(GetImageChannelEntropy, const Image *, const ChannelType, double *, ExceptionInfo *);
289
289
  #endif
290
290
 
291
- #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
292
291
  DEFINE_GVL_STUB3(RotationalBlurImage, const Image *, const double, ExceptionInfo *);
293
- #else
294
- DEFINE_GVL_STUB3(RadialBlurImage, const Image *, const double, ExceptionInfo *);
295
- #endif
296
292
 
297
293
  #if defined(IMAGEMAGICK_7)
298
- #elif defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
299
- DEFINE_GVL_STUB4(RotationalBlurImageChannel, const Image *, const ChannelType, const double, ExceptionInfo *);
300
294
  #else
301
- DEFINE_GVL_STUB4(RadialBlurImageChannel, const Image *, const ChannelType, const double, ExceptionInfo *);
295
+ DEFINE_GVL_STUB4(RotationalBlurImageChannel, const Image *, const ChannelType, const double, ExceptionInfo *);
302
296
  #endif
303
297
 
304
298
  /**
@@ -449,8 +443,8 @@ adaptive_channel_method(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
449
443
  * than sigma. Use a radius of 0 and adaptive_blur selects a suitable radius for you.
450
444
  *
451
445
  * @overload adaptive_blur(radius = 0.0, sigma = 1.0)
452
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
453
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
446
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
447
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
454
448
  * @return [Magick::Image] a new image
455
449
  */
456
450
  VALUE
@@ -464,13 +458,13 @@ Image_adaptive_blur(int argc, VALUE *argv, VALUE self)
464
458
  * The same as {Magick::Image#adaptive_blur} except only the specified channels are blurred.
465
459
  *
466
460
  * @overload adaptive_blur_channel(radius = 0.0, sigma = 1.0, channel = Magick::AllChannels)
467
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
468
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
461
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
462
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
469
463
  * @param channel [Magick::ChannelType] a ChannelType arguments.
470
464
  *
471
465
  * @overload adaptive_blur_channel(radius = 0.0, sigma = 1.0, *channels)
472
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
473
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
466
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
467
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
474
468
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
475
469
  *
476
470
  * @return [Magick::Image] a new image
@@ -490,7 +484,7 @@ Image_adaptive_blur_channel(int argc, VALUE *argv, VALUE self)
490
484
  * Resizes the image with data dependent triangulation.
491
485
  *
492
486
  * @overload adaptive_resize(scale_val)
493
- * @param scale_val [Float] You can use this argument instead of specifying the desired width and
487
+ * @param scale_val [Numeric] You can use this argument instead of specifying the desired width and
494
488
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
495
489
  * the receiver.
496
490
  *
@@ -557,8 +551,8 @@ Image_adaptive_resize(int argc, VALUE *argv, VALUE self)
557
551
  * Use a radius of 0 and adaptive_sharpen selects a suitable radius for you.
558
552
  *
559
553
  * @overload adaptive_sharpen(radius = 0.0, sigma = 1.0)
560
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
561
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
554
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
555
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
562
556
  * @return [Magick::Image] a new image
563
557
  */
564
558
  VALUE
@@ -572,13 +566,13 @@ Image_adaptive_sharpen(int argc, VALUE *argv, VALUE self)
572
566
  * The same as {Magick::Image#adaptive_sharpen} except only the specified channels are sharpened.
573
567
  *
574
568
  * @overload adaptive_sharpen_channel(radius = 0.0, sigma = 1.0, channel = Magick::AllChannels)
575
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
576
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
569
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
570
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
577
571
  * @param channel [Magick::ChannelType] a ChannelType arguments.
578
572
  *
579
573
  * @overload adaptive_sharpen_channel(radius = 0.0, sigma = 1.0, *channels)
580
- * @param radius [Float] The radius of the Gaussian in pixels, not counting the center pixel.
581
- * @param sigma [Float] The standard deviation of the Laplacian, in pixels.
574
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
575
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
582
576
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
583
577
  *
584
578
  * @return [Magick::Image] a new image
@@ -646,7 +640,7 @@ Image_adaptive_threshold(int argc, VALUE *argv, VALUE self)
646
640
  * The areas of the destination image that are masked by white pixels will be modified by the
647
641
  * {Magick::Image#composite} method, while areas masked by black pixels are unchanged.
648
642
  *
649
- * @param mask [Magick::Image] the composite mask
643
+ * @param mask [Magick::Image, Magick::ImageList] the composite mask
650
644
  * @see Image#mask
651
645
  * @see Image#delete_compose_mask
652
646
  */
@@ -660,7 +654,7 @@ Image_add_compose_mask(VALUE self, VALUE mask)
660
654
  #endif
661
655
 
662
656
  image = rm_check_frozen(self);
663
- mask_image = rm_check_destroyed(mask);
657
+ mask_image = rm_check_destroyed(rm_cur_image(mask));
664
658
  if (image->columns != mask_image->columns || image->rows != mask_image->rows)
665
659
  {
666
660
  rb_raise(rb_eArgError, "mask must be the same size as image");
@@ -972,12 +966,12 @@ Image_affine_transform(VALUE self, VALUE affine)
972
966
  * "Comment", "Signature", and in some cases "EXIF".
973
967
  *
974
968
  * @param key_arg [String, Symbol] the key to get
975
- * @return [String] property value or nil if key doesn't exist
969
+ * @return [String, nil] property value or nil if key doesn't exist
976
970
  * @see Image#[]=
977
971
  * @see Image#properties
978
972
  */
979
973
  VALUE
980
- Image_aref(VALUE self, VALUE key_arg)
974
+ Image_aref(VALUE self, VALUE key_arg)
981
975
  {
982
976
  Image *image;
983
977
  const char *key;
@@ -1352,7 +1346,7 @@ Image_background_color_eq(VALUE self, VALUE color)
1352
1346
  /**
1353
1347
  * Return the number of rows (before transformations).
1354
1348
  *
1355
- * @return [Numeric] the number of rows
1349
+ * @return [Integer] the number of rows
1356
1350
  */
1357
1351
  VALUE
1358
1352
  Image_base_columns(VALUE self)
@@ -1383,7 +1377,7 @@ Image_base_filename(VALUE self)
1383
1377
  /**
1384
1378
  * Return the number of rows (before transformations).
1385
1379
  *
1386
- * @return [Numeric] the number of rows
1380
+ * @return [Integer] the number of rows
1387
1381
  */
1388
1382
  VALUE
1389
1383
  Image_base_rows(VALUE self)
@@ -1429,8 +1423,8 @@ Image_bias(VALUE self)
1429
1423
  /**
1430
1424
  * Set image bias (used when convolving an image).
1431
1425
  *
1432
- * @param pct [Float, String] Either a number between 0.0 and 1.0 or a string in the form "NN%"
1433
- * @return [Float, String] the given value
1426
+ * @param pct [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form "NN%"
1427
+ * @return [Numeric, String] the given value
1434
1428
  */
1435
1429
  VALUE
1436
1430
  Image_bias_eq(VALUE self, VALUE pct)
@@ -1460,10 +1454,11 @@ Image_bias_eq(VALUE self, VALUE pct)
1460
1454
  * is a high-contrast image.
1461
1455
  *
1462
1456
  * @overload bilevel_channel(threshold, channel = Magick::AllChannels)
1463
- * @param threshold [Float] The threshold value, a number between 0 and QuantumRange.
1457
+ * @param threshold [Numeric] The threshold value, a number between 0 and QuantumRange.
1458
+ * @param channel [Magick::ChannelType] a ChannelType arguments.
1464
1459
  *
1465
1460
  * @overload bilevel_channel(threshold, *channels)
1466
- * @param threshold [Float] The threshold value, a number between 0 and QuantumRange.
1461
+ * @param threshold [Numeric] The threshold value, a number between 0 and QuantumRange.
1467
1462
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
1468
1463
  *
1469
1464
  * @return [Magick::Image] a new image
@@ -1923,10 +1918,10 @@ special_composite(Image *image, Image *overlay, double image_pct, double overlay
1923
1918
  * @overload blend(overlay, src_percent, dst_percent, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
1924
1919
  * @param overlay [Magick::Image, Magick::ImageList] The source image for the composite operation.
1925
1920
  * Either an imagelist or an image. If an imagelist, uses the current image.
1926
- * @param src_percent [Float, String] Either a non-negative number a string in the form "NN%".
1921
+ * @param src_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
1927
1922
  * If src_percentage is a number it is interpreted as a percentage.
1928
1923
  * Both 0.25 and "25%" mean 25%. This argument is required.
1929
- * @param dst_percent [Float, String] Either a non-negative number a string in the form "NN%".
1924
+ * @param dst_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
1930
1925
  * If src_percentage is a number it is interpreted as a percentage.
1931
1926
  * Both 0.25 and "25%" mean 25%. This argument may omitted if no other arguments follow it.
1932
1927
  * In this case the default is 100%-src_percentage.
@@ -1988,7 +1983,7 @@ Image_blend(int argc, VALUE *argv, VALUE self)
1988
1983
  * Simulate a scene at nighttime in the moonlight.
1989
1984
  *
1990
1985
  * @overload blue_shift(factor = 1.5)
1991
- * @param factor [Float] Larger values increase the effect.
1986
+ * @param factor [Numeric] Larger values increase the effect.
1992
1987
  * @return [Magick::Image] a new image
1993
1988
  */
1994
1989
  VALUE
@@ -2027,13 +2022,13 @@ Image_blue_shift(int argc, VALUE *argv, VALUE self)
2027
2022
  * Convolves the image with a Gaussian operator of the given radius and standard deviation (sigma).
2028
2023
  *
2029
2024
  * @overload blur_channel(radius = 0.0, sigma = 1.0, channel = Magick::AllChannels)
2030
- * @param radius [Float] the radius value
2031
- * @param sigma [Float] the sigma value
2025
+ * @param radius [Numeric] the radius value
2026
+ * @param sigma [Numeric] the sigma value
2032
2027
  * @param channel [Magick::ChannelType] a ChannelType arguments.
2033
2028
  *
2034
2029
  * @overload blur_channel(radius = 0.0, sigma = 1.0, *channels)
2035
- * @param radius [Float] the radius value
2036
- * @param sigma [Float] the sigma value
2030
+ * @param radius [Numeric] the radius value
2031
+ * @param sigma [Numeric] the sigma value
2037
2032
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2038
2033
  *
2039
2034
  * @return [Magick::Image] a new image
@@ -2085,8 +2080,8 @@ Image_blur_channel(int argc, VALUE *argv, VALUE self)
2085
2080
  * Blur the image.
2086
2081
  *
2087
2082
  * @overload blur_image(radius = 0.0, sigma = 1.0)
2088
- * @param radius [Float] the radius value
2089
- * @param sigma [Float] the sigma value
2083
+ * @param radius [Numeric] the radius value
2084
+ * @param sigma [Numeric] the sigma value
2090
2085
  * @return [Magick::Image] a new image
2091
2086
  */
2092
2087
  VALUE
@@ -2264,7 +2259,8 @@ Image_bounding_box(VALUE self)
2264
2259
  * importantly, you can capture menus or other popups that are independent windows but appear
2265
2260
  * over the specified window.
2266
2261
  * @param borders [Boolean] If true, include the border in the image.
2267
- * @yield [Magick::Image::Info]
2262
+ * @yield [info]
2263
+ * @yieldparam info [Magick::Image::Info]
2268
2264
  *
2269
2265
  * @return [Magick::Image] a new image
2270
2266
  * @example
@@ -2325,6 +2321,7 @@ Image_capture(int argc, VALUE *argv, VALUE self ATTRIBUTE_UNUSED)
2325
2321
  rm_ensure_result(new_image);
2326
2322
 
2327
2323
  rm_set_user_artifact(new_image, image_info);
2324
+ rm_sync_image_options(new_image, image_info);
2328
2325
 
2329
2326
  RB_GC_GUARD(info_obj);
2330
2327
 
@@ -2337,10 +2334,10 @@ Image_capture(int argc, VALUE *argv, VALUE self ATTRIBUTE_UNUSED)
2337
2334
  * For example, you can specify that the image should be resized such that the aspect ratio should
2338
2335
  * be retained but the resulting image should be no larger than 640 pixels wide and 480 pixels tall.
2339
2336
  *
2340
- * @param geom_arg [String] the geometry string
2337
+ * @param geom_arg [Magick::Geometry, String] the geometry
2341
2338
  * @yield [column, row, image]
2342
- * @yieldparam column [Numeric] The desired column size
2343
- * @yieldparam row [Numeric] The desired row size
2339
+ * @yieldparam column [Integer] The desired column size
2340
+ * @yieldparam row [Integer] The desired row size
2344
2341
  * @yieldparam image [Magick::Image] self
2345
2342
  * @see https://www.imagemagick.org/Magick++/Geometry.html
2346
2343
  * @example
@@ -2445,7 +2442,7 @@ Image_channel(VALUE self, VALUE channel_arg)
2445
2442
  * @overload channel_depth(*channels)
2446
2443
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2447
2444
  *
2448
- * @return [Numeric] the channel depth
2445
+ * @return [Integer] the channel depth
2449
2446
  */
2450
2447
  VALUE
2451
2448
  Image_channel_depth(int argc, VALUE *argv, VALUE self)
@@ -2492,7 +2489,7 @@ Image_channel_depth(int argc, VALUE *argv, VALUE self)
2492
2489
  * @overload channel_extrema(*channels)
2493
2490
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2494
2491
  *
2495
- * @return [Array<Numeric>] The first element in the array is the minimum value. The second element is the
2492
+ * @return [Array<Integer>] The first element in the array is the minimum value. The second element is the
2496
2493
  * maximum value.
2497
2494
  */
2498
2495
  VALUE
@@ -2656,8 +2653,8 @@ Image_channel_entropy(int argc ATTRIBUTE_UNUSED, VALUE *argv ATTRIBUTE_UNUSED, V
2656
2653
  * Return a new image that is a copy of the input image with the edges highlighted.
2657
2654
  *
2658
2655
  * @overload charcoal(radius = 0.0, sigma = 1.0)
2659
- * @param radius [Float] The radius of the pixel neighborhood.
2660
- * @param sigma [Float] The standard deviation of the Gaussian, in pixels.
2656
+ * @param radius [Numeric] The radius of the pixel neighborhood.
2657
+ * @param sigma [Numeric] The standard deviation of the Gaussian, in pixels.
2661
2658
  * @return [Magick::Image] a new image
2662
2659
  */
2663
2660
  VALUE
@@ -2763,11 +2760,11 @@ Image_clone(VALUE self)
2763
2760
  * the CLUT image.
2764
2761
  *
2765
2762
  * @overload clut_channel(clut_image, channel = Magick::AllChannels)
2766
- * @param clut_image [Magick::Image] The LUT gradient image.
2763
+ * @param clut_image [Magick::Image, Magick::ImageList] The LUT gradient image.
2767
2764
  * @param channel [Magick::ChannelType] a ChannelType arguments.
2768
2765
  *
2769
2766
  * @overload clut_channel(clut_image, *channels)
2770
- * @param clut_image [Magick::Image] The LUT gradient image.
2767
+ * @param clut_image [Magick::Image, Magick::ImageList] The LUT gradient image.
2771
2768
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2772
2769
  *
2773
2770
  * @return [Magick::Image] self
@@ -2787,7 +2784,7 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2787
2784
  // check_destroyed before confirming the arguments
2788
2785
  if (argc >= 1)
2789
2786
  {
2790
- rm_check_destroyed(argv[0]);
2787
+ clut = rm_check_destroyed(rm_cur_image(argv[0]));
2791
2788
  channels = extract_channels(&argc, argv);
2792
2789
  if (argc != 1)
2793
2790
  {
@@ -2799,8 +2796,6 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2799
2796
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or more)", argc);
2800
2797
  }
2801
2798
 
2802
- TypedData_Get_Struct(argv[0], Image, &rm_image_data_type, clut);
2803
-
2804
2799
  #if defined(IMAGEMAGICK_7)
2805
2800
  exception = AcquireExceptionInfo();
2806
2801
  BEGIN_CHANNEL_MASK(image, channels);
@@ -2829,7 +2824,7 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2829
2824
  /**
2830
2825
  * Computes the number of times each unique color appears in the image.
2831
2826
  *
2832
- * @return [Hash] Each key in the hash is a pixel representing a color that appears in the image.
2827
+ * @return [Hash<Magick::Pixel, Integer>] Each key in the hash is a pixel representing a color that appears in the image.
2833
2828
  * The value associated with the key is the number of times that color appears in the image.
2834
2829
  */
2835
2830
  VALUE
@@ -3052,8 +3047,8 @@ Image_color_profile(VALUE self)
3052
3047
  * - Pass nil to remove any existing profile.
3053
3048
  * - Removes any existing profile before adding the new one.
3054
3049
  *
3055
- * @param profile [String] the profile to set
3056
- * @return [String] the given profile
3050
+ * @param profile [String, nil] the profile to set
3051
+ * @return [String, nil] the given profile
3057
3052
  */
3058
3053
  VALUE
3059
3054
  Image_color_profile_eq(VALUE self, VALUE profile)
@@ -3165,16 +3160,16 @@ Image_color_flood_fill(VALUE self, VALUE target_color, VALUE fill_color,
3165
3160
  * blend for each r, g, b component.
3166
3161
  *
3167
3162
  * @overload colorize(red, green, blue, target)
3168
- * @param red [Float] The percentage of the fill color red
3169
- * @param green [Float] The percentage of the fill color green
3170
- * @param blue [Float] The percentage of the fill color blue
3163
+ * @param red [Numeric] The percentage of the fill color red
3164
+ * @param green [Numeric] The percentage of the fill color green
3165
+ * @param blue [Numeric] The percentage of the fill color blue
3171
3166
  * @param target [Magick::Pixel, String] the color name
3172
3167
  *
3173
3168
  * @overload colorize(red, green, blue, matte, target)
3174
- * @param red [Float] The percentage of the fill color red
3175
- * @param green [Float] The percentage of the fill color green
3176
- * @param blue [Float] The percentage of the fill color blue
3177
- * @param matte [Float] The percentage of the fill color transparency
3169
+ * @param red [Numeric] The percentage of the fill color red
3170
+ * @param green [Numeric] The percentage of the fill color green
3171
+ * @param blue [Numeric] The percentage of the fill color blue
3172
+ * @param matte [Numeric] The percentage of the fill color transparency
3178
3173
  * @param target [Magick::Pixel, String] the color name
3179
3174
  *
3180
3175
  * @return [Magick::Image] a new image
@@ -3323,7 +3318,7 @@ Image_colormap(int argc, VALUE *argv, VALUE self)
3323
3318
  /**
3324
3319
  * Get the number of colors in the colormap.
3325
3320
  *
3326
- * @return [Numeric] the number of colors
3321
+ * @return [Integer] the number of colors
3327
3322
  */
3328
3323
  VALUE
3329
3324
  Image_colors(VALUE self)
@@ -3385,7 +3380,7 @@ Image_colorspace_eq(VALUE self, VALUE colorspace)
3385
3380
  /**
3386
3381
  * Get image columns.
3387
3382
  *
3388
- * @return [Numeric] the columns
3383
+ * @return [Integer] the columns
3389
3384
  */
3390
3385
  VALUE
3391
3386
  Image_columns(VALUE self)
@@ -3415,13 +3410,13 @@ Image_columns(VALUE self)
3415
3410
  * imagelist, uses the current image.
3416
3411
  * @param metric [Magick::MetricType] The desired distortion metric.
3417
3412
  * @param channel [Magick::ChannelType] a ChannelType arguments.
3418
- * @yield [Magick::OptionalMethodArguments]
3413
+ * @yield [opt_args]
3414
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
3419
3415
  *
3420
3416
  * @overload compare_channel(image, metric, *channels)
3421
3417
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
3422
3418
  * imagelist, uses the current image.
3423
3419
  * @param metric [Magick::MetricType] The desired distortion metric.
3424
- * @param channel [Magick::ChannelType] a ChannelType arguments.
3425
3420
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
3426
3421
  *
3427
3422
  * @overload compare_channel(image, metric, *channels)
@@ -3434,9 +3429,9 @@ Image_columns(VALUE self)
3434
3429
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
3435
3430
  * imagelist, uses the current image.
3436
3431
  * @param metric [Magick::MetricType] The desired distortion metric.
3437
- * @param channel [Magick::ChannelType] a ChannelType arguments.
3438
3432
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
3439
- * @yield [Magick::OptionalMethodArguments]
3433
+ * @yield [opt_args]
3434
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
3440
3435
  *
3441
3436
  * @return [Array] The first element is a difference image, the second is a the value of the
3442
3437
  * computed distortion represented as a Float.
@@ -3797,7 +3792,7 @@ Image_composite(int argc, VALUE *argv, VALUE self)
3797
3792
  /**
3798
3793
  * Composite the source over the destination image as dictated by the affine transform.
3799
3794
  *
3800
- * @param source [Magick::Image] the source image
3795
+ * @param source [Magick::Image, Magick::ImageList] the source image
3801
3796
  * @param affine_matrix [Magick::AffineMatrix] affine transform matrix
3802
3797
  * @return [Magick::Image] a new image
3803
3798
  */
@@ -3811,7 +3806,7 @@ Image_composite_affine(VALUE self, VALUE source, VALUE affine_matrix)
3811
3806
  #endif
3812
3807
 
3813
3808
  image = rm_check_destroyed(self);
3814
- composite_image = rm_check_destroyed(source);
3809
+ composite_image = rm_check_destroyed(rm_cur_image(source));
3815
3810
 
3816
3811
  Export_AffineMatrix(&affine, affine_matrix);
3817
3812
  new_image = rm_clone_image(image);
@@ -4027,19 +4022,19 @@ Image_composite_channel_bang(int argc, VALUE *argv, VALUE self)
4027
4022
  * @overload composite_mathematics(image, a, b, c, d, gravity)
4028
4023
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4029
4024
  * imagelist, uses the current image.
4030
- * @param a [Float] See the description.
4031
- * @param b [Float] See the description.
4032
- * @param c [Float] See the description.
4033
- * @param d [Float] See the description.
4025
+ * @param a [Numeric] See the description.
4026
+ * @param b [Numeric] See the description.
4027
+ * @param c [Numeric] See the description.
4028
+ * @param d [Numeric] See the description.
4034
4029
  * @param gravity [Magick::GravityType] the gravity type
4035
4030
  *
4036
4031
  * @overload composite_mathematics(image, a, b, c, d, x_off, y_off)
4037
4032
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4038
4033
  * imagelist, uses the current image.
4039
- * @param a [Float] See the description.
4040
- * @param b [Float] See the description.
4041
- * @param c [Float] See the description.
4042
- * @param d [Float] See the description.
4034
+ * @param a [Numeric] See the description.
4035
+ * @param b [Numeric] See the description.
4036
+ * @param c [Numeric] See the description.
4037
+ * @param d [Numeric] See the description.
4043
4038
  * @param x_off [Numeric] The x-offset of the composited image, measured relative to the gravity
4044
4039
  * argument.
4045
4040
  * @param y_off [Numeric] The y-offset of the composited image, measured relative to the gravity
@@ -4048,10 +4043,10 @@ Image_composite_channel_bang(int argc, VALUE *argv, VALUE self)
4048
4043
  * @overload composite_mathematics(image, a, b, c, d, gravity, x_off, y_off)
4049
4044
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4050
4045
  * imagelist, uses the current image.
4051
- * @param a [Float] See the description.
4052
- * @param b [Float] See the description.
4053
- * @param c [Float] See the description.
4054
- * @param d [Float] See the description.
4046
+ * @param a [Numeric] See the description.
4047
+ * @param b [Numeric] See the description.
4048
+ * @param c [Numeric] See the description.
4049
+ * @param d [Numeric] See the description.
4055
4050
  * @param gravity [Magick::GravityType] the gravity type
4056
4051
  * @param x_off [Numeric] The x-offset of the composited image, measured relative to the gravity
4057
4052
  * argument.
@@ -4582,7 +4577,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4582
4577
  }
4583
4578
  else
4584
4579
  {
4585
- *black_point = pixels * rm_str_to_pct(argv[0]);
4580
+ *black_point = pixels * rm_str_to_pct(argv[0], true);
4586
4581
  }
4587
4582
  if (rm_check_num2dbl(argv[1]))
4588
4583
  {
@@ -4590,7 +4585,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4590
4585
  }
4591
4586
  else
4592
4587
  {
4593
- *white_point = pixels * rm_str_to_pct(argv[1]);
4588
+ *white_point = pixels * rm_str_to_pct(argv[1], true);
4594
4589
  }
4595
4590
  break;
4596
4591
 
@@ -4601,7 +4596,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4601
4596
  }
4602
4597
  else
4603
4598
  {
4604
- *black_point = pixels * rm_str_to_pct(argv[0]);
4599
+ *black_point = pixels * rm_str_to_pct(argv[0], true);
4605
4600
  }
4606
4601
  *white_point = pixels - *black_point;
4607
4602
  break;
@@ -4622,17 +4617,17 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4622
4617
  * a linear scaling function to the image pixel values.
4623
4618
  *
4624
4619
  * @overload contrast_stretch_channel(black_point, white_point = pixels - black_point, channel = Magick::AllChannels)
4625
- * @param black_point [Float, String] black out at most this many pixels. Specify an absolute
4620
+ * @param black_point [Numeric, String] black out at most this many pixels. Specify an absolute
4626
4621
  * number of pixels as a numeric value, or a percentage as a string in the form 'NN%'.
4627
- * @param white_point [Float, String] burn at most this many pixels. Specify an absolute number
4622
+ * @param white_point [Numeric, String] burn at most this many pixels. Specify an absolute number
4628
4623
  * of pixels as a numeric value, or a percentage as a string in the form 'NN%'. This argument
4629
4624
  * is optional. If not specified the default is `(columns * rows) - black_point`.
4630
4625
  * @param channel [Magick::ChannelType] a ChannelType arguments.
4631
4626
  *
4632
4627
  * @overload contrast_stretch_channel(black_point, white_point = pixels - black_point, *channels)
4633
- * @param black_point [Float, String] black out at most this many pixels. Specify an absolute
4628
+ * @param black_point [Numeric, String] black out at most this many pixels. Specify an absolute
4634
4629
  * number of pixels as a numeric value, or a percentage as a string in the form 'NN%'.
4635
- * @param white_point [Float, String] burn at most this many pixels. Specify an absolute number of
4630
+ * @param white_point [Numeric, String] burn at most this many pixels. Specify an absolute number of
4636
4631
  * pixels as a numeric value, or a percentage as a string in the form 'NN%'. This argument is
4637
4632
  * optional. If not specified the default is all pixels - black_point pixels.
4638
4633
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
@@ -4707,7 +4702,7 @@ Image_morphology(VALUE self, VALUE method_v, VALUE iterations, VALUE kernel_v)
4707
4702
  *
4708
4703
  * @param channel_v [Magick::ChannelType] a channel type
4709
4704
  * @param method_v [Magick::MorphologyMethod] the morphology method
4710
- * @param iterations [Numeric] apply the operation this many times (or no change).
4705
+ * @param iterations_v [Numeric] apply the operation this many times (or no change).
4711
4706
  * A value of -1 means loop until no change found.
4712
4707
  * How this is applied may depend on the morphology method.
4713
4708
  * Typically this is a value of 1.
@@ -4716,19 +4711,19 @@ Image_morphology(VALUE self, VALUE method_v, VALUE iterations, VALUE kernel_v)
4716
4711
  */
4717
4712
 
4718
4713
  VALUE
4719
- Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iterations, VALUE kernel_v)
4714
+ Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iterations_v, VALUE kernel_v)
4720
4715
  {
4721
4716
  Image *image, *new_image;
4722
4717
  ExceptionInfo *exception;
4723
4718
  MorphologyMethod method;
4724
4719
  ChannelType channel;
4725
4720
  KernelInfo *kernel;
4721
+ ssize_t iterations = NUM2LONG(iterations_v);;
4726
4722
 
4727
4723
  image = rm_check_destroyed(self);
4728
4724
 
4729
4725
  VALUE_TO_ENUM(method_v, method, MorphologyMethod);
4730
4726
  VALUE_TO_ENUM(channel_v, channel, ChannelType);
4731
- Check_Type(iterations, T_FIXNUM);
4732
4727
 
4733
4728
  if (TYPE(kernel_v) == T_STRING)
4734
4729
  {
@@ -4746,12 +4741,12 @@ Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iter
4746
4741
 
4747
4742
  #if defined(IMAGEMAGICK_7)
4748
4743
  BEGIN_CHANNEL_MASK(image, channel);
4749
- GVL_STRUCT_TYPE(MorphologyImage) args = { image, method, NUM2LONG(iterations), kernel, exception };
4744
+ GVL_STRUCT_TYPE(MorphologyImage) args = { image, method, iterations, kernel, exception };
4750
4745
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(MorphologyImage), &args);
4751
4746
  CHANGE_RESULT_CHANNEL_MASK(new_image);
4752
4747
  END_CHANNEL_MASK(image);
4753
4748
  #else
4754
- GVL_STRUCT_TYPE(MorphologyImageChannel) args = { image, channel, method, NUM2LONG(iterations), kernel, exception };
4749
+ GVL_STRUCT_TYPE(MorphologyImageChannel) args = { image, channel, method, iterations, kernel, exception };
4755
4750
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(MorphologyImageChannel), &args);
4756
4751
  #endif
4757
4752
  rm_check_exception(exception, new_image, DestroyOnError);
@@ -5049,26 +5044,26 @@ Image_crop(int argc, VALUE *argv, VALUE self)
5049
5044
  * Extract a region of the image defined by width, height, x, y.
5050
5045
  * In-place form of {Image#crop}.
5051
5046
  *
5052
- * @overload crop!(reset = false, x, y, width, height)
5053
- * @param reset [Boolean] true if reset the cropped image page canvas and position
5047
+ * @overload crop!(x, y, width, height, reset = false)
5054
5048
  * @param x [Numeric] x position of start of region
5055
5049
  * @param y [Numeric] y position of start of region
5056
5050
  * @param width [Numeric] width of region
5057
5051
  * @param height [Numeric] height of region
5058
- *
5059
- * @overload crop!(reset = false, gravity, width, height)
5060
5052
  * @param reset [Boolean] true if reset the cropped image page canvas and position
5053
+ *
5054
+ * @overload crop!(gravity, width, height, reset = false)
5061
5055
  * @param gravity [Magick::GravityType] the gravity type
5062
5056
  * @param width [Numeric] width of region
5063
5057
  * @param height [Numeric] height of region
5064
-
5065
- * @overload crop!(reset = false, gravity, x, y, width, height)
5066
5058
  * @param reset [Boolean] true if reset the cropped image page canvas and position
5059
+
5060
+ * @overload crop!(gravity, x, y, width, height, reset = false)
5067
5061
  * @param gravity [Magick::GravityType] the gravity type
5068
5062
  * @param x [Numeric] x position of start of region
5069
5063
  * @param y [Numeric] y position of start of region
5070
5064
  * @param width [Numeric] width of region
5071
5065
  * @param height [Numeric] height of region
5066
+ * @param reset [Boolean] true if reset the cropped image page canvas and position
5072
5067
  *
5073
5068
  * @return [Magick::Image] a new image
5074
5069
  * @see Image#crop!
@@ -5154,8 +5149,8 @@ Image_density(VALUE self)
5154
5149
  * resolution. The height attribute is used for the y resolution. If the height attribute is
5155
5150
  * missing, the width attribute is used for both.
5156
5151
  *
5157
- * @param density_arg [String, Magick::Geometry] The density String or Geometry
5158
- * @return [String, Magick::Geometry] the given value
5152
+ * @param density_arg [Magick::Geometry, String] The density String or Geometry
5153
+ * @return [Magick::Geometry, String] the given value
5159
5154
  * @see https://www.imagemagick.org/Magick++/Geometry.html
5160
5155
  */
5161
5156
  VALUE
@@ -5273,8 +5268,8 @@ Image_decipher(VALUE self, VALUE passphrase)
5273
5268
  * - If value is nil, the artifact will be removed
5274
5269
  *
5275
5270
  * @param artifact [String] the artifact to set
5276
- * @param value [String] the value to which to set the artifact
5277
- * @return [String] the given `value`
5271
+ * @param value [String, nil] the value to which to set the artifact
5272
+ * @return [String, nil] the given `value`
5278
5273
  */
5279
5274
  VALUE
5280
5275
  Image_define(VALUE self, VALUE artifact, VALUE value)
@@ -5311,7 +5306,7 @@ Image_define(VALUE self, VALUE artifact, VALUE value)
5311
5306
  * sequence. The default number of ticks is 0. By default there are 100 ticks per second but this
5312
5307
  * number can be changed via the ticks_per_second attribute.
5313
5308
  *
5314
- * @return [Numeric] The current delay value.
5309
+ * @return [Integer] The current delay value.
5315
5310
  */
5316
5311
  VALUE
5317
5312
  Image_delay(VALUE self)
@@ -5399,7 +5394,7 @@ Image_delete_profile(VALUE self, VALUE name)
5399
5394
  * - If all pixels have lower-order bytes equal to higher-order bytes, the depth will be reported as
5400
5395
  * 8 even if the depth field in the Image structure says 16.
5401
5396
  *
5402
- * @return [Numeric] the depth
5397
+ * @return [Integer] the depth
5403
5398
  */
5404
5399
  VALUE
5405
5400
  Image_depth(VALUE self)
@@ -5425,9 +5420,9 @@ Image_depth(VALUE self)
5425
5420
  * Straightens an image. A threshold of 40% works for most images.
5426
5421
  *
5427
5422
  * @overload deskew(threshold = 0.40, auto_crop_width = nil)
5428
- * @param threshold [Float] A percentage of QuantumRange. Either a Float between 0 and 1.0,
5423
+ * @param threshold [Numeric, String] A percentage of QuantumRange. Either a Float between 0 and 1.0,
5429
5424
  * inclusive, or a string in the form "NN%" where NN is between 0 and 100.
5430
- * @param auto_crop_width [Float] Specify a value for this argument to cause the deskewed image to
5425
+ * @param auto_crop_width [Numeric] Specify a value for this argument to cause the deskewed image to
5431
5426
  * be auto-cropped. The argument is the pixel width of the image background (e.g. 40).
5432
5427
  * @return [Magick::Image] a new image
5433
5428
  */
@@ -5454,7 +5449,7 @@ Image_deskew(int argc, VALUE *argv, VALUE self)
5454
5449
  case 0:
5455
5450
  break;
5456
5451
  default:
5457
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
5452
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 2)", argc);
5458
5453
  break;
5459
5454
  }
5460
5455
 
@@ -5583,7 +5578,7 @@ Image_difference(VALUE self, VALUE other)
5583
5578
  /**
5584
5579
  * Get image directory.
5585
5580
  *
5586
- * @return [String] the directory
5581
+ * @return [String, nil] the directory
5587
5582
  */
5588
5583
  VALUE
5589
5584
  Image_directory(VALUE self)
@@ -5599,8 +5594,8 @@ Image_directory(VALUE self)
5599
5594
  * @overload displace(displacement_map, x_amp, y_amp = x_amp, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
5600
5595
  * @param displacement_map [Magick::Image, Magick::ImageList] The source image for the composite
5601
5596
  * operation. Either an imagelist or an image. If an imagelist, uses the current image.
5602
- * @param x_amp [Float] The maximum displacement on the x-axis.
5603
- * @param y_amp [Float] The maximum displacement on the y-axis.
5597
+ * @param x_amp [Numeric] The maximum displacement on the x-axis.
5598
+ * @param y_amp [Numeric] The maximum displacement on the y-axis.
5604
5599
  * @param gravity [Magick::GravityType] the gravity for offset. the offsets are measured from the
5605
5600
  * NorthWest corner by default.
5606
5601
  * @param x_offset [Numeric] The offset that measured from the left-hand side of the target image.
@@ -5757,6 +5752,8 @@ Image_dispatch(int argc, VALUE *argv, VALUE self)
5757
5752
  /**
5758
5753
  * Display the image to an X window screen.
5759
5754
  *
5755
+ * @yield [info]
5756
+ * @yieldparam info [Magick::Image::Info]
5760
5757
  * @return [Magick::Image] self
5761
5758
  */
5762
5759
  VALUE
@@ -5833,10 +5830,10 @@ Image_dispose_eq(VALUE self, VALUE dispose)
5833
5830
  * @overload dissolve(overlay, src_percent, dst_percent = -1.0, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
5834
5831
  * @param overlay [Magick::Image, Magick::ImageList] The source image for the composite operation.
5835
5832
  * Either an imagelist or an image. If an imagelist, uses the current image.
5836
- * @param src_percent [Float, String] Either a non-negative number a string in the form "NN%".
5833
+ * @param src_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
5837
5834
  * If src_percentage is a number it is interpreted as a percentage.
5838
5835
  * Both 0.25 and "25%" mean 25%. This argument is required.
5839
- * @param dst_percent [Float, String] Either a non-negative number a string in the form "NN%".
5836
+ * @param dst_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
5840
5837
  * If src_percentage is a number it is interpreted as a percentage.
5841
5838
  * Both 0.25 and "25%" mean 25%. This argument may omitted if no other arguments follow it.
5842
5839
  * In this case the default is 100%-src_percentage.
@@ -5925,7 +5922,8 @@ Image_dissolve(int argc, VALUE *argv, VALUE self)
5925
5922
  * image is adjusted to ensure the whole source image will just fit within the final destination
5926
5923
  * image, which will be sized and offset accordingly. Also in many cases the virtual offset of
5927
5924
  * the source image will be taken into account in the mapping.
5928
- * @yield [Magick::OptionalMethodArguments]
5925
+ * @yield [opt_args]
5926
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
5929
5927
  *
5930
5928
  * @return [Magick::Image] a new image
5931
5929
  * @example
@@ -6191,7 +6189,7 @@ Image_each_profile(VALUE self)
6191
6189
  * Find edges in an image. "radius" defines the radius of the convolution filter.
6192
6190
  *
6193
6191
  * @overload edge(radius = 0.0)
6194
- * @param radius [Float] The radius of the convolution filter.
6192
+ * @param radius [Numeric] The radius of the convolution filter.
6195
6193
  * @return [Magick::Image] a new image
6196
6194
  */
6197
6195
  VALUE
@@ -6279,8 +6277,8 @@ effect_image(VALUE self, int argc, VALUE *argv, gvl_function_t fp)
6279
6277
  * Adds a 3-dimensional effect.
6280
6278
  *
6281
6279
  * @overload emboss(radius = 0.0, sigma = 1.0)
6282
- * @param radius [Float] The radius of the Gaussian operator.
6283
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
6280
+ * @param radius [Numeric] The radius of the Gaussian operator.
6281
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
6284
6282
  * @return [Magick::Image] a new image
6285
6283
  */
6286
6284
  VALUE
@@ -6810,7 +6808,7 @@ Image_export_pixels_to_str(int argc, VALUE *argv, VALUE self)
6810
6808
  case 0:
6811
6809
  break;
6812
6810
  default:
6813
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
6811
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 6)", argc);
6814
6812
  break;
6815
6813
  }
6816
6814
 
@@ -6920,7 +6918,7 @@ Image_filename(VALUE self)
6920
6918
  /**
6921
6919
  * Return the image file size.
6922
6920
  *
6923
- * @return [Numeric] the file size
6921
+ * @return [Integer] the file size
6924
6922
  */
6925
6923
  VALUE Image_filesize(VALUE self)
6926
6924
  {
@@ -7090,7 +7088,7 @@ Image_flip(VALUE self)
7090
7088
  * Create a vertical mirror image by reflecting the pixels around the central x-axis.
7091
7089
  * In-place form of {Image#flip}.
7092
7090
  *
7093
- * @return [Magick::Image] a new image
7091
+ * @return [Magick::Image] self
7094
7092
  * @see Image#flip
7095
7093
  * @see Image#flop
7096
7094
  * @see Image#flop!
@@ -7123,7 +7121,7 @@ Image_flop(VALUE self)
7123
7121
  * Create a horizonal mirror image by reflecting the pixels around the central y-axis.
7124
7122
  * In-place form of {Image#flop}.
7125
7123
  *
7126
- * @return [Magick::Image] a new image
7124
+ * @return [Magick::Image] self
7127
7125
  * @see Image#flop
7128
7126
  * @see Image#flip
7129
7127
  * @see Image#flip!
@@ -7273,7 +7271,8 @@ Image_frame(int argc, VALUE *argv, VALUE self)
7273
7271
  * @overload from_blob(blob)
7274
7272
  * This yields {Magick::Image::Info} to block with its object's scope.
7275
7273
  * @param blob [String] the blob data
7276
- * @yield [Magick::Image::Info]
7274
+ * @yield [info]
7275
+ * @yieldparam info [Magick::Image::Info]
7277
7276
  *
7278
7277
  * @return [Array<Magick::Image>] an array of new images
7279
7278
  * @see Image#to_blob
@@ -7303,6 +7302,7 @@ Image_from_blob(VALUE klass ATTRIBUTE_UNUSED, VALUE blob_arg)
7303
7302
 
7304
7303
  rm_ensure_result(images);
7305
7304
  rm_set_user_artifact(images, info);
7305
+ rm_sync_image_options(images, info);
7306
7306
 
7307
7307
  RB_GC_GUARD(info_obj);
7308
7308
 
@@ -7315,15 +7315,14 @@ Image_from_blob(VALUE klass ATTRIBUTE_UNUSED, VALUE blob_arg)
7315
7315
  *
7316
7316
  * @overload function_channel(function, *args, channel = Magick::AllChannels)
7317
7317
  * @param function [Magick::MagickFunction] the function
7318
- * @param *args [Float] One or more floating-point numbers.
7318
+ * @param *args [Numeric] One or more floating-point numbers.
7319
7319
  * The number of parameters depends on the function. See the ImageMagick documentation for
7320
7320
  * details.
7321
-
7322
7321
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7323
7322
  *
7324
7323
  * @overload function_channel(function, *args, *channels)
7325
7324
  * @param function [Magick::MagickFunction] the function
7326
- * @param *args [Float] One or more floating-point numbers.
7325
+ * @param *args [Numeric] One or more floating-point numbers.
7327
7326
  * The number of parameters depends on the function. See the ImageMagick documentation for
7328
7327
  * details.
7329
7328
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
@@ -7429,9 +7428,9 @@ Image_fuzz(VALUE self)
7429
7428
  /**
7430
7429
  * Set the number of algorithms search for a target color.
7431
7430
  *
7432
- * @param fuzz [String, Float] The argument may be a floating-point numeric value or a string in the
7431
+ * @param fuzz [String, Numeric] The argument may be a floating-point numeric value or a string in the
7433
7432
  * form "NN%".
7434
- * @return [String, Float] the given value
7433
+ * @return [String, Numeric] the given value
7435
7434
  * @see Info#fuzz=
7436
7435
  */
7437
7436
  VALUE
@@ -7510,8 +7509,8 @@ Image_gamma(VALUE self)
7510
7509
  /**
7511
7510
  * Set the gamma level of the image.
7512
7511
  *
7513
- * @param val [Float] the gamma level
7514
- * @return [Float] the gamma level
7512
+ * @param val [Numeric] the gamma level
7513
+ * @return [Numeric] the gamma level
7515
7514
  */
7516
7515
  VALUE
7517
7516
  Image_gamma_eq(VALUE self, VALUE val)
@@ -7524,12 +7523,12 @@ Image_gamma_eq(VALUE self, VALUE val)
7524
7523
  * Apply gamma to a channel.
7525
7524
  *
7526
7525
  * @overload gamma_channel(gamma, channel = Magick::AllChannels)
7527
- * @param Values gamma [Float] typically range from 0.8 to 2.3. You can also reduce the influence
7526
+ * @param Values gamma [Numeric] typically range from 0.8 to 2.3. You can also reduce the influence
7528
7527
  * of a particular channel with a gamma value of 0.
7529
7528
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7530
7529
  *
7531
7530
  * @overload gamma_channel(gamma, *channels)
7532
- * @param Values gamma [Float] typically range from 0.8 to 2.3. You can also reduce the influence
7531
+ * @param Values gamma [Numeric] typically range from 0.8 to 2.3. You can also reduce the influence
7533
7532
  * of a particular channel with a gamma value of 0.
7534
7533
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
7535
7534
  *
@@ -7679,8 +7678,8 @@ Image_gamma_correct(int argc, VALUE *argv, VALUE self)
7679
7678
  * Blur the image.
7680
7679
  *
7681
7680
  * @overload gaussian_blur(radius = 0.0, sigma = 1.0)
7682
- * @param radius [Float] The radius of the Gaussian operator.
7683
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
7681
+ * @param radius [Numeric] The radius of the Gaussian operator.
7682
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7684
7683
  * @return [Magick::Image] a new image
7685
7684
  */
7686
7685
  VALUE
@@ -7694,13 +7693,13 @@ Image_gaussian_blur(int argc, VALUE *argv, VALUE self)
7694
7693
  * Blur the image on a channel.
7695
7694
  *
7696
7695
  * @overload gaussian_blur_channel(radius = 0.0, sigma = 1.0, channel = Magick::AllChannels)
7697
- * @param radius [Float] The radius of the Gaussian operator.
7698
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
7696
+ * @param radius [Numeric] The radius of the Gaussian operator.
7697
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7699
7698
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7700
7699
  *
7701
7700
  * @overload gaussian_blur_channel(radius = 0.0, sigma = 1.0, *channels)
7702
- * @param radius [Float] The radius of the Gaussian operator.
7703
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
7701
+ * @param radius [Numeric] The radius of the Gaussian operator.
7702
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7704
7703
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
7705
7704
  *
7706
7705
  * @return [Magick::Image] a new image
@@ -7767,8 +7766,8 @@ Image_geometry(VALUE self)
7767
7766
  /**
7768
7767
  * Set the preferred size of the image when encoding.
7769
7768
  *
7770
- * @param geometry [String] the geometry
7771
- * @return [String] the given geometry
7769
+ * @param geometry [Magick::Geometry, String] the geometry
7770
+ * @return [Magick::Geometry, String] the given geometry
7772
7771
  * @see https://www.imagemagick.org/Magick++/Geometry.html
7773
7772
  */
7774
7773
  VALUE
@@ -7960,26 +7959,7 @@ Image_gray_q(VALUE self)
7960
7959
  #if defined(HAVE_SETIMAGEGRAY)
7961
7960
  return has_attribute(self, (MagickBooleanType (*)(const Image *, ExceptionInfo *))SetImageGray);
7962
7961
  #else
7963
- #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
7964
7962
  return has_attribute(self, IsGrayImage);
7965
- #else
7966
- // For ImageMagick 6.7
7967
- Image *image;
7968
- ColorspaceType colorspace;
7969
- VALUE ret;
7970
-
7971
- image = rm_check_destroyed(self);
7972
- colorspace = image->colorspace;
7973
- if (image->colorspace == sRGBColorspace || image->colorspace == TransparentColorspace) {
7974
- // Workaround
7975
- // If image colorspace has non-RGBColorspace, IsGrayImage() always return false.
7976
- image->colorspace = RGBColorspace;
7977
- }
7978
-
7979
- ret = has_attribute(self, IsGrayImage);
7980
- image->colorspace = colorspace;
7981
- return ret;
7982
- #endif
7983
7963
  #endif
7984
7964
  }
7985
7965
 
@@ -8000,6 +7980,8 @@ Image_histogram_q(VALUE self)
8000
7980
  * Implode the image by the specified percentage.
8001
7981
  *
8002
7982
  * @overload implode(amount = 0.50)
7983
+ * @param amount [Numeric] Increasing the absolute value of the argument increases the effect.
7984
+ * The value may be positive for implosion, or negative for explosion. The default is 0.50.
8003
7985
  * @return [Magick::Image] a new image
8004
7986
  */
8005
7987
  VALUE
@@ -8466,8 +8448,8 @@ Image_iptc_profile(VALUE self)
8466
8448
  /**
8467
8449
  * Set the IPTC profile. The argument is a string.
8468
8450
  *
8469
- * @param profile [String] the IPTC profile
8470
- * @return [String] the given profile
8451
+ * @param profile [String, nil] the IPTC profile
8452
+ * @return [String, nil] the given profile
8471
8453
  */
8472
8454
  VALUE
8473
8455
  Image_iptc_profile_eq(VALUE self, VALUE profile)
@@ -8502,9 +8484,9 @@ Image_iterations_eq(VALUE self, VALUE val)
8502
8484
  * points to the full available quantum range.
8503
8485
  *
8504
8486
  * @overload level2(black_point = 0.0, white_point = Magick::QuantumRange, gamma = 1.0)
8505
- * @param black_point [Float] A black point level in the range 0 - QuantumRange.
8506
- * @param white_point [Float] A white point level in the range 0..QuantumRange.
8507
- * @param gamma [Float] A gamma correction in the range 0.0 - 10.0.
8487
+ * @param black_point [Numeric] A black point level in the range 0 - QuantumRange.
8488
+ * @param white_point [Numeric] A white point level in the range 0..QuantumRange.
8489
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8508
8490
  * @return [Magick::Image] a new image
8509
8491
  */
8510
8492
  VALUE
@@ -8565,9 +8547,9 @@ Image_level2(int argc, VALUE *argv, VALUE self)
8565
8547
  *
8566
8548
  * @overload level_channel(aChannelType, black = 0.0, white = 1.0, gamma = Magick::QuantumRange)
8567
8549
  * @param aChannelType [Magick::ChannelType] A ChannelType value.
8568
- * @param black [Float] A black point level in the range 0..QuantumRange.
8569
- * @param white [Float] A white point level in the range 0..QuantumRange.
8570
- * @param gamma [Float] A gamma correction in the range 0.0 - 10.0.
8550
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8551
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8552
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8571
8553
  * @return [Magick::Image] a new image
8572
8554
  * @see Image#level2
8573
8555
  */
@@ -8720,14 +8702,15 @@ Image_level_colors(int argc, VALUE *argv, VALUE self)
8720
8702
  * Maps black and white to the specified points. The reverse of {Image#level_channel}.
8721
8703
  *
8722
8704
  * @overload levelize_channel(black_point, white_point = Magick::QuantumRange - black_point, gamma = 1.0, channel = Magick::AllChannels)
8723
- * @param black [Float] A black point level in the range 0..QuantumRange.
8724
- * @param white [Float] A white point level in the range 0..QuantumRange.
8725
- * @param gamma [Float] A gamma correction in the range 0.0 - 10.0.
8705
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8706
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8707
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8708
+ * @param channel [Magick::ChannelType] a ChannelType arguments.
8726
8709
  *
8727
8710
  * @overload levelize_channel(black_point, white_point = Magick::QuantumRange - black_point, gamma = 1.0, *channels)
8728
- * @param black [Float] A black point level in the range 0..QuantumRange.
8729
- * @param white [Float] A white point level in the range 0..QuantumRange.
8730
- * @param gamma [Float] A gamma correction in the range 0.0 - 10.0.
8711
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8712
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8713
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8731
8714
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
8732
8715
  *
8733
8716
  * @return [Magick::Image] a new image
@@ -8798,10 +8781,10 @@ Image_levelize_channel(int argc, VALUE *argv, VALUE self)
8798
8781
  * Linear with saturation stretch.
8799
8782
  *
8800
8783
  * @overload linear_stretch(black_point, white_point = pixels - black_point)
8801
- * @param black_point [Float, String] black out at most this many pixels.
8784
+ * @param black_point [Numeric, String] black out at most this many pixels.
8802
8785
  * Specify an absolute number of pixels as a numeric value, or a percentage as a string in the
8803
8786
  * form 'NN%'.
8804
- * @param white_point [Float, String] burn at most this many pixels.
8787
+ * @param white_point [Numeric, String] burn at most this many pixels.
8805
8788
  * Specify an absolute number of pixels as a numeric value, or a percentage as a string in the
8806
8789
  * form 'NN%'.
8807
8790
  * This argument is optional. If not specified the default is `(columns * rows) - black_point`.
@@ -8844,8 +8827,8 @@ Image_linear_stretch(int argc, VALUE *argv, VALUE self)
8844
8827
  * @param columns [Numeric] The desired width height. Should not exceed 200% of the original
8845
8828
  * dimension.
8846
8829
  * @param rows [Numeric] The desired height. Should not exceed 200% of the original dimension.
8847
- * @param delta_x [Float] Maximum seam transversal step (0 means straight seams).
8848
- * @param rigidity [Float] Introduce a bias for non-straight seams (typically 0).
8830
+ * @param delta_x [Numeric] Maximum seam transversal step (0 means straight seams).
8831
+ * @param rigidity [Numeric] Introduce a bias for non-straight seams (typically 0).
8849
8832
  * @return [Magick::Image] a new image
8850
8833
  */
8851
8834
  VALUE
@@ -9304,7 +9287,7 @@ set_image_mask(Image *image, VALUE mask)
9304
9287
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
9305
9288
  * imagelist, uses the current image.
9306
9289
  *
9307
- * @return [Magick::Image] the mask image
9290
+ * @return [Magick::Image, nil] the mask image
9308
9291
  */
9309
9292
  VALUE
9310
9293
  Image_mask(int argc, VALUE *argv, VALUE self)
@@ -9576,9 +9559,12 @@ Image_minify_bang(VALUE self)
9576
9559
  * Changes the brightness, saturation, and hue.
9577
9560
  *
9578
9561
  * @overload modulate(brightness = 1.0, saturation = 1.0, hue = 1.0)
9579
- * @param brightness [Float] The percent change in the brightness
9580
- * @param saturation [Float] The percent change in the saturation
9581
- * @param hue [Float] The percent change in the hue
9562
+ * @param brightness [Numeric, String] The percent change in the brightness.
9563
+ * Must be a non-negative number or a string in the form "NN%".
9564
+ * @param saturation [Numeric, String] The percent change in the saturation.
9565
+ * Must be a number or a string in the form "NN%".
9566
+ * @param hue [Numeric, String] The percent change in the hue.
9567
+ * Must be a number or a string in the form "NN%".
9582
9568
  * @return [Magick::Image] a new image
9583
9569
  */
9584
9570
  VALUE
@@ -9597,11 +9583,11 @@ Image_modulate(int argc, VALUE *argv, VALUE self)
9597
9583
  switch (argc)
9598
9584
  {
9599
9585
  case 3:
9600
- pct_hue = 100*NUM2DBL(argv[2]);
9586
+ pct_hue = rm_percentage2(argv[2], 1.0, false) * 100.0;
9601
9587
  case 2:
9602
- pct_saturation = 100*NUM2DBL(argv[1]);
9588
+ pct_saturation = rm_percentage2(argv[1], 1.0, false) * 100.0;
9603
9589
  case 1:
9604
- pct_brightness = 100*NUM2DBL(argv[0]);
9590
+ pct_brightness = rm_percentage(argv[0], 1.0) * 100.0;
9605
9591
  break;
9606
9592
  case 0:
9607
9593
  break;
@@ -9654,7 +9640,7 @@ Image_monochrome_q(VALUE self)
9654
9640
  /**
9655
9641
  * Tile size and offset within an image montage. Only valid for montage images.
9656
9642
  *
9657
- * @return [String] the tile size and offset
9643
+ * @return [String, nil] the tile size and offset
9658
9644
  */
9659
9645
  VALUE
9660
9646
  Image_montage(VALUE self)
@@ -9699,7 +9685,7 @@ motion_blur(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
9699
9685
  case 0:
9700
9686
  break;
9701
9687
  default:
9702
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 3)", argc);
9688
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 3)", argc);
9703
9689
  break;
9704
9690
  }
9705
9691
 
@@ -9727,9 +9713,9 @@ motion_blur(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
9727
9713
  * blurring motion.
9728
9714
  *
9729
9715
  * @overload motion_blur(radius = 0.0, sigma = 1.0, angle = 0.0)
9730
- * @param radius [Float] The radius
9731
- * @param sigma [Float] The standard deviation
9732
- * @param angle [Float] The angle (in degrees)
9716
+ * @param radius [Numeric] The radius
9717
+ * @param sigma [Numeric] The standard deviation
9718
+ * @param angle [Numeric] The angle (in degrees)
9733
9719
  * @return [Magick::Image] a new image
9734
9720
  */
9735
9721
  VALUE
@@ -9797,7 +9783,6 @@ Image_negate(int argc, VALUE *argv, VALUE self)
9797
9783
  * @overload negate_channel(grayscale = false, *channels)
9798
9784
  * @param grayscale [Boolean] If the grayscale argument is true, only the grayscale values are
9799
9785
  * negated.
9800
- * @param channel [Magick::ChannelType] a ChannelType arguments.
9801
9786
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
9802
9787
  *
9803
9788
  * @return [Magick::Image] a new image
@@ -9923,6 +9908,8 @@ Image_initialize(int argc, VALUE *argv, VALUE self)
9923
9908
  CALL_FUNC_WITHOUT_GVL(GVL_FUNC(SetImageExtent), &args);
9924
9909
  #endif
9925
9910
 
9911
+ rm_sync_image_options(image, info);
9912
+
9926
9913
  // If the caller did not supply a fill argument, call SetImageBackgroundColor
9927
9914
  // to fill the image using the background color. The background color can
9928
9915
  // be set by specifying it when creating the Info parm block.
@@ -10012,7 +9999,11 @@ Image_normalize(VALUE self)
10012
9999
  *
10013
10000
  * @overload normalize_channel(channel = Magick::AllChannels)
10014
10001
  * @param channel [Magick::ChannelType] a ChannelType arguments.
10015
- * @return [Magick::Image] a new image
10002
+ *
10003
+ * @overload normalize_channel(*channels)
10004
+ * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
10005
+ *
10006
+ * @return [Magick::Image] a new image
10016
10007
  */
10017
10008
  VALUE
10018
10009
  Image_normalize_channel(int argc, VALUE *argv, VALUE self)
@@ -10077,7 +10068,7 @@ Image_normalized_maximum_error(VALUE self)
10077
10068
  /**
10078
10069
  * Return the number of unique colors in the image.
10079
10070
  *
10080
- * @return [Numeric] number of unique colors
10071
+ * @return [Integer] number of unique colors
10081
10072
  */
10082
10073
  VALUE
10083
10074
  Image_number_colors(VALUE self)
@@ -10102,7 +10093,7 @@ Image_number_colors(VALUE self)
10102
10093
  /**
10103
10094
  * Get the number of bytes to skip over when reading raw image.
10104
10095
  *
10105
- * @return [Number] the offset
10096
+ * @return [Integer] the offset
10106
10097
  */
10107
10098
  VALUE
10108
10099
  Image_offset(VALUE self)
@@ -10113,8 +10104,8 @@ Image_offset(VALUE self)
10113
10104
  /**
10114
10105
  * Set the number of bytes to skip over when reading raw image.
10115
10106
  *
10116
- * @param val [Number] the offset
10117
- * @return [Number] the given offset
10107
+ * @param val [Numeric] the offset
10108
+ * @return [Numeric] the given offset
10118
10109
  */
10119
10110
  VALUE
10120
10111
  Image_offset_eq(VALUE self, VALUE val)
@@ -10127,7 +10118,7 @@ Image_offset_eq(VALUE self, VALUE val)
10127
10118
  * Apply a special effect filter that simulates an oil painting.
10128
10119
  *
10129
10120
  * @overload oil_paint(radius = 3.0)
10130
- * @param radius [Float] The radius of the Gaussian in pixels.
10121
+ * @param radius [Numeric] The radius of the Gaussian in pixels.
10131
10122
  * @return [Magick::Image] a new image
10132
10123
  */
10133
10124
  VALUE
@@ -10232,7 +10223,7 @@ Image_opaque(VALUE self, VALUE target, VALUE fill)
10232
10223
  * @param fill [Magick::Pixel, String] the color for filling
10233
10224
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10234
10225
  * color. The default is the value of the target image's fuzz attribute
10235
- * @param fuzz [Float] Colors within this distance are considered equal to the target color.
10226
+ * @param fuzz [Numeric] Colors within this distance are considered equal to the target color.
10236
10227
  * @param channel [Magick::ChannelType] a ChannelType arguments.
10237
10228
  *
10238
10229
  * @overload opaque_channel(target, fill, invert, fuzz, *channels)
@@ -10240,7 +10231,7 @@ Image_opaque(VALUE self, VALUE target, VALUE fill)
10240
10231
  * @param fill [Magick::Pixel, String] the color for filling
10241
10232
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10242
10233
  * color. The default is the value of the target image's fuzz attribute
10243
- * @param fuzz [Float] Colors within this distance are considered equal to the target color.
10234
+ * @param fuzz [Numeric] Colors within this distance are considered equal to the target color.
10244
10235
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
10245
10236
  *
10246
10237
  * @return [Magick::Image] a new image
@@ -10464,11 +10455,11 @@ Image_page_eq(VALUE self, VALUE rect)
10464
10455
  * Changes the opacity value of all the pixels that match color to the value specified by opacity.
10465
10456
  * If invert is true, changes the pixels that don't match color.
10466
10457
  *
10467
- * @overload paint_transparent(target, invert, fuzz, alpha: Magick::TransparentAlpha)
10468
- * @param target [Magick::Pixel, String] the color name
10458
+ * @overload paint_transparent(color, invert, fuzz, alpha: Magick::TransparentAlpha)
10459
+ * @param color [Magick::Pixel, String] the color name
10469
10460
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10470
10461
  * color.
10471
- * @param fuzz [Float] By default the pixel must match exactly, but you can specify a tolerance
10462
+ * @param fuzz [Numeric] By default the pixel must match exactly, but you can specify a tolerance
10472
10463
  * level by passing a positive value.
10473
10464
  * @param alpha [Numeric] The new alpha value, either an alpha value or a number between 0 and
10474
10465
  * QuantumRange. The default is TransparentAlpha.
@@ -10576,6 +10567,9 @@ Image_palette_q(VALUE self)
10576
10567
  /**
10577
10568
  * Returns all the properties of an image or image sequence except for the pixels.
10578
10569
  *
10570
+ * @param file_arg [File, String] the file containing image data or file name
10571
+ * @yield [info]
10572
+ * @yieldparam info [Magick::Image::Info]
10579
10573
  * @return [Array<Magick::Image>] an array of 1 or more new image objects (without pixel data)
10580
10574
  * @see Image#read
10581
10575
  */
@@ -10656,11 +10650,11 @@ Image_pixel_color(int argc, VALUE *argv, VALUE self)
10656
10650
  DestroyExceptionInfo(exception);
10657
10651
 
10658
10652
  #if defined(IMAGEMAGICK_7)
10659
- old_color.red = GetPixelRed(image, old_pixel);
10660
- old_color.green = GetPixelGreen(image, old_pixel);
10661
- old_color.blue = GetPixelBlue(image, old_pixel);
10662
- old_color.alpha = GetPixelAlpha(image, old_pixel);
10663
- old_color.black = GetPixelBlack(image, old_pixel);
10653
+ old_color.red = GetPixelRed(image, old_pixel) + 0.5;
10654
+ old_color.green = GetPixelGreen(image, old_pixel) + 0.5;
10655
+ old_color.blue = GetPixelBlue(image, old_pixel) + 0.5;
10656
+ old_color.alpha = GetPixelAlpha(image, old_pixel) + 0.5;
10657
+ old_color.black = GetPixelBlack(image, old_pixel) + 0.5;
10664
10658
  return Pixel_from_PixelPacket(&old_color);
10665
10659
  #else
10666
10660
  old_color = *old_pixel;
@@ -10735,11 +10729,11 @@ Image_pixel_color(int argc, VALUE *argv, VALUE self)
10735
10729
  if (pixel)
10736
10730
  {
10737
10731
  #if defined(IMAGEMAGICK_7)
10738
- old_color.red = GetPixelRed(image, pixel);
10739
- old_color.green = GetPixelGreen(image, pixel);
10740
- old_color.blue = GetPixelBlue(image, pixel);
10741
- old_color.alpha = GetPixelAlpha(image, pixel);
10742
- old_color.black = GetPixelBlack(image, pixel);
10732
+ old_color.red = GetPixelRed(image, pixel) + 0.5;
10733
+ old_color.green = GetPixelGreen(image, pixel) + 0.5;
10734
+ old_color.blue = GetPixelBlue(image, pixel) + 0.5;
10735
+ old_color.alpha = GetPixelAlpha(image, pixel) + 0.5;
10736
+ old_color.black = GetPixelBlack(image, pixel) + 0.5;
10743
10737
 
10744
10738
  SetPixelRed(image, new_color.red, pixel);
10745
10739
  SetPixelGreen(image, new_color.green, pixel);
@@ -10814,7 +10808,7 @@ Image_pixel_interpolation_method_eq(VALUE self, VALUE method)
10814
10808
  * font_weight, gravity, pointsize, stroke, stroke_width, text_antialias, undercolor.
10815
10809
  *
10816
10810
  * @overload polaroid(angle = -5.0)
10817
- * @param angle [Float] The resulting image is rotated by this amount, measured in degrees.
10811
+ * @param angle [Numeric] The resulting image is rotated by this amount, measured in degrees.
10818
10812
  *
10819
10813
  * @overload polaroid(angle = -5.0)
10820
10814
  * If present a block, optional arguments may be specified in a block associated with the method.
@@ -10823,8 +10817,9 @@ Image_pixel_interpolation_method_eq(VALUE self, VALUE method)
10823
10817
  * use options.shadow_color.
10824
10818
  * To specify a different border color (that is, the color of the image border) use options.border_color.
10825
10819
  * Both of these methods accept either a color name or a Pixel argument.
10826
- * @param angle [Float] The resulting image is rotated by this amount, measured in degrees.
10827
- * @yield [Magick::Image::Info]
10820
+ * @param angle [Numeric] The resulting image is rotated by this amount, measured in degrees.
10821
+ * @yield [opt]
10822
+ * @yieldparam opt [Magick::Image::PolaroidOptions]
10828
10823
  *
10829
10824
  * @return [Magick::Image] a new image
10830
10825
  */
@@ -10965,7 +10960,7 @@ Image_preview(VALUE self, VALUE preview)
10965
10960
  * Set the image profile. If "profile" is nil, deletes the profile. Otherwise "profile" must be a
10966
10961
  * string containing the specified profile.
10967
10962
  *
10968
- * @param name [String] The profile name, or "*" to represent all the profiles in the image.
10963
+ * @param name [String, nil] The profile name, or "*" to represent all the profiles in the image.
10969
10964
  * @param profile [String] The profile value, or nil to cause the profile to be removed.
10970
10965
  * @return [Magick::Image] self
10971
10966
  */
@@ -10988,7 +10983,7 @@ Image_profile_bang(VALUE self, VALUE name, VALUE profile)
10988
10983
  /**
10989
10984
  * Get image quality.
10990
10985
  *
10991
- * @return [Numeric] the quality
10986
+ * @return [Integer] the quality
10992
10987
  */
10993
10988
  VALUE
10994
10989
  Image_quality(VALUE self)
@@ -11000,7 +10995,7 @@ Image_quality(VALUE self)
11000
10995
  /**
11001
10996
  * Return the image depth to the nearest Quantum (8, 16, or 32).
11002
10997
  *
11003
- * @return [Numeric] image depth
10998
+ * @return [Integer] image depth
11004
10999
  */
11005
11000
  VALUE
11006
11001
  Image_quantum_depth(VALUE self)
@@ -11025,12 +11020,12 @@ Image_quantum_depth(VALUE self)
11025
11020
  *
11026
11021
  * @overload quantum_operator(quantum_expression_op, rvalue, channel = Magick::AllChannels)
11027
11022
  * @param quantum_expression_op [Magick::QuantumExpressionOperator] the operator
11028
- * @param rvalue [Float] the operation rvalue.
11023
+ * @param rvalue [Numeric] the operation rvalue.
11029
11024
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11030
11025
  *
11031
11026
  * @overload quantum_operator(quantum_expression_op, rvalue, *channels)
11032
11027
  * @param quantum_expression_op [Magick::QuantumExpressionOperator] the operator
11033
- * @param rvalue [Float] the operation rvalue.
11028
+ * @param rvalue [Numeric] the operation rvalue.
11034
11029
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11035
11030
  *
11036
11031
  * @return [Magick::Image] self
@@ -11169,11 +11164,9 @@ Image_quantum_operator(int argc, VALUE *argv, VALUE self)
11169
11164
  case SumQuantumOperator:
11170
11165
  qop = SumEvaluateOperator;
11171
11166
  break;
11172
- #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
11173
11167
  case RootMeanSquareQuantumOperator:
11174
11168
  qop = RootMeanSquareEvaluateOperator;
11175
11169
  break;
11176
- #endif
11177
11170
  }
11178
11171
 
11179
11172
  exception = AcquireExceptionInfo();
@@ -11278,7 +11271,7 @@ Image_quantize(int argc, VALUE *argv, VALUE self)
11278
11271
  /**
11279
11272
  * Applies a radial blur to the image.
11280
11273
  *
11281
- * @param angle_obj [Float] the angle (in degrees)
11274
+ * @param angle_obj [Numeric] the angle (in degrees)
11282
11275
  * @return [Magick::Image] a new image
11283
11276
  */
11284
11277
  VALUE
@@ -11291,15 +11284,9 @@ Image_radial_blur(VALUE self, VALUE angle_obj)
11291
11284
  image = rm_check_destroyed(self);
11292
11285
  exception = AcquireExceptionInfo();
11293
11286
 
11294
- #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
11295
11287
  GVL_STRUCT_TYPE(RotationalBlurImage) args = { image, angle, exception };
11296
11288
  void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImage), &args);
11297
11289
  new_image = reinterpret_cast<decltype(new_image)>(ret);
11298
- #else
11299
- GVL_STRUCT_TYPE(RadialBlurImage) args = { image, angle, exception };
11300
- void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RadialBlurImage), &args);
11301
- new_image = reinterpret_cast<decltype(new_image)>(ret);
11302
- #endif
11303
11290
  rm_check_exception(exception, new_image, DestroyOnError);
11304
11291
  DestroyExceptionInfo(exception);
11305
11292
 
@@ -11311,11 +11298,11 @@ Image_radial_blur(VALUE self, VALUE angle_obj)
11311
11298
  * Applies a radial blur to the selected image channels.
11312
11299
  *
11313
11300
  * @overload radial_blur_channel(angle, channel = Magick::AllChannels)
11314
- * @param angle [Float] the angle (in degrees)
11301
+ * @param angle [Numeric] the angle (in degrees)
11315
11302
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11316
11303
  *
11317
11304
  * @overload radial_blur_channel(angle, *channels)
11318
- * @param angle [Float] the angle (in degrees)
11305
+ * @param angle [Numeric] the angle (in degrees)
11319
11306
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11320
11307
  *
11321
11308
  * @return [Magick::Image] a new image
@@ -11350,12 +11337,9 @@ Image_radial_blur_channel(int argc, VALUE *argv, VALUE self)
11350
11337
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImage), &args);
11351
11338
  CHANGE_RESULT_CHANNEL_MASK(new_image);
11352
11339
  END_CHANNEL_MASK(image);
11353
- #elif defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
11340
+ #else
11354
11341
  GVL_STRUCT_TYPE(RotationalBlurImageChannel) args = { image, channels, angle, exception };
11355
11342
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RotationalBlurImageChannel), &args);
11356
- #else
11357
- GVL_STRUCT_TYPE(RadialBlurImageChannel) args = { image, channels, angle, exception };
11358
- new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(RadialBlurImageChannel), &args);
11359
11343
  #endif
11360
11344
  rm_check_exception(exception, new_image, DestroyOnError);
11361
11345
  DestroyExceptionInfo(exception);
@@ -11369,11 +11353,11 @@ Image_radial_blur_channel(int argc, VALUE *argv, VALUE self)
11369
11353
  * threshold. The result is a low-contrast, two color image.
11370
11354
  *
11371
11355
  * @overload random_threshold_channel(geometry_str, channel = Magick::AllChannels)
11372
- * @param geometry_str [String] A geometry string containing LOWxHIGH thresholds.
11356
+ * @param geometry_str [Magick::Geometry, String] A geometry string containing LOWxHIGH thresholds.
11373
11357
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11374
11358
  *
11375
11359
  * @overload random_threshold_channel(geometry_str, *channels)
11376
- * @param geometry_str [String] A geometry string containing LOWxHIGH thresholds.
11360
+ * @param geometry_str [Magick::Geometry, String] A geometry string containing LOWxHIGH thresholds.
11377
11361
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11378
11362
  *
11379
11363
  * @return [Magick::Image] a new image
@@ -11497,6 +11481,8 @@ Image_raise(int argc, VALUE *argv, VALUE self)
11497
11481
  * Call ReadImage.
11498
11482
  *
11499
11483
  * @param file_arg [File, String] the file containing image data or file name
11484
+ * @yield [info]
11485
+ * @yieldparam info [Magick::Image::Info]
11500
11486
  * @return [Array<Magick::Image>] an array of 1 or more new image objects
11501
11487
  */
11502
11488
  VALUE
@@ -11612,9 +11598,11 @@ rd_image(VALUE klass ATTRIBUTE_UNUSED, VALUE file, gvl_function_t fp)
11612
11598
  #endif
11613
11599
 
11614
11600
  rm_check_exception(exception, images, DestroyOnError);
11615
- rm_set_user_artifact(images, info);
11616
11601
  DestroyExceptionInfo(exception);
11617
11602
 
11603
+ rm_set_user_artifact(images, info);
11604
+ rm_sync_image_options(images, info);
11605
+
11618
11606
  RB_GC_GUARD(info_obj);
11619
11607
 
11620
11608
  return array_from_images(images);
@@ -11626,7 +11614,7 @@ rd_image(VALUE klass ATTRIBUTE_UNUSED, VALUE file, gvl_function_t fp)
11626
11614
  * sized matrices, typically you use a 5x5 for an RGBA image and a 6x6 for CMYKA. Populate the last
11627
11615
  * row with normalized values to translate.
11628
11616
  *
11629
- * @param color_matrix [Array<Float>] An array of Float values representing the recolor matrix.
11617
+ * @param color_matrix [Array<Numeric>] An array of Float values representing the recolor matrix.
11630
11618
  * @return [Magick::Image] a new image
11631
11619
  */
11632
11620
  VALUE
@@ -11704,6 +11692,8 @@ Image_recolor(VALUE self, VALUE color_matrix)
11704
11692
  * Read a Base64-encoded image.
11705
11693
  *
11706
11694
  * @param content [String] the content
11695
+ * @yield [info]
11696
+ * @yieldparam info [Magick::Image::Info]
11707
11697
  * @return [Array<Magick::Image>] an array of new images
11708
11698
  */
11709
11699
  VALUE
@@ -11754,9 +11744,10 @@ Image_read_inline(VALUE self ATTRIBUTE_UNUSED, VALUE content)
11754
11744
  magick_free((void *)blob);
11755
11745
 
11756
11746
  rm_check_exception(exception, images, DestroyOnError);
11757
-
11758
11747
  DestroyExceptionInfo(exception);
11748
+
11759
11749
  rm_set_user_artifact(images, info);
11750
+ rm_sync_image_options(images, info);
11760
11751
 
11761
11752
  RB_GC_GUARD(info_obj);
11762
11753
 
@@ -12058,10 +12049,10 @@ resample(int bang, int argc, VALUE *argv, VALUE self)
12058
12049
  * specifying the resample resolution.
12059
12050
  *
12060
12051
  * @overload resample(x_resolution = 72.0, y_resolution = 72.0, filter = self.filter, blur = self.blur)
12061
- * @param x_resolution [Float] the target horizontal resolution.
12062
- * @param y_resolution [Float] the target vertical resolution.
12052
+ * @param x_resolution [Numeric] the target horizontal resolution.
12053
+ * @param y_resolution [Numeric] the target vertical resolution.
12063
12054
  * @param filter [Magick::FilterType] the filter type
12064
- * @param blur [Float] the blur size
12055
+ * @param blur [Numeric] the blur size
12065
12056
  * @return [Magick] a new image
12066
12057
  * @see Image#resample!
12067
12058
  */
@@ -12078,10 +12069,10 @@ Image_resample(int argc, VALUE *argv, VALUE self)
12078
12069
  * In-place form of {Image#resample}.
12079
12070
  *
12080
12071
  * @overload resample!(x_resolution = 72.0, y_resolution = 72.0, filter = self.filter, blur = self.blur)
12081
- * @param x_resolution [Float] the target horizontal resolution.
12082
- * @param y_resolution [Float] the target vertical resolution.
12072
+ * @param x_resolution [Numeric] the target horizontal resolution.
12073
+ * @param y_resolution [Numeric] the target vertical resolution.
12083
12074
  * @param filter [Magick::FilterType] the filter type
12084
- * @param blur [Float] the blur size
12075
+ * @param blur [Numeric] the blur size
12085
12076
  * @return [Magick] a new image
12086
12077
  * @see Image#resample
12087
12078
  */
@@ -12195,15 +12186,15 @@ resize(int bang, int argc, VALUE *argv, VALUE self)
12195
12186
  * Scale an image to the desired dimensions using the specified filter and blur factor.
12196
12187
  *
12197
12188
  * @overload resize(scale)
12198
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12189
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12199
12190
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12200
12191
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12201
12192
  *
12202
12193
  * @overload resize(cols, rows, filter, blur)
12203
- * @param cols [Float] The desired width
12204
- * @param rows [Float] The desired height.
12194
+ * @param cols [Numeric] The desired width
12195
+ * @param rows [Numeric] The desired height.
12205
12196
  * @param filter [Magick::FilterType] the filter type
12206
- * @param blur [Float] the blur size
12197
+ * @param blur [Numeric] the blur size
12207
12198
  *
12208
12199
  * @return [Magick::Image] a new image
12209
12200
  * @see Image#resize!
@@ -12221,15 +12212,15 @@ Image_resize(int argc, VALUE *argv, VALUE self)
12221
12212
  * In-place form of {Image#resize}.
12222
12213
  *
12223
12214
  * @overload resize!(scale)
12224
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12215
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12225
12216
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12226
12217
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12227
12218
  *
12228
12219
  * @overload resize!(cols, rows, filter, blur)
12229
- * @param cols [Float] The desired width
12230
- * @param rows [Float] The desired height.
12220
+ * @param cols [Numeric] The desired width
12221
+ * @param rows [Numeric] The desired height.
12231
12222
  * @param filter [Magick::FilterType] the filter type
12232
- * @param blur [Float] the blur size
12223
+ * @param blur [Numeric] the blur size
12233
12224
  *
12234
12225
  * @return [Magick::Image] a new image
12235
12226
  * @see Image#resize!
@@ -12342,10 +12333,10 @@ rotate(int bang, int argc, VALUE *argv, VALUE self)
12342
12333
  * black.
12343
12334
  *
12344
12335
  * @overload rotate(degrees)
12345
- * @param degrees [Float] The number of degrees to rotate the image.
12336
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12346
12337
  *
12347
12338
  * @overload rotate(degrees, qualifier)
12348
- * @param degrees [Float] The number of degrees to rotate the image.
12339
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12349
12340
  * @param qualifier [String] If present, either ">" or "<". If ">", rotates the image only if the
12350
12341
  * image's width exceeds its height. If "<" rotates the image only if its height exceeds its
12351
12342
  * width. If this argument is omitted the image is always rotated.
@@ -12366,10 +12357,10 @@ Image_rotate(int argc, VALUE *argv, VALUE self)
12366
12357
  * In-place form of {Image#rotate}.
12367
12358
  *
12368
12359
  * @overload rotate!(degrees)
12369
- * @param degrees [Float] The number of degrees to rotate the image.
12360
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12370
12361
  *
12371
12362
  * @overload rotate!(degrees, qualifier)
12372
- * @param degrees [Float] The number of degrees to rotate the image.
12363
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12373
12364
  * @param qualifier [String] If present, either ">" or "<". If ">", rotates the image only if the
12374
12365
  * image's width exceeds its height. If "<" rotates the image only if its height exceeds its
12375
12366
  * width. If this argument is omitted the image is always rotated.
@@ -12388,7 +12379,7 @@ Image_rotate_bang(int argc, VALUE *argv, VALUE self)
12388
12379
  /**
12389
12380
  * Return image rows.
12390
12381
  *
12391
- * @return [Numeric] the image rows
12382
+ * @return [Integer] the image rows
12392
12383
  */
12393
12384
  VALUE
12394
12385
  Image_rows(VALUE self)
@@ -12402,7 +12393,7 @@ Image_rows(VALUE self)
12402
12393
  * method does not introduce any additional color into the scaled image.
12403
12394
  *
12404
12395
  * @overload sample(scale)
12405
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12396
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12406
12397
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12407
12398
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12408
12399
  *
@@ -12426,7 +12417,7 @@ Image_sample(int argc, VALUE *argv, VALUE self)
12426
12417
  * In-place form of {Image#sample}.
12427
12418
  *
12428
12419
  * @overload sample!(scale)
12429
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12420
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12430
12421
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12431
12422
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12432
12423
  *
@@ -12578,7 +12569,7 @@ scale(int bang, int argc, VALUE *argv, VALUE self, gvl_function_t fp)
12578
12569
  * Return the scene number assigned to the image the last time the image was written to a
12579
12570
  * multi-image image file.
12580
12571
  *
12581
- * @return [Numeric] the image scene
12572
+ * @return [Integer] the image scene
12582
12573
  */
12583
12574
  VALUE
12584
12575
  Image_scene(VALUE self)
@@ -12591,16 +12582,16 @@ Image_scene(VALUE self)
12591
12582
  * Selectively blur pixels within a contrast threshold.
12592
12583
  *
12593
12584
  * @overload selective_blur_channel(radius, sigma, threshold, channel = Magick::AllChannels)
12594
- * @param radius [Float] the radius value
12595
- * @param sigma [Float] the sigma value
12596
- * @param threshold [Float, String] Either a number between 0.0 and 1.0 or a string in the form
12585
+ * @param radius [Numeric] the radius value
12586
+ * @param sigma [Numeric] the sigma value
12587
+ * @param threshold [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form
12597
12588
  * "NN%"
12598
12589
  * @param channel [Magick::ChannelType] a ChannelType arguments.
12599
12590
  *
12600
12591
  * @overload selective_blur_channel(radius, sigma, threshold, *channels)
12601
- * @param radius [Float] the radius value
12602
- * @param sigma [Float] the sigma value
12603
- * @param threshold [Float, String] Either a number between 0.0 and 1.0 or a string in the form
12592
+ * @param radius [Numeric] the radius value
12593
+ * @param sigma [Numeric] the sigma value
12594
+ * @param threshold [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form
12604
12595
  * "NN%"
12605
12596
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
12606
12597
  *
@@ -12739,7 +12730,7 @@ Image_separate(int argc, VALUE *argv, VALUE self)
12739
12730
  * sepia toning.
12740
12731
  *
12741
12732
  * @overload sepiatone(threshold = Magick::QuantumRange)
12742
- * @param threshold [Float] Threshold ranges from 0 to QuantumRange and is a measure of the extent
12733
+ * @param threshold [Numeric] Threshold ranges from 0 to QuantumRange and is a measure of the extent
12743
12734
  * of the sepia toning. A threshold of 80% is a good starting point for a reasonable tone.
12744
12735
  * @return [Magick::Image] a new image
12745
12736
  */
@@ -12781,9 +12772,9 @@ Image_sepiatone(int argc, VALUE *argv, VALUE self)
12781
12772
  * @param colorspace [Magick::ColorspaceType] A ColorspaceType value. Empirical evidence suggests
12782
12773
  * that distances in YUV or YIQ correspond to perceptual color differences more closely than do
12783
12774
  * distances in RGB space. The image is then returned to RGB colorspace after color reduction.
12784
- * @param cluster_threshold [Float] The number of pixels in each cluster must exceed the the
12775
+ * @param cluster_threshold [Numeric] The number of pixels in each cluster must exceed the the
12785
12776
  * cluster threshold to be considered valid.
12786
- * @param smoothing_threshold [Float] The smoothing threshold eliminates noise in the second
12777
+ * @param smoothing_threshold [Numeric] The smoothing threshold eliminates noise in the second
12787
12778
  * derivative of the histogram. As the value is increased, you can expect a smoother second
12788
12779
  * derivative.
12789
12780
  * @param verbose [Boolean] If true, segment prints detailed information about the identified classes.
@@ -12844,10 +12835,12 @@ Image_segment(int argc, VALUE *argv, VALUE self)
12844
12835
  * and the associated value is the property value.
12845
12836
  *
12846
12837
  * @overload properties
12847
- * @return [Hash] the properties
12838
+ * @return [Hash<String, String>] the properties
12848
12839
  *
12849
12840
  * @overload properties
12850
- * @yield [Magick::Image::Info]
12841
+ * @yield [property, value]
12842
+ * @yieldparam property [String] property key
12843
+ * @yieldparam value [String] property value
12851
12844
  * @return [Magick::Image] self
12852
12845
  */
12853
12846
  VALUE
@@ -12934,9 +12927,9 @@ Image_properties(VALUE self)
12934
12927
  *
12935
12928
  * @overload shade(shading = false, azimuth = 30.0, elevation = 30.0)
12936
12929
  * @param shading [Boolean] If true, shade shades the intensity of each pixel.
12937
- * @param azimuth [Float] The light source direction. The azimuth is measured in degrees. 0 is at
12930
+ * @param azimuth [Numeric] The light source direction. The azimuth is measured in degrees. 0 is at
12938
12931
  * 9 o'clock. Increasing values move the light source counter-clockwise.
12939
- * @param elevation [Float] The light source direction. The azimuth is measured in degrees. 0 is
12932
+ * @param elevation [Numeric] The light source direction. The azimuth is measured in degrees. 0 is
12940
12933
  * at 9 o'clock. Increasing values move the light source counter-clockwise.
12941
12934
  * @return [Magick::Image] a new image
12942
12935
  */
@@ -12981,10 +12974,10 @@ Image_shade(int argc, VALUE *argv, VALUE self)
12981
12974
  * @overload Image#shadow(x_offset = 4, y_offset = 4, sigma = 4.0, alpha = 1.0)
12982
12975
  * @param x_offset [Numeric] The shadow x-offset
12983
12976
  * @param y_offset [Numeric] The shadow y-offset
12984
- * @param sigma [Float] The standard deviation of the Gaussian operator used to produce the
12977
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator used to produce the
12985
12978
  * shadow. The higher the number, the "blurrier" the shadow, but the longer it takes to produce
12986
12979
  * the shadow. Must be > 0.0.
12987
- * @param alpha [String, Float] The percent alpha of the shadow. The argument may be a
12980
+ * @param alpha [Numeric, String] The percent alpha of the shadow. The argument may be a
12988
12981
  * floating-point numeric value or a string in the form "NN%".
12989
12982
  * @return [Magick::Image] a new image
12990
12983
  */
@@ -13037,8 +13030,8 @@ Image_shadow(int argc, VALUE *argv, VALUE self)
13037
13030
  * Sharpen an image.
13038
13031
  *
13039
13032
  * @overload sharpen(radius = 0.0, sigma = 1.0)
13040
- * @param radius [Float] The radius of the Gaussian operator.
13041
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
13033
+ * @param radius [Numeric] The radius of the Gaussian operator.
13034
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13042
13035
  * @return [Magick::Image] a new image
13043
13036
  */
13044
13037
  VALUE
@@ -13052,13 +13045,13 @@ Image_sharpen(int argc, VALUE *argv, VALUE self)
13052
13045
  * Sharpen image on a channel.
13053
13046
  *
13054
13047
  * @overload sharpen_channel(radius = 0.0, sigma = 1.0, channel = Magick::AllChannels)
13055
- * @param radius [Float] The radius of the Gaussian operator.
13056
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
13048
+ * @param radius [Numeric] The radius of the Gaussian operator.
13049
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13057
13050
  * @param channel [Magick::ChannelType] a ChannelType arguments.
13058
13051
  *
13059
13052
  * @overload sharpen_channel(radius = 0.0, sigma = 1.0, *channels)
13060
- * @param radius [Float] The radius of the Gaussian operator.
13061
- * @param sigma [Float] The sigma (standard deviation) of the Gaussian operator.
13053
+ * @param radius [Numeric] The radius of the Gaussian operator.
13054
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13062
13055
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
13063
13056
  *
13064
13057
  * @return [Magick::Image] a new image
@@ -13151,8 +13144,8 @@ Image_shave_bang(VALUE self, VALUE width, VALUE height)
13151
13144
  * measured relative to the X axis. Empty triangles left over from shearing the image are filled
13152
13145
  * with the background color.
13153
13146
  *
13154
- * @param x_shear [Float] the x shear (in degrees)
13155
- * @param y_shear [Float] the y shear (in degrees)
13147
+ * @param x_shear [Numeric] the x shear (in degrees)
13148
+ * @param y_shear [Numeric] the y shear (in degrees)
13156
13149
  * @return [Magick::Image] a new image
13157
13150
  */
13158
13151
  VALUE
@@ -13181,10 +13174,9 @@ Image_shear(VALUE self, VALUE x_shear, VALUE y_shear)
13181
13174
  * saturating highlights or shadows.
13182
13175
  *
13183
13176
  * @overload sigmoidal_contrast_channel(contrast = 3.0, midpoint = 50.0, sharpen = false, channel = Magick::AllChannels)
13184
-
13185
- * @param contrast [Float] indicates how much to increase the contrast
13177
+ * @param contrast [Numeric] indicates how much to increase the contrast
13186
13178
  * (0 is none; 3 is typical; 20 is pushing it)
13187
- * @param midpoint [Float] indicates where midtones fall in the resultant image (0 is white; 50%
13179
+ * @param midpoint [Numeric] indicates where midtones fall in the resultant image (0 is white; 50%
13188
13180
  * is middle-gray; 100% is black). Note that "50%" means "50% of the quantum range." This argument
13189
13181
  * is a number between 0 and QuantumRange. To specify "50%" use QuantumRange * 0.50.
13190
13182
  * @param sharpen [Boolean] Set sharpen to true to increase the image contrast otherwise the
@@ -13192,9 +13184,9 @@ Image_shear(VALUE self, VALUE x_shear, VALUE y_shear)
13192
13184
  * @param channel [Magick::ChannelType] a ChannelType arguments.
13193
13185
  *
13194
13186
  * @overload sigmoidal_contrast_channel(contrast = 3.0, midpoint = 50.0, sharpen = false, *channels)
13195
- * @param contrast [Float] indicates how much to increase the contrast
13187
+ * @param contrast [Numeric] indicates how much to increase the contrast
13196
13188
  * (0 is none; 3 is typical; 20 is pushing it)
13197
- * @param midpoint [Float] indicates where midtones fall in the resultant image (0 is white; 50%
13189
+ * @param midpoint [Numeric] indicates where midtones fall in the resultant image (0 is white; 50%
13198
13190
  * is middle-gray; 100% is black). Note that "50%" means "50% of the quantum range." This argument
13199
13191
  * is a number between 0 and QuantumRange. To specify "50%" use QuantumRange * 0.50.
13200
13192
  * @param sharpen [Boolean] Set sharpen to true to increase the image contrast otherwise the
@@ -13294,9 +13286,9 @@ Image_signature(VALUE self)
13294
13286
  * Simulates a pencil sketch. For best results start with a grayscale image.
13295
13287
  *
13296
13288
  * @overload sketch(radius = 0.0, sigma = 1.0, angle = 0.0)
13297
- * @param radius [Float] The radius
13298
- * @param sigma [Float] The standard deviation
13299
- * @param angle [Float] The angle (in degrees)
13289
+ * @param radius [Numeric] The radius
13290
+ * @param sigma [Numeric] The standard deviation
13291
+ * @param angle [Numeric] The angle (in degrees)
13300
13292
  * @return [Magick::Image] a new image
13301
13293
  * @see motion_blur
13302
13294
  */
@@ -13314,7 +13306,7 @@ Image_sketch(int argc, VALUE *argv, VALUE self)
13314
13306
  * QuantumRange and is a measure of the extent of the solarization.
13315
13307
  *
13316
13308
  * @overload solarize(threshold = 50.0)
13317
- * @param threshold [Float] Ranges from 0 to QuantumRange and is a measure of the extent of the
13309
+ * @param threshold [Numeric] Ranges from 0 to QuantumRange and is a measure of the extent of the
13318
13310
  * solarization.
13319
13311
  * @return a new image
13320
13312
  */
@@ -13657,7 +13649,7 @@ Image_splice(int argc, VALUE *argv, VALUE self)
13657
13649
  * Randomly displace each pixel in a block defined by "radius".
13658
13650
  *
13659
13651
  * @overload spread(radius = 3.0)
13660
- * @param radius [Float] The radius
13652
+ * @param radius [Numeric] The radius
13661
13653
  * @return [Magick::Image] a new image
13662
13654
  */
13663
13655
  VALUE
@@ -14031,7 +14023,7 @@ Image_strip_bang(VALUE self)
14031
14023
  * through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to
14032
14024
  * 360.
14033
14025
  *
14034
- * @param degrees_obj [Float] the degrees
14026
+ * @param degrees_obj [Numeric] the degrees
14035
14027
  * @return [Magick::Image] a new image
14036
14028
  */
14037
14029
  VALUE
@@ -14164,7 +14156,7 @@ Image_texture_flood_fill(VALUE self, VALUE color_obj, VALUE texture_obj,
14164
14156
  * Change the value of individual pixels based on the intensity of each pixel compared to
14165
14157
  * threshold. The result is a high-contrast, two color image.
14166
14158
  *
14167
- * @param threshold_obj [Float] the threshold
14159
+ * @param threshold_obj [Numeric] the threshold
14168
14160
  * @return [Magick::Image] a new image
14169
14161
  */
14170
14162
  VALUE
@@ -14353,11 +14345,12 @@ thumbnail(int bang, int argc, VALUE *argv, VALUE self)
14353
14345
  * image is < 10% of the original.
14354
14346
  *
14355
14347
  * @overload thumbnail(scale)
14356
- * @param scale [Float] The desired size represented as a floating-point number. For example, to
14348
+ * @param scale [Numeric] The desired size represented as a floating-point number. For example, to
14357
14349
  * make a thumbnail that is 9.5% of the size of the original image, use 0.095.
14358
14350
  *
14359
14351
  * @overload thumbnail(cols, rows)
14360
14352
  * @param cols [Numeric] The desired width in pixels.
14353
+ * @param rows [Numeric] The desired height.
14361
14354
  *
14362
14355
  * @return [Magick::Image] a new image
14363
14356
  * @see Image#thumbnail!
@@ -14375,11 +14368,12 @@ Image_thumbnail(int argc, VALUE *argv, VALUE self)
14375
14368
  * image is < 10% of the original. In-place form of {Image#thumbnail}.
14376
14369
  *
14377
14370
  * @overload thumbnail!(scale)
14378
- * @param scale [Float] The desired size represented as a floating-point number. For example, to
14371
+ * @param scale [Numeric] The desired size represented as a floating-point number. For example, to
14379
14372
  * make a thumbnail that is 9.5% of the size of the original image, use 0.095.
14380
14373
  *
14381
14374
  * @overload thumbnail!(cols, rows)
14382
14375
  * @param cols [Numeric] The desired width in pixels.
14376
+ * @param rows [Numeric] The desired height.
14383
14377
  *
14384
14378
  * @return [Magick::Image] a new image
14385
14379
  * @see Image#thumbnail
@@ -14397,7 +14391,7 @@ Image_thumbnail_bang(int argc, VALUE *argv, VALUE self)
14397
14391
  * This attribute is used in conjunction with the delay attribute to establish the amount of time
14398
14392
  * that must elapse between frames in an animation.The default is 100.
14399
14393
  *
14400
- * @return [Numeric] ticks per second
14394
+ * @return [Integer] ticks per second
14401
14395
  */
14402
14396
  VALUE
14403
14397
  Image_ticks_per_second(VALUE self)
@@ -14431,10 +14425,10 @@ Image_ticks_per_second_eq(VALUE self, VALUE tps)
14431
14425
  *
14432
14426
  * @overload tint(tint, red_alpha, green_alpha = red_alpha, blue_alpha = red_alpha, alpha_alpha = 1.0)
14433
14427
  * @param tint [Magick::Pixel, String] the color name
14434
- * @param red_alpha [Float] the red value
14435
- * @param green_alpha [Float] the green value
14436
- * @param blue_alpha [Float] the blue value
14437
- * @param alpha_alpha [Float] the alpha value
14428
+ * @param red_alpha [Numeric] the red value
14429
+ * @param green_alpha [Numeric] the green value
14430
+ * @param blue_alpha [Numeric] the blue value
14431
+ * @param alpha_alpha [Numeric] the alpha value
14438
14432
  * @return a new image
14439
14433
  */
14440
14434
  VALUE
@@ -14508,6 +14502,8 @@ Image_tint(int argc, VALUE *argv, VALUE self)
14508
14502
  * - The magick member of the Image structure determines the format of the
14509
14503
  * returned blob (GIG, JPEG, PNG, etc.)
14510
14504
  *
14505
+ * @yield [info]
14506
+ * @yieldparam info [Magick::Image::Info]
14511
14507
  * @return [String] the blob
14512
14508
  * @see Image#from_blob
14513
14509
  */
@@ -14638,7 +14634,7 @@ Image_to_color(VALUE self, VALUE pixel_arg)
14638
14634
  /**
14639
14635
  * Alias for {Image#number_colors}.
14640
14636
  *
14641
- * @return [Numeric] number of unique colors
14637
+ * @return [Integer] number of unique colors
14642
14638
  * @see Image#number_colors
14643
14639
  */
14644
14640
  VALUE
@@ -14871,7 +14867,7 @@ Image_transpose(VALUE self)
14871
14867
  * rotating them by 90 degrees.
14872
14868
  * In-place form of {Image#transpose}.
14873
14869
  *
14874
- * @return [Magick::Image] a new image
14870
+ * @return [Magick::Image] self
14875
14871
  * @see Image#transpose
14876
14872
  */
14877
14873
  VALUE
@@ -14901,7 +14897,7 @@ Image_transverse(VALUE self)
14901
14897
  * them by 270 degrees
14902
14898
  * In-place form of {Image#transverse}.
14903
14899
  *
14904
- * @return [Magick::Image] a new image
14900
+ * @return [Magick::Image] self
14905
14901
  * @see Image#transverse
14906
14902
  */
14907
14903
  VALUE
@@ -15001,7 +14997,7 @@ Image_trim(int argc, VALUE *argv, VALUE self)
15001
14997
  * image. This may cause the image to appear to be surrounded by blank or black space when viewed
15002
14998
  * with an external viewer. This only occurs when the image is saved in a format (such as GIF)
15003
14999
  * that saves offset information. To reset the offset data, use true as the argument to trim.
15004
- * @return [Magick::Image] a new image
15000
+ * @return [Magick::Image] self
15005
15001
  * @see Image#trim
15006
15002
  */
15007
15003
  VALUE
@@ -15278,11 +15274,11 @@ unsharp_mask_args(int argc, VALUE *argv, double *radius, double *sigma,
15278
15274
  * apply the diffence amount.
15279
15275
  *
15280
15276
  * @overload unsharp_mask(radius = 0.0, sigma = 1.0, amount = 1.0, threshold = 0.05)
15281
- * @param radius [Float] The radius of the Gaussian operator.
15282
- * @param sigma [Float] The standard deviation of the Gaussian operator.
15283
- * @param amount [Float] The percentage of the blurred image to be added to the receiver,
15277
+ * @param radius [Numeric] The radius of the Gaussian operator.
15278
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15279
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15284
15280
  * specified as a fraction between 0 and 1.0
15285
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15281
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15286
15282
  * between 0 and 1.0
15287
15283
  * @return [Magick::Image] a new image
15288
15284
  */
@@ -15315,20 +15311,20 @@ Image_unsharp_mask(int argc, VALUE *argv, VALUE self)
15315
15311
  * Only the specified channels are sharpened.
15316
15312
  *
15317
15313
  * @overload unsharp_mask(radius = 0.0, sigma = 1.0, amount = 1.0, threshold = 0.05, channel = Magick::AllChannels)
15318
- * @param radius [Float] The radius of the Gaussian operator.
15319
- * @param sigma [Float] The standard deviation of the Gaussian operator.
15320
- * @param amount [Float] The percentage of the blurred image to be added to the receiver,
15314
+ * @param radius [Numeric] The radius of the Gaussian operator.
15315
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15316
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15321
15317
  * specified as a fraction between 0 and 1.0
15322
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15318
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15323
15319
  * between 0 and 1.0
15324
15320
  * @param channel [Magick::ChannelType] a ChannelType arguments.
15325
15321
  *
15326
15322
  * @overload unsharp_mask(radius = 0.0, sigma = 1.0, amount = 1.0, threshold = 0.05, *channels)
15327
- * @param radius [Float] The radius of the Gaussian operator.
15328
- * @param sigma [Float] The standard deviation of the Gaussian operator.
15329
- * @param amount [Float] The percentage of the blurred image to be added to the receiver,
15323
+ * @param radius [Numeric] The radius of the Gaussian operator.
15324
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15325
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15330
15326
  * specified as a fraction between 0 and 1.0
15331
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15327
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15332
15328
  * between 0 and 1.0
15333
15329
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
15334
15330
  *
@@ -15373,10 +15369,10 @@ Image_unsharp_mask_channel(int argc, VALUE *argv, VALUE self)
15373
15369
  * Soften the edges of an image.
15374
15370
  *
15375
15371
  * @overload vignette(horz_radius = self.columns*0.1+0.5, vert_radius = self.rows*0.1+0.5, radius = 0.0, sigma = 1.0)
15376
- * @param horz_radius [Float] Influences the amount of background color in the horizontal dimension.
15377
- * @param vert_radius [Float] Influences the amount of background color in the vertical dimension.
15378
- * @param radius [Float] Controls the amount of blurring.
15379
- * @param sigma [Float] Controls the amount of blurring.
15372
+ * @param horz_radius [Numeric] Influences the amount of background color in the horizontal dimension.
15373
+ * @param vert_radius [Numeric] Influences the amount of background color in the vertical dimension.
15374
+ * @param radius [Numeric] Controls the amount of blurring.
15375
+ * @param sigma [Numeric] Controls the amount of blurring.
15380
15376
  * @return [Magick::Image] a new image
15381
15377
  */
15382
15378
  VALUE
@@ -15478,11 +15474,11 @@ Image_virtual_pixel_method_eq(VALUE self, VALUE method)
15478
15474
  * @overload watermark(mark, brightness = 1.0, saturation = 1.0, x_off = 0, y_off = 0)
15479
15475
  * @param mark [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
15480
15476
  * imagelist, uses the current image.
15481
- * @param brightness [Float] The fraction of the lightness component of the watermark pixels to be
15477
+ * @param brightness [Numeric, String] The fraction of the lightness component of the watermark pixels to be
15482
15478
  * composited onto the target image. Must be a non-negative number or a string in the form
15483
15479
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15484
15480
  * 25%. The default is 100%.
15485
- * @param saturation [Float] The fraction of the saturation component of the watermark pixels to
15481
+ * @param saturation [Numeric, String] The fraction of the saturation component of the watermark pixels to
15486
15482
  * be composited onto the target image. Must be a non-negative number or a string in the form
15487
15483
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15488
15484
  * 25%. The default is 100%.
@@ -15493,11 +15489,11 @@ Image_virtual_pixel_method_eq(VALUE self, VALUE method)
15493
15489
  * @overload watermark(mark, brightness, saturation, gravity, x_off = 0, y_off = 0)
15494
15490
  * @param mark [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
15495
15491
  * imagelist, uses the current image.
15496
- * @param brightness [Float] The fraction of the lightness component of the watermark pixels to be
15492
+ * @param brightness [Numeric, String] The fraction of the lightness component of the watermark pixels to be
15497
15493
  * composited onto the target image. Must be a non-negative number or a string in the form
15498
15494
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15499
15495
  * 25%. The default is 100%.
15500
- * @param saturation [Float] The fraction of the saturation component of the watermark pixels to
15496
+ * @param saturation [Numeric, String] The fraction of the saturation component of the watermark pixels to
15501
15497
  * be composited onto the target image. Must be a non-negative number or a string in the form
15502
15498
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15503
15499
  * 25%. The default is 100%.
@@ -15525,7 +15521,7 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15525
15521
 
15526
15522
  if (argc < 1)
15527
15523
  {
15528
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 to 6)", argc);
15524
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
15529
15525
  }
15530
15526
 
15531
15527
  ovly = rm_cur_image(argv[0]);
@@ -15547,7 +15543,7 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15547
15543
  case 1:
15548
15544
  break;
15549
15545
  default:
15550
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 to 6)", argc);
15546
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
15551
15547
  break;
15552
15548
  }
15553
15549
 
@@ -15580,8 +15576,8 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15580
15576
  * amplitude and wavelength is specified by the given parameters.
15581
15577
  *
15582
15578
  * @overload wave(amplitude = 25.0, wavelength = 150.0)
15583
- * @param amplitude [Float] the amplitude
15584
- * @param wavelength [Float] the wave length
15579
+ * @param amplitude [Numeric] the amplitude
15580
+ * @param wavelength [Numeric] the wave length
15585
15581
  * @return [Magick::Image] a new image
15586
15582
  */
15587
15583
  VALUE
@@ -15625,11 +15621,11 @@ Image_wave(int argc, VALUE *argv, VALUE self)
15625
15621
  * appears in the reflection.
15626
15622
  *
15627
15623
  * @overload wet_floor(initial = 0.5, rate = 1.0)
15628
- * @param initial [Float] A value between 0.0 and 1.0 that specifies the initial percentage of
15624
+ * @param initial [Numeric] A value between 0.0 and 1.0 that specifies the initial percentage of
15629
15625
  * transparency. Higher values cause the top of the reflection to be more transparent, lower
15630
15626
  * values less transparent. The default is 0.5, which means that the top of the reflection is 50%
15631
15627
  * transparent.
15632
- * @param rate [Float] A non-negative value that specifies how rapidly the reflection transitions
15628
+ * @param rate [Numeric] A non-negative value that specifies how rapidly the reflection transitions
15633
15629
  * from the initial level of transparency to entirely transparent. The default value is 1.0, which
15634
15630
  * means that the transition occurs in 1/3 the image height. Values greater than 1.0 speed up the
15635
15631
  * transition (the reflection will have fewer rows), values lower than 1.0 slow down the
@@ -15811,9 +15807,9 @@ Image_wet_floor(int argc, VALUE *argv, VALUE self)
15811
15807
  * unchanged.
15812
15808
  *
15813
15809
  * @overload white_threshold(red, green, blue, alpha: alpha)
15814
- * @param red [Float] the number for red channel
15815
- * @param green [Float] the number for green channel
15816
- * @param blue [Float] the number for blue channel
15810
+ * @param red [Numeric] the number for red channel
15811
+ * @param green [Numeric] the number for green channel
15812
+ * @param blue [Numeric] the number for blue channel
15817
15813
  * @param alpha [Numeric] the number for alpha channel
15818
15814
  * @return [Magick::Image] a new image
15819
15815
  * @see Image#black_threshold
@@ -15923,6 +15919,8 @@ void add_format_prefix(Info *info, VALUE file)
15923
15919
  * Write the image to the file.
15924
15920
  *
15925
15921
  * @param file [File, String] the file
15922
+ * @yield [info]
15923
+ * @yieldparam info [Magick::Image::Info]
15926
15924
  * @return [Magick::Image] self
15927
15925
  */
15928
15926
  VALUE
@@ -15997,8 +15995,8 @@ Image_x_resolution(VALUE self)
15997
15995
  /**
15998
15996
  * Set the horizontal resolution of the image.
15999
15997
  *
16000
- * @param val [Float] the resolution
16001
- * @return [Float] the given resolution
15998
+ * @param val [Numeric] the resolution
15999
+ * @return [Numeric] the given resolution
16002
16000
  */
16003
16001
  VALUE
16004
16002
  Image_x_resolution_eq(VALUE self, VALUE val)
@@ -16020,8 +16018,8 @@ Image_y_resolution(VALUE self)
16020
16018
  /**
16021
16019
  * Set the vertical resolution of the image.
16022
16020
  *
16023
- * @param val [Float] the resolution
16024
- * @return [Float] the given resolution
16021
+ * @param val [Numeric] the resolution
16022
+ * @return [Numeric] the given resolution
16025
16023
  */
16026
16024
  VALUE
16027
16025
  Image_y_resolution_eq(VALUE self, VALUE val)
@@ -16043,8 +16041,8 @@ Image_x_resolution(VALUE self)
16043
16041
  /**
16044
16042
  * Set the horizontal resolution of the image.
16045
16043
  *
16046
- * @param val [Float] the resolution
16047
- * @return [Float] the given resolution
16044
+ * @param val [Numeric] the resolution
16045
+ * @return [Numeric] the given resolution
16048
16046
  */
16049
16047
  VALUE
16050
16048
  Image_x_resolution_eq(VALUE self, VALUE val)
@@ -16066,8 +16064,8 @@ Image_y_resolution(VALUE self)
16066
16064
  /**
16067
16065
  * Set the vertical resolution of the image.
16068
16066
  *
16069
- * @param val [Float] the resolution
16070
- * @return [Float] the given resolution
16067
+ * @param val [Numeric] the resolution
16068
+ * @return [Numeric] the given resolution
16071
16069
  */
16072
16070
  VALUE
16073
16071
  Image_y_resolution_eq(VALUE self, VALUE val)