rmagick 5.4.3 → 5.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +15 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop_todo.yml +16 -8
  5. data/CHANGELOG.md +50 -0
  6. data/Gemfile +20 -0
  7. data/Rakefile +11 -0
  8. data/before_install_osx.sh +1 -1
  9. data/ext/RMagick/extconf.rb +27 -11
  10. data/ext/RMagick/rmagick.h +3 -1
  11. data/ext/RMagick/rmdraw.cpp +10 -10
  12. data/ext/RMagick/rmfill.cpp +4 -4
  13. data/ext/RMagick/rmilist.cpp +10 -2
  14. data/ext/RMagick/rmimage.cpp +321 -294
  15. data/ext/RMagick/rminfo.cpp +22 -21
  16. data/ext/RMagick/rmkinfo.cpp +5 -18
  17. data/ext/RMagick/rmmain.cpp +30 -64
  18. data/ext/RMagick/rmmontage.cpp +5 -5
  19. data/ext/RMagick/rmpixel.cpp +9 -7
  20. data/ext/RMagick/rmutil.cpp +31 -71
  21. data/lib/rmagick/version.rb +1 -1
  22. data/lib/rmagick_internal.rb +67 -65
  23. data/lib/rvg/embellishable.rb +6 -2
  24. data/lib/rvg/misc.rb +7 -7
  25. data/lib/rvg/rvg.rb +2 -0
  26. data/lib/rvg/stretchable.rb +2 -2
  27. data/lib/rvg/transformable.rb +1 -1
  28. data/rmagick.gemspec +1 -13
  29. data/sig/rmagick/_draw_common_methods.rbs +64 -0
  30. data/sig/rmagick/_image_common_methods.rbs +389 -0
  31. data/sig/rmagick/draw.rbs +38 -0
  32. data/sig/rmagick/draw_attribute.rbs +28 -0
  33. data/sig/rmagick/enum.rbs +814 -0
  34. data/sig/rmagick/error.rbs +11 -0
  35. data/sig/rmagick/fill.rbs +21 -0
  36. data/sig/rmagick/geometry.rbs +14 -0
  37. data/sig/rmagick/image.rbs +194 -0
  38. data/sig/rmagick/image_list.rbs +181 -0
  39. data/sig/rmagick/iptc.rbs +101 -0
  40. data/sig/rmagick/kernel_info.rbs +12 -0
  41. data/sig/rmagick/optional_method_arguments.rbs +10 -0
  42. data/sig/rmagick/pixel.rbs +46 -0
  43. data/sig/rmagick/struct.rbs +90 -0
  44. data/sig/rmagick.rbs +43 -0
  45. data/sig/rvg/clippath.rbs +34 -0
  46. data/sig/rvg/container.rbs +78 -0
  47. data/sig/rvg/deep_equal.rbs +48 -0
  48. data/sig/rvg/describable.rbs +30 -0
  49. data/sig/rvg/embellishable.rbs +226 -0
  50. data/sig/rvg/misc.rbs +145 -0
  51. data/sig/rvg/paint.rbs +55 -0
  52. data/sig/rvg/pathdata.rbs +77 -0
  53. data/sig/rvg/rvg.rbs +125 -0
  54. data/sig/rvg/stretchable.rbs +56 -0
  55. data/sig/rvg/stylable.rbs +66 -0
  56. data/sig/rvg/text.rbs +118 -0
  57. data/sig/rvg/transformable.rbs +59 -0
  58. data/sig/rvg/units.rbs +33 -0
  59. metadata +32 -128
@@ -449,8 +449,8 @@ adaptive_channel_method(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
449
449
  * than sigma. Use a radius of 0 and adaptive_blur selects a suitable radius for you.
450
450
  *
451
451
  * @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.
452
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
453
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
454
454
  * @return [Magick::Image] a new image
455
455
  */
456
456
  VALUE
@@ -464,13 +464,13 @@ Image_adaptive_blur(int argc, VALUE *argv, VALUE self)
464
464
  * The same as {Magick::Image#adaptive_blur} except only the specified channels are blurred.
465
465
  *
466
466
  * @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.
467
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
468
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
469
469
  * @param channel [Magick::ChannelType] a ChannelType arguments.
470
470
  *
471
471
  * @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.
472
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
473
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
474
474
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
475
475
  *
476
476
  * @return [Magick::Image] a new image
@@ -490,7 +490,7 @@ Image_adaptive_blur_channel(int argc, VALUE *argv, VALUE self)
490
490
  * Resizes the image with data dependent triangulation.
491
491
  *
492
492
  * @overload adaptive_resize(scale_val)
493
- * @param scale_val [Float] You can use this argument instead of specifying the desired width and
493
+ * @param scale_val [Numeric] You can use this argument instead of specifying the desired width and
494
494
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
495
495
  * the receiver.
496
496
  *
@@ -557,8 +557,8 @@ Image_adaptive_resize(int argc, VALUE *argv, VALUE self)
557
557
  * Use a radius of 0 and adaptive_sharpen selects a suitable radius for you.
558
558
  *
559
559
  * @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.
560
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
561
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
562
562
  * @return [Magick::Image] a new image
563
563
  */
564
564
  VALUE
@@ -572,13 +572,13 @@ Image_adaptive_sharpen(int argc, VALUE *argv, VALUE self)
572
572
  * The same as {Magick::Image#adaptive_sharpen} except only the specified channels are sharpened.
573
573
  *
574
574
  * @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.
575
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
576
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
577
577
  * @param channel [Magick::ChannelType] a ChannelType arguments.
578
578
  *
579
579
  * @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.
580
+ * @param radius [Numeric] The radius of the Gaussian in pixels, not counting the center pixel.
581
+ * @param sigma [Numeric] The standard deviation of the Laplacian, in pixels.
582
582
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
583
583
  *
584
584
  * @return [Magick::Image] a new image
@@ -646,7 +646,7 @@ Image_adaptive_threshold(int argc, VALUE *argv, VALUE self)
646
646
  * The areas of the destination image that are masked by white pixels will be modified by the
647
647
  * {Magick::Image#composite} method, while areas masked by black pixels are unchanged.
648
648
  *
649
- * @param mask [Magick::Image] the composite mask
649
+ * @param mask [Magick::Image, Magick::ImageList] the composite mask
650
650
  * @see Image#mask
651
651
  * @see Image#delete_compose_mask
652
652
  */
@@ -660,7 +660,7 @@ Image_add_compose_mask(VALUE self, VALUE mask)
660
660
  #endif
661
661
 
662
662
  image = rm_check_frozen(self);
663
- mask_image = rm_check_destroyed(mask);
663
+ mask_image = rm_check_destroyed(rm_cur_image(mask));
664
664
  if (image->columns != mask_image->columns || image->rows != mask_image->rows)
665
665
  {
666
666
  rb_raise(rb_eArgError, "mask must be the same size as image");
@@ -972,12 +972,12 @@ Image_affine_transform(VALUE self, VALUE affine)
972
972
  * "Comment", "Signature", and in some cases "EXIF".
973
973
  *
974
974
  * @param key_arg [String, Symbol] the key to get
975
- * @return [String] property value or nil if key doesn't exist
975
+ * @return [String, nil] property value or nil if key doesn't exist
976
976
  * @see Image#[]=
977
977
  * @see Image#properties
978
978
  */
979
979
  VALUE
980
- Image_aref(VALUE self, VALUE key_arg)
980
+ Image_aref(VALUE self, VALUE key_arg)
981
981
  {
982
982
  Image *image;
983
983
  const char *key;
@@ -1352,7 +1352,7 @@ Image_background_color_eq(VALUE self, VALUE color)
1352
1352
  /**
1353
1353
  * Return the number of rows (before transformations).
1354
1354
  *
1355
- * @return [Numeric] the number of rows
1355
+ * @return [Integer] the number of rows
1356
1356
  */
1357
1357
  VALUE
1358
1358
  Image_base_columns(VALUE self)
@@ -1383,7 +1383,7 @@ Image_base_filename(VALUE self)
1383
1383
  /**
1384
1384
  * Return the number of rows (before transformations).
1385
1385
  *
1386
- * @return [Numeric] the number of rows
1386
+ * @return [Integer] the number of rows
1387
1387
  */
1388
1388
  VALUE
1389
1389
  Image_base_rows(VALUE self)
@@ -1429,8 +1429,8 @@ Image_bias(VALUE self)
1429
1429
  /**
1430
1430
  * Set image bias (used when convolving an image).
1431
1431
  *
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
1432
+ * @param pct [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form "NN%"
1433
+ * @return [Numeric, String] the given value
1434
1434
  */
1435
1435
  VALUE
1436
1436
  Image_bias_eq(VALUE self, VALUE pct)
@@ -1460,10 +1460,11 @@ Image_bias_eq(VALUE self, VALUE pct)
1460
1460
  * is a high-contrast image.
1461
1461
  *
1462
1462
  * @overload bilevel_channel(threshold, channel = Magick::AllChannels)
1463
- * @param threshold [Float] The threshold value, a number between 0 and QuantumRange.
1463
+ * @param threshold [Numeric] The threshold value, a number between 0 and QuantumRange.
1464
+ * @param channel [Magick::ChannelType] a ChannelType arguments.
1464
1465
  *
1465
1466
  * @overload bilevel_channel(threshold, *channels)
1466
- * @param threshold [Float] The threshold value, a number between 0 and QuantumRange.
1467
+ * @param threshold [Numeric] The threshold value, a number between 0 and QuantumRange.
1467
1468
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
1468
1469
  *
1469
1470
  * @return [Magick::Image] a new image
@@ -1923,10 +1924,10 @@ special_composite(Image *image, Image *overlay, double image_pct, double overlay
1923
1924
  * @overload blend(overlay, src_percent, dst_percent, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
1924
1925
  * @param overlay [Magick::Image, Magick::ImageList] The source image for the composite operation.
1925
1926
  * 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%".
1927
+ * @param src_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
1927
1928
  * If src_percentage is a number it is interpreted as a percentage.
1928
1929
  * 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%".
1930
+ * @param dst_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
1930
1931
  * If src_percentage is a number it is interpreted as a percentage.
1931
1932
  * Both 0.25 and "25%" mean 25%. This argument may omitted if no other arguments follow it.
1932
1933
  * In this case the default is 100%-src_percentage.
@@ -1988,7 +1989,7 @@ Image_blend(int argc, VALUE *argv, VALUE self)
1988
1989
  * Simulate a scene at nighttime in the moonlight.
1989
1990
  *
1990
1991
  * @overload blue_shift(factor = 1.5)
1991
- * @param factor [Float] Larger values increase the effect.
1992
+ * @param factor [Numeric] Larger values increase the effect.
1992
1993
  * @return [Magick::Image] a new image
1993
1994
  */
1994
1995
  VALUE
@@ -2027,13 +2028,13 @@ Image_blue_shift(int argc, VALUE *argv, VALUE self)
2027
2028
  * Convolves the image with a Gaussian operator of the given radius and standard deviation (sigma).
2028
2029
  *
2029
2030
  * @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
2031
+ * @param radius [Numeric] the radius value
2032
+ * @param sigma [Numeric] the sigma value
2032
2033
  * @param channel [Magick::ChannelType] a ChannelType arguments.
2033
2034
  *
2034
2035
  * @overload blur_channel(radius = 0.0, sigma = 1.0, *channels)
2035
- * @param radius [Float] the radius value
2036
- * @param sigma [Float] the sigma value
2036
+ * @param radius [Numeric] the radius value
2037
+ * @param sigma [Numeric] the sigma value
2037
2038
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2038
2039
  *
2039
2040
  * @return [Magick::Image] a new image
@@ -2085,8 +2086,8 @@ Image_blur_channel(int argc, VALUE *argv, VALUE self)
2085
2086
  * Blur the image.
2086
2087
  *
2087
2088
  * @overload blur_image(radius = 0.0, sigma = 1.0)
2088
- * @param radius [Float] the radius value
2089
- * @param sigma [Float] the sigma value
2089
+ * @param radius [Numeric] the radius value
2090
+ * @param sigma [Numeric] the sigma value
2090
2091
  * @return [Magick::Image] a new image
2091
2092
  */
2092
2093
  VALUE
@@ -2264,7 +2265,8 @@ Image_bounding_box(VALUE self)
2264
2265
  * importantly, you can capture menus or other popups that are independent windows but appear
2265
2266
  * over the specified window.
2266
2267
  * @param borders [Boolean] If true, include the border in the image.
2267
- * @yield [Magick::Image::Info]
2268
+ * @yield [info]
2269
+ * @yieldparam info [Magick::Image::Info]
2268
2270
  *
2269
2271
  * @return [Magick::Image] a new image
2270
2272
  * @example
@@ -2337,10 +2339,10 @@ Image_capture(int argc, VALUE *argv, VALUE self ATTRIBUTE_UNUSED)
2337
2339
  * For example, you can specify that the image should be resized such that the aspect ratio should
2338
2340
  * be retained but the resulting image should be no larger than 640 pixels wide and 480 pixels tall.
2339
2341
  *
2340
- * @param geom_arg [String] the geometry string
2342
+ * @param geom_arg [Magick::Geometry, String] the geometry
2341
2343
  * @yield [column, row, image]
2342
- * @yieldparam column [Numeric] The desired column size
2343
- * @yieldparam row [Numeric] The desired row size
2344
+ * @yieldparam column [Integer] The desired column size
2345
+ * @yieldparam row [Integer] The desired row size
2344
2346
  * @yieldparam image [Magick::Image] self
2345
2347
  * @see https://www.imagemagick.org/Magick++/Geometry.html
2346
2348
  * @example
@@ -2445,7 +2447,7 @@ Image_channel(VALUE self, VALUE channel_arg)
2445
2447
  * @overload channel_depth(*channels)
2446
2448
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2447
2449
  *
2448
- * @return [Numeric] the channel depth
2450
+ * @return [Integer] the channel depth
2449
2451
  */
2450
2452
  VALUE
2451
2453
  Image_channel_depth(int argc, VALUE *argv, VALUE self)
@@ -2492,7 +2494,7 @@ Image_channel_depth(int argc, VALUE *argv, VALUE self)
2492
2494
  * @overload channel_extrema(*channels)
2493
2495
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2494
2496
  *
2495
- * @return [Array<Numeric>] The first element in the array is the minimum value. The second element is the
2497
+ * @return [Array<Integer>] The first element in the array is the minimum value. The second element is the
2496
2498
  * maximum value.
2497
2499
  */
2498
2500
  VALUE
@@ -2656,8 +2658,8 @@ Image_channel_entropy(int argc ATTRIBUTE_UNUSED, VALUE *argv ATTRIBUTE_UNUSED, V
2656
2658
  * Return a new image that is a copy of the input image with the edges highlighted.
2657
2659
  *
2658
2660
  * @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.
2661
+ * @param radius [Numeric] The radius of the pixel neighborhood.
2662
+ * @param sigma [Numeric] The standard deviation of the Gaussian, in pixels.
2661
2663
  * @return [Magick::Image] a new image
2662
2664
  */
2663
2665
  VALUE
@@ -2763,11 +2765,11 @@ Image_clone(VALUE self)
2763
2765
  * the CLUT image.
2764
2766
  *
2765
2767
  * @overload clut_channel(clut_image, channel = Magick::AllChannels)
2766
- * @param clut_image [Magick::Image] The LUT gradient image.
2768
+ * @param clut_image [Magick::Image, Magick::ImageList] The LUT gradient image.
2767
2769
  * @param channel [Magick::ChannelType] a ChannelType arguments.
2768
2770
  *
2769
2771
  * @overload clut_channel(clut_image, *channels)
2770
- * @param clut_image [Magick::Image] The LUT gradient image.
2772
+ * @param clut_image [Magick::Image, Magick::ImageList] The LUT gradient image.
2771
2773
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
2772
2774
  *
2773
2775
  * @return [Magick::Image] self
@@ -2787,7 +2789,7 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2787
2789
  // check_destroyed before confirming the arguments
2788
2790
  if (argc >= 1)
2789
2791
  {
2790
- rm_check_destroyed(argv[0]);
2792
+ clut = rm_check_destroyed(rm_cur_image(argv[0]));
2791
2793
  channels = extract_channels(&argc, argv);
2792
2794
  if (argc != 1)
2793
2795
  {
@@ -2799,8 +2801,6 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2799
2801
  rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or more)", argc);
2800
2802
  }
2801
2803
 
2802
- TypedData_Get_Struct(argv[0], Image, &rm_image_data_type, clut);
2803
-
2804
2804
  #if defined(IMAGEMAGICK_7)
2805
2805
  exception = AcquireExceptionInfo();
2806
2806
  BEGIN_CHANNEL_MASK(image, channels);
@@ -2829,7 +2829,7 @@ Image_clut_channel(int argc, VALUE *argv, VALUE self)
2829
2829
  /**
2830
2830
  * Computes the number of times each unique color appears in the image.
2831
2831
  *
2832
- * @return [Hash] Each key in the hash is a pixel representing a color that appears in the image.
2832
+ * @return [Hash<Magick::Pixel, Integer>] Each key in the hash is a pixel representing a color that appears in the image.
2833
2833
  * The value associated with the key is the number of times that color appears in the image.
2834
2834
  */
2835
2835
  VALUE
@@ -3052,8 +3052,8 @@ Image_color_profile(VALUE self)
3052
3052
  * - Pass nil to remove any existing profile.
3053
3053
  * - Removes any existing profile before adding the new one.
3054
3054
  *
3055
- * @param profile [String] the profile to set
3056
- * @return [String] the given profile
3055
+ * @param profile [String, nil] the profile to set
3056
+ * @return [String, nil] the given profile
3057
3057
  */
3058
3058
  VALUE
3059
3059
  Image_color_profile_eq(VALUE self, VALUE profile)
@@ -3165,16 +3165,16 @@ Image_color_flood_fill(VALUE self, VALUE target_color, VALUE fill_color,
3165
3165
  * blend for each r, g, b component.
3166
3166
  *
3167
3167
  * @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
3168
+ * @param red [Numeric] The percentage of the fill color red
3169
+ * @param green [Numeric] The percentage of the fill color green
3170
+ * @param blue [Numeric] The percentage of the fill color blue
3171
3171
  * @param target [Magick::Pixel, String] the color name
3172
3172
  *
3173
3173
  * @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
3174
+ * @param red [Numeric] The percentage of the fill color red
3175
+ * @param green [Numeric] The percentage of the fill color green
3176
+ * @param blue [Numeric] The percentage of the fill color blue
3177
+ * @param matte [Numeric] The percentage of the fill color transparency
3178
3178
  * @param target [Magick::Pixel, String] the color name
3179
3179
  *
3180
3180
  * @return [Magick::Image] a new image
@@ -3323,7 +3323,7 @@ Image_colormap(int argc, VALUE *argv, VALUE self)
3323
3323
  /**
3324
3324
  * Get the number of colors in the colormap.
3325
3325
  *
3326
- * @return [Numeric] the number of colors
3326
+ * @return [Integer] the number of colors
3327
3327
  */
3328
3328
  VALUE
3329
3329
  Image_colors(VALUE self)
@@ -3385,7 +3385,7 @@ Image_colorspace_eq(VALUE self, VALUE colorspace)
3385
3385
  /**
3386
3386
  * Get image columns.
3387
3387
  *
3388
- * @return [Numeric] the columns
3388
+ * @return [Integer] the columns
3389
3389
  */
3390
3390
  VALUE
3391
3391
  Image_columns(VALUE self)
@@ -3415,13 +3415,13 @@ Image_columns(VALUE self)
3415
3415
  * imagelist, uses the current image.
3416
3416
  * @param metric [Magick::MetricType] The desired distortion metric.
3417
3417
  * @param channel [Magick::ChannelType] a ChannelType arguments.
3418
- * @yield [Magick::OptionalMethodArguments]
3418
+ * @yield [opt_args]
3419
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
3419
3420
  *
3420
3421
  * @overload compare_channel(image, metric, *channels)
3421
3422
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
3422
3423
  * imagelist, uses the current image.
3423
3424
  * @param metric [Magick::MetricType] The desired distortion metric.
3424
- * @param channel [Magick::ChannelType] a ChannelType arguments.
3425
3425
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
3426
3426
  *
3427
3427
  * @overload compare_channel(image, metric, *channels)
@@ -3434,9 +3434,9 @@ Image_columns(VALUE self)
3434
3434
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
3435
3435
  * imagelist, uses the current image.
3436
3436
  * @param metric [Magick::MetricType] The desired distortion metric.
3437
- * @param channel [Magick::ChannelType] a ChannelType arguments.
3438
3437
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
3439
- * @yield [Magick::OptionalMethodArguments]
3438
+ * @yield [opt_args]
3439
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
3440
3440
  *
3441
3441
  * @return [Array] The first element is a difference image, the second is a the value of the
3442
3442
  * computed distortion represented as a Float.
@@ -3797,7 +3797,7 @@ Image_composite(int argc, VALUE *argv, VALUE self)
3797
3797
  /**
3798
3798
  * Composite the source over the destination image as dictated by the affine transform.
3799
3799
  *
3800
- * @param source [Magick::Image] the source image
3800
+ * @param source [Magick::Image, Magick::ImageList] the source image
3801
3801
  * @param affine_matrix [Magick::AffineMatrix] affine transform matrix
3802
3802
  * @return [Magick::Image] a new image
3803
3803
  */
@@ -3811,7 +3811,7 @@ Image_composite_affine(VALUE self, VALUE source, VALUE affine_matrix)
3811
3811
  #endif
3812
3812
 
3813
3813
  image = rm_check_destroyed(self);
3814
- composite_image = rm_check_destroyed(source);
3814
+ composite_image = rm_check_destroyed(rm_cur_image(source));
3815
3815
 
3816
3816
  Export_AffineMatrix(&affine, affine_matrix);
3817
3817
  new_image = rm_clone_image(image);
@@ -4027,19 +4027,19 @@ Image_composite_channel_bang(int argc, VALUE *argv, VALUE self)
4027
4027
  * @overload composite_mathematics(image, a, b, c, d, gravity)
4028
4028
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4029
4029
  * 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.
4030
+ * @param a [Numeric] See the description.
4031
+ * @param b [Numeric] See the description.
4032
+ * @param c [Numeric] See the description.
4033
+ * @param d [Numeric] See the description.
4034
4034
  * @param gravity [Magick::GravityType] the gravity type
4035
4035
  *
4036
4036
  * @overload composite_mathematics(image, a, b, c, d, x_off, y_off)
4037
4037
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4038
4038
  * 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.
4039
+ * @param a [Numeric] See the description.
4040
+ * @param b [Numeric] See the description.
4041
+ * @param c [Numeric] See the description.
4042
+ * @param d [Numeric] See the description.
4043
4043
  * @param x_off [Numeric] The x-offset of the composited image, measured relative to the gravity
4044
4044
  * argument.
4045
4045
  * @param y_off [Numeric] The y-offset of the composited image, measured relative to the gravity
@@ -4048,10 +4048,10 @@ Image_composite_channel_bang(int argc, VALUE *argv, VALUE self)
4048
4048
  * @overload composite_mathematics(image, a, b, c, d, gravity, x_off, y_off)
4049
4049
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
4050
4050
  * 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.
4051
+ * @param a [Numeric] See the description.
4052
+ * @param b [Numeric] See the description.
4053
+ * @param c [Numeric] See the description.
4054
+ * @param d [Numeric] See the description.
4055
4055
  * @param gravity [Magick::GravityType] the gravity type
4056
4056
  * @param x_off [Numeric] The x-offset of the composited image, measured relative to the gravity
4057
4057
  * argument.
@@ -4582,7 +4582,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4582
4582
  }
4583
4583
  else
4584
4584
  {
4585
- *black_point = pixels * rm_str_to_pct(argv[0]);
4585
+ *black_point = pixels * rm_str_to_pct(argv[0], true);
4586
4586
  }
4587
4587
  if (rm_check_num2dbl(argv[1]))
4588
4588
  {
@@ -4590,7 +4590,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4590
4590
  }
4591
4591
  else
4592
4592
  {
4593
- *white_point = pixels * rm_str_to_pct(argv[1]);
4593
+ *white_point = pixels * rm_str_to_pct(argv[1], true);
4594
4594
  }
4595
4595
  break;
4596
4596
 
@@ -4601,7 +4601,7 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4601
4601
  }
4602
4602
  else
4603
4603
  {
4604
- *black_point = pixels * rm_str_to_pct(argv[0]);
4604
+ *black_point = pixels * rm_str_to_pct(argv[0], true);
4605
4605
  }
4606
4606
  *white_point = pixels - *black_point;
4607
4607
  break;
@@ -4622,17 +4622,17 @@ get_black_white_point(Image *image, int argc, VALUE *argv, double *black_point,
4622
4622
  * a linear scaling function to the image pixel values.
4623
4623
  *
4624
4624
  * @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
4625
+ * @param black_point [Numeric, String] black out at most this many pixels. Specify an absolute
4626
4626
  * 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
4627
+ * @param white_point [Numeric, String] burn at most this many pixels. Specify an absolute number
4628
4628
  * of pixels as a numeric value, or a percentage as a string in the form 'NN%'. This argument
4629
4629
  * is optional. If not specified the default is `(columns * rows) - black_point`.
4630
4630
  * @param channel [Magick::ChannelType] a ChannelType arguments.
4631
4631
  *
4632
4632
  * @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
4633
+ * @param black_point [Numeric, String] black out at most this many pixels. Specify an absolute
4634
4634
  * 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
4635
+ * @param white_point [Numeric, String] burn at most this many pixels. Specify an absolute number of
4636
4636
  * pixels as a numeric value, or a percentage as a string in the form 'NN%'. This argument is
4637
4637
  * optional. If not specified the default is all pixels - black_point pixels.
4638
4638
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
@@ -4707,7 +4707,7 @@ Image_morphology(VALUE self, VALUE method_v, VALUE iterations, VALUE kernel_v)
4707
4707
  *
4708
4708
  * @param channel_v [Magick::ChannelType] a channel type
4709
4709
  * @param method_v [Magick::MorphologyMethod] the morphology method
4710
- * @param iterations [Numeric] apply the operation this many times (or no change).
4710
+ * @param iterations_v [Numeric] apply the operation this many times (or no change).
4711
4711
  * A value of -1 means loop until no change found.
4712
4712
  * How this is applied may depend on the morphology method.
4713
4713
  * Typically this is a value of 1.
@@ -4716,19 +4716,19 @@ Image_morphology(VALUE self, VALUE method_v, VALUE iterations, VALUE kernel_v)
4716
4716
  */
4717
4717
 
4718
4718
  VALUE
4719
- Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iterations, VALUE kernel_v)
4719
+ Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iterations_v, VALUE kernel_v)
4720
4720
  {
4721
4721
  Image *image, *new_image;
4722
4722
  ExceptionInfo *exception;
4723
4723
  MorphologyMethod method;
4724
4724
  ChannelType channel;
4725
4725
  KernelInfo *kernel;
4726
+ ssize_t iterations = NUM2LONG(iterations_v);;
4726
4727
 
4727
4728
  image = rm_check_destroyed(self);
4728
4729
 
4729
4730
  VALUE_TO_ENUM(method_v, method, MorphologyMethod);
4730
4731
  VALUE_TO_ENUM(channel_v, channel, ChannelType);
4731
- Check_Type(iterations, T_FIXNUM);
4732
4732
 
4733
4733
  if (TYPE(kernel_v) == T_STRING)
4734
4734
  {
@@ -4746,12 +4746,12 @@ Image_morphology_channel(VALUE self, VALUE channel_v, VALUE method_v, VALUE iter
4746
4746
 
4747
4747
  #if defined(IMAGEMAGICK_7)
4748
4748
  BEGIN_CHANNEL_MASK(image, channel);
4749
- GVL_STRUCT_TYPE(MorphologyImage) args = { image, method, NUM2LONG(iterations), kernel, exception };
4749
+ GVL_STRUCT_TYPE(MorphologyImage) args = { image, method, iterations, kernel, exception };
4750
4750
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(MorphologyImage), &args);
4751
4751
  CHANGE_RESULT_CHANNEL_MASK(new_image);
4752
4752
  END_CHANNEL_MASK(image);
4753
4753
  #else
4754
- GVL_STRUCT_TYPE(MorphologyImageChannel) args = { image, channel, method, NUM2LONG(iterations), kernel, exception };
4754
+ GVL_STRUCT_TYPE(MorphologyImageChannel) args = { image, channel, method, iterations, kernel, exception };
4755
4755
  new_image = (Image *)CALL_FUNC_WITHOUT_GVL(GVL_FUNC(MorphologyImageChannel), &args);
4756
4756
  #endif
4757
4757
  rm_check_exception(exception, new_image, DestroyOnError);
@@ -5049,26 +5049,26 @@ Image_crop(int argc, VALUE *argv, VALUE self)
5049
5049
  * Extract a region of the image defined by width, height, x, y.
5050
5050
  * In-place form of {Image#crop}.
5051
5051
  *
5052
- * @overload crop!(reset = false, x, y, width, height)
5053
- * @param reset [Boolean] true if reset the cropped image page canvas and position
5052
+ * @overload crop!(x, y, width, height, reset = false)
5054
5053
  * @param x [Numeric] x position of start of region
5055
5054
  * @param y [Numeric] y position of start of region
5056
5055
  * @param width [Numeric] width of region
5057
5056
  * @param height [Numeric] height of region
5058
- *
5059
- * @overload crop!(reset = false, gravity, width, height)
5060
5057
  * @param reset [Boolean] true if reset the cropped image page canvas and position
5058
+ *
5059
+ * @overload crop!(gravity, width, height, reset = false)
5061
5060
  * @param gravity [Magick::GravityType] the gravity type
5062
5061
  * @param width [Numeric] width of region
5063
5062
  * @param height [Numeric] height of region
5064
-
5065
- * @overload crop!(reset = false, gravity, x, y, width, height)
5066
5063
  * @param reset [Boolean] true if reset the cropped image page canvas and position
5064
+
5065
+ * @overload crop!(gravity, x, y, width, height, reset = false)
5067
5066
  * @param gravity [Magick::GravityType] the gravity type
5068
5067
  * @param x [Numeric] x position of start of region
5069
5068
  * @param y [Numeric] y position of start of region
5070
5069
  * @param width [Numeric] width of region
5071
5070
  * @param height [Numeric] height of region
5071
+ * @param reset [Boolean] true if reset the cropped image page canvas and position
5072
5072
  *
5073
5073
  * @return [Magick::Image] a new image
5074
5074
  * @see Image#crop!
@@ -5154,8 +5154,8 @@ Image_density(VALUE self)
5154
5154
  * resolution. The height attribute is used for the y resolution. If the height attribute is
5155
5155
  * missing, the width attribute is used for both.
5156
5156
  *
5157
- * @param density_arg [String, Magick::Geometry] The density String or Geometry
5158
- * @return [String, Magick::Geometry] the given value
5157
+ * @param density_arg [Magick::Geometry, String] The density String or Geometry
5158
+ * @return [Magick::Geometry, String] the given value
5159
5159
  * @see https://www.imagemagick.org/Magick++/Geometry.html
5160
5160
  */
5161
5161
  VALUE
@@ -5273,8 +5273,8 @@ Image_decipher(VALUE self, VALUE passphrase)
5273
5273
  * - If value is nil, the artifact will be removed
5274
5274
  *
5275
5275
  * @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`
5276
+ * @param value [String, nil] the value to which to set the artifact
5277
+ * @return [String, nil] the given `value`
5278
5278
  */
5279
5279
  VALUE
5280
5280
  Image_define(VALUE self, VALUE artifact, VALUE value)
@@ -5311,7 +5311,7 @@ Image_define(VALUE self, VALUE artifact, VALUE value)
5311
5311
  * sequence. The default number of ticks is 0. By default there are 100 ticks per second but this
5312
5312
  * number can be changed via the ticks_per_second attribute.
5313
5313
  *
5314
- * @return [Numeric] The current delay value.
5314
+ * @return [Integer] The current delay value.
5315
5315
  */
5316
5316
  VALUE
5317
5317
  Image_delay(VALUE self)
@@ -5399,7 +5399,7 @@ Image_delete_profile(VALUE self, VALUE name)
5399
5399
  * - If all pixels have lower-order bytes equal to higher-order bytes, the depth will be reported as
5400
5400
  * 8 even if the depth field in the Image structure says 16.
5401
5401
  *
5402
- * @return [Numeric] the depth
5402
+ * @return [Integer] the depth
5403
5403
  */
5404
5404
  VALUE
5405
5405
  Image_depth(VALUE self)
@@ -5425,9 +5425,9 @@ Image_depth(VALUE self)
5425
5425
  * Straightens an image. A threshold of 40% works for most images.
5426
5426
  *
5427
5427
  * @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,
5428
+ * @param threshold [Numeric, String] A percentage of QuantumRange. Either a Float between 0 and 1.0,
5429
5429
  * 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
5430
+ * @param auto_crop_width [Numeric] Specify a value for this argument to cause the deskewed image to
5431
5431
  * be auto-cropped. The argument is the pixel width of the image background (e.g. 40).
5432
5432
  * @return [Magick::Image] a new image
5433
5433
  */
@@ -5454,7 +5454,7 @@ Image_deskew(int argc, VALUE *argv, VALUE self)
5454
5454
  case 0:
5455
5455
  break;
5456
5456
  default:
5457
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
5457
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 2)", argc);
5458
5458
  break;
5459
5459
  }
5460
5460
 
@@ -5583,7 +5583,7 @@ Image_difference(VALUE self, VALUE other)
5583
5583
  /**
5584
5584
  * Get image directory.
5585
5585
  *
5586
- * @return [String] the directory
5586
+ * @return [String, nil] the directory
5587
5587
  */
5588
5588
  VALUE
5589
5589
  Image_directory(VALUE self)
@@ -5599,8 +5599,8 @@ Image_directory(VALUE self)
5599
5599
  * @overload displace(displacement_map, x_amp, y_amp = x_amp, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
5600
5600
  * @param displacement_map [Magick::Image, Magick::ImageList] The source image for the composite
5601
5601
  * 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.
5602
+ * @param x_amp [Numeric] The maximum displacement on the x-axis.
5603
+ * @param y_amp [Numeric] The maximum displacement on the y-axis.
5604
5604
  * @param gravity [Magick::GravityType] the gravity for offset. the offsets are measured from the
5605
5605
  * NorthWest corner by default.
5606
5606
  * @param x_offset [Numeric] The offset that measured from the left-hand side of the target image.
@@ -5757,6 +5757,8 @@ Image_dispatch(int argc, VALUE *argv, VALUE self)
5757
5757
  /**
5758
5758
  * Display the image to an X window screen.
5759
5759
  *
5760
+ * @yield [info]
5761
+ * @yieldparam info [Magick::Image::Info]
5760
5762
  * @return [Magick::Image] self
5761
5763
  */
5762
5764
  VALUE
@@ -5833,10 +5835,10 @@ Image_dispose_eq(VALUE self, VALUE dispose)
5833
5835
  * @overload dissolve(overlay, src_percent, dst_percent = -1.0, gravity = Magick::NorthWestGravity, x_offset = 0, y_offset = 0)
5834
5836
  * @param overlay [Magick::Image, Magick::ImageList] The source image for the composite operation.
5835
5837
  * 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%".
5838
+ * @param src_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
5837
5839
  * If src_percentage is a number it is interpreted as a percentage.
5838
5840
  * 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%".
5841
+ * @param dst_percent [Numeric, String] Either a non-negative number a string in the form "NN%".
5840
5842
  * If src_percentage is a number it is interpreted as a percentage.
5841
5843
  * Both 0.25 and "25%" mean 25%. This argument may omitted if no other arguments follow it.
5842
5844
  * In this case the default is 100%-src_percentage.
@@ -5925,7 +5927,8 @@ Image_dissolve(int argc, VALUE *argv, VALUE self)
5925
5927
  * image is adjusted to ensure the whole source image will just fit within the final destination
5926
5928
  * image, which will be sized and offset accordingly. Also in many cases the virtual offset of
5927
5929
  * the source image will be taken into account in the mapping.
5928
- * @yield [Magick::OptionalMethodArguments]
5930
+ * @yield [opt_args]
5931
+ * @yieldparam opt_args [Magick::OptionalMethodArguments]
5929
5932
  *
5930
5933
  * @return [Magick::Image] a new image
5931
5934
  * @example
@@ -6191,7 +6194,7 @@ Image_each_profile(VALUE self)
6191
6194
  * Find edges in an image. "radius" defines the radius of the convolution filter.
6192
6195
  *
6193
6196
  * @overload edge(radius = 0.0)
6194
- * @param radius [Float] The radius of the convolution filter.
6197
+ * @param radius [Numeric] The radius of the convolution filter.
6195
6198
  * @return [Magick::Image] a new image
6196
6199
  */
6197
6200
  VALUE
@@ -6279,8 +6282,8 @@ effect_image(VALUE self, int argc, VALUE *argv, gvl_function_t fp)
6279
6282
  * Adds a 3-dimensional effect.
6280
6283
  *
6281
6284
  * @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.
6285
+ * @param radius [Numeric] The radius of the Gaussian operator.
6286
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
6284
6287
  * @return [Magick::Image] a new image
6285
6288
  */
6286
6289
  VALUE
@@ -6810,7 +6813,7 @@ Image_export_pixels_to_str(int argc, VALUE *argv, VALUE self)
6810
6813
  case 0:
6811
6814
  break;
6812
6815
  default:
6813
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
6816
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 6)", argc);
6814
6817
  break;
6815
6818
  }
6816
6819
 
@@ -6920,7 +6923,7 @@ Image_filename(VALUE self)
6920
6923
  /**
6921
6924
  * Return the image file size.
6922
6925
  *
6923
- * @return [Numeric] the file size
6926
+ * @return [Integer] the file size
6924
6927
  */
6925
6928
  VALUE Image_filesize(VALUE self)
6926
6929
  {
@@ -7090,7 +7093,7 @@ Image_flip(VALUE self)
7090
7093
  * Create a vertical mirror image by reflecting the pixels around the central x-axis.
7091
7094
  * In-place form of {Image#flip}.
7092
7095
  *
7093
- * @return [Magick::Image] a new image
7096
+ * @return [Magick::Image] self
7094
7097
  * @see Image#flip
7095
7098
  * @see Image#flop
7096
7099
  * @see Image#flop!
@@ -7123,7 +7126,7 @@ Image_flop(VALUE self)
7123
7126
  * Create a horizonal mirror image by reflecting the pixels around the central y-axis.
7124
7127
  * In-place form of {Image#flop}.
7125
7128
  *
7126
- * @return [Magick::Image] a new image
7129
+ * @return [Magick::Image] self
7127
7130
  * @see Image#flop
7128
7131
  * @see Image#flip
7129
7132
  * @see Image#flip!
@@ -7273,7 +7276,8 @@ Image_frame(int argc, VALUE *argv, VALUE self)
7273
7276
  * @overload from_blob(blob)
7274
7277
  * This yields {Magick::Image::Info} to block with its object's scope.
7275
7278
  * @param blob [String] the blob data
7276
- * @yield [Magick::Image::Info]
7279
+ * @yield [info]
7280
+ * @yieldparam info [Magick::Image::Info]
7277
7281
  *
7278
7282
  * @return [Array<Magick::Image>] an array of new images
7279
7283
  * @see Image#to_blob
@@ -7315,15 +7319,14 @@ Image_from_blob(VALUE klass ATTRIBUTE_UNUSED, VALUE blob_arg)
7315
7319
  *
7316
7320
  * @overload function_channel(function, *args, channel = Magick::AllChannels)
7317
7321
  * @param function [Magick::MagickFunction] the function
7318
- * @param *args [Float] One or more floating-point numbers.
7322
+ * @param *args [Numeric] One or more floating-point numbers.
7319
7323
  * The number of parameters depends on the function. See the ImageMagick documentation for
7320
7324
  * details.
7321
-
7322
7325
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7323
7326
  *
7324
7327
  * @overload function_channel(function, *args, *channels)
7325
7328
  * @param function [Magick::MagickFunction] the function
7326
- * @param *args [Float] One or more floating-point numbers.
7329
+ * @param *args [Numeric] One or more floating-point numbers.
7327
7330
  * The number of parameters depends on the function. See the ImageMagick documentation for
7328
7331
  * details.
7329
7332
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
@@ -7429,9 +7432,9 @@ Image_fuzz(VALUE self)
7429
7432
  /**
7430
7433
  * Set the number of algorithms search for a target color.
7431
7434
  *
7432
- * @param fuzz [String, Float] The argument may be a floating-point numeric value or a string in the
7435
+ * @param fuzz [String, Numeric] The argument may be a floating-point numeric value or a string in the
7433
7436
  * form "NN%".
7434
- * @return [String, Float] the given value
7437
+ * @return [String, Numeric] the given value
7435
7438
  * @see Info#fuzz=
7436
7439
  */
7437
7440
  VALUE
@@ -7510,8 +7513,8 @@ Image_gamma(VALUE self)
7510
7513
  /**
7511
7514
  * Set the gamma level of the image.
7512
7515
  *
7513
- * @param val [Float] the gamma level
7514
- * @return [Float] the gamma level
7516
+ * @param val [Numeric] the gamma level
7517
+ * @return [Numeric] the gamma level
7515
7518
  */
7516
7519
  VALUE
7517
7520
  Image_gamma_eq(VALUE self, VALUE val)
@@ -7524,12 +7527,12 @@ Image_gamma_eq(VALUE self, VALUE val)
7524
7527
  * Apply gamma to a channel.
7525
7528
  *
7526
7529
  * @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
7530
+ * @param Values gamma [Numeric] typically range from 0.8 to 2.3. You can also reduce the influence
7528
7531
  * of a particular channel with a gamma value of 0.
7529
7532
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7530
7533
  *
7531
7534
  * @overload gamma_channel(gamma, *channels)
7532
- * @param Values gamma [Float] typically range from 0.8 to 2.3. You can also reduce the influence
7535
+ * @param Values gamma [Numeric] typically range from 0.8 to 2.3. You can also reduce the influence
7533
7536
  * of a particular channel with a gamma value of 0.
7534
7537
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
7535
7538
  *
@@ -7679,8 +7682,8 @@ Image_gamma_correct(int argc, VALUE *argv, VALUE self)
7679
7682
  * Blur the image.
7680
7683
  *
7681
7684
  * @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.
7685
+ * @param radius [Numeric] The radius of the Gaussian operator.
7686
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7684
7687
  * @return [Magick::Image] a new image
7685
7688
  */
7686
7689
  VALUE
@@ -7694,13 +7697,13 @@ Image_gaussian_blur(int argc, VALUE *argv, VALUE self)
7694
7697
  * Blur the image on a channel.
7695
7698
  *
7696
7699
  * @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.
7700
+ * @param radius [Numeric] The radius of the Gaussian operator.
7701
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7699
7702
  * @param channel [Magick::ChannelType] a ChannelType arguments.
7700
7703
  *
7701
7704
  * @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.
7705
+ * @param radius [Numeric] The radius of the Gaussian operator.
7706
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
7704
7707
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
7705
7708
  *
7706
7709
  * @return [Magick::Image] a new image
@@ -7767,8 +7770,8 @@ Image_geometry(VALUE self)
7767
7770
  /**
7768
7771
  * Set the preferred size of the image when encoding.
7769
7772
  *
7770
- * @param geometry [String] the geometry
7771
- * @return [String] the given geometry
7773
+ * @param geometry [Magick::Geometry, String] the geometry
7774
+ * @return [Magick::Geometry, String] the given geometry
7772
7775
  * @see https://www.imagemagick.org/Magick++/Geometry.html
7773
7776
  */
7774
7777
  VALUE
@@ -8000,6 +8003,8 @@ Image_histogram_q(VALUE self)
8000
8003
  * Implode the image by the specified percentage.
8001
8004
  *
8002
8005
  * @overload implode(amount = 0.50)
8006
+ * @param amount [Numeric] Increasing the absolute value of the argument increases the effect.
8007
+ * The value may be positive for implosion, or negative for explosion. The default is 0.50.
8003
8008
  * @return [Magick::Image] a new image
8004
8009
  */
8005
8010
  VALUE
@@ -8466,8 +8471,8 @@ Image_iptc_profile(VALUE self)
8466
8471
  /**
8467
8472
  * Set the IPTC profile. The argument is a string.
8468
8473
  *
8469
- * @param profile [String] the IPTC profile
8470
- * @return [String] the given profile
8474
+ * @param profile [String, nil] the IPTC profile
8475
+ * @return [String, nil] the given profile
8471
8476
  */
8472
8477
  VALUE
8473
8478
  Image_iptc_profile_eq(VALUE self, VALUE profile)
@@ -8502,9 +8507,9 @@ Image_iterations_eq(VALUE self, VALUE val)
8502
8507
  * points to the full available quantum range.
8503
8508
  *
8504
8509
  * @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.
8510
+ * @param black_point [Numeric] A black point level in the range 0 - QuantumRange.
8511
+ * @param white_point [Numeric] A white point level in the range 0..QuantumRange.
8512
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8508
8513
  * @return [Magick::Image] a new image
8509
8514
  */
8510
8515
  VALUE
@@ -8565,9 +8570,9 @@ Image_level2(int argc, VALUE *argv, VALUE self)
8565
8570
  *
8566
8571
  * @overload level_channel(aChannelType, black = 0.0, white = 1.0, gamma = Magick::QuantumRange)
8567
8572
  * @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.
8573
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8574
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8575
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8571
8576
  * @return [Magick::Image] a new image
8572
8577
  * @see Image#level2
8573
8578
  */
@@ -8720,14 +8725,15 @@ Image_level_colors(int argc, VALUE *argv, VALUE self)
8720
8725
  * Maps black and white to the specified points. The reverse of {Image#level_channel}.
8721
8726
  *
8722
8727
  * @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.
8728
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8729
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8730
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8731
+ * @param channel [Magick::ChannelType] a ChannelType arguments.
8726
8732
  *
8727
8733
  * @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.
8734
+ * @param black [Numeric] A black point level in the range 0..QuantumRange.
8735
+ * @param white [Numeric] A white point level in the range 0..QuantumRange.
8736
+ * @param gamma [Numeric] A gamma correction in the range 0.0 - 10.0.
8731
8737
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
8732
8738
  *
8733
8739
  * @return [Magick::Image] a new image
@@ -8798,10 +8804,10 @@ Image_levelize_channel(int argc, VALUE *argv, VALUE self)
8798
8804
  * Linear with saturation stretch.
8799
8805
  *
8800
8806
  * @overload linear_stretch(black_point, white_point = pixels - black_point)
8801
- * @param black_point [Float, String] black out at most this many pixels.
8807
+ * @param black_point [Numeric, String] black out at most this many pixels.
8802
8808
  * Specify an absolute number of pixels as a numeric value, or a percentage as a string in the
8803
8809
  * form 'NN%'.
8804
- * @param white_point [Float, String] burn at most this many pixels.
8810
+ * @param white_point [Numeric, String] burn at most this many pixels.
8805
8811
  * Specify an absolute number of pixels as a numeric value, or a percentage as a string in the
8806
8812
  * form 'NN%'.
8807
8813
  * This argument is optional. If not specified the default is `(columns * rows) - black_point`.
@@ -8844,8 +8850,8 @@ Image_linear_stretch(int argc, VALUE *argv, VALUE self)
8844
8850
  * @param columns [Numeric] The desired width height. Should not exceed 200% of the original
8845
8851
  * dimension.
8846
8852
  * @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).
8853
+ * @param delta_x [Numeric] Maximum seam transversal step (0 means straight seams).
8854
+ * @param rigidity [Numeric] Introduce a bias for non-straight seams (typically 0).
8849
8855
  * @return [Magick::Image] a new image
8850
8856
  */
8851
8857
  VALUE
@@ -9304,7 +9310,7 @@ set_image_mask(Image *image, VALUE mask)
9304
9310
  * @param image [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
9305
9311
  * imagelist, uses the current image.
9306
9312
  *
9307
- * @return [Magick::Image] the mask image
9313
+ * @return [Magick::Image, nil] the mask image
9308
9314
  */
9309
9315
  VALUE
9310
9316
  Image_mask(int argc, VALUE *argv, VALUE self)
@@ -9576,9 +9582,12 @@ Image_minify_bang(VALUE self)
9576
9582
  * Changes the brightness, saturation, and hue.
9577
9583
  *
9578
9584
  * @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
9585
+ * @param brightness [Numeric, String] The percent change in the brightness.
9586
+ * Must be a non-negative number or a string in the form "NN%".
9587
+ * @param saturation [Numeric, String] The percent change in the saturation.
9588
+ * Must be a number or a string in the form "NN%".
9589
+ * @param hue [Numeric, String] The percent change in the hue.
9590
+ * Must be a number or a string in the form "NN%".
9582
9591
  * @return [Magick::Image] a new image
9583
9592
  */
9584
9593
  VALUE
@@ -9597,11 +9606,11 @@ Image_modulate(int argc, VALUE *argv, VALUE self)
9597
9606
  switch (argc)
9598
9607
  {
9599
9608
  case 3:
9600
- pct_hue = 100*NUM2DBL(argv[2]);
9609
+ pct_hue = rm_percentage2(argv[2], 1.0, false) * 100.0;
9601
9610
  case 2:
9602
- pct_saturation = 100*NUM2DBL(argv[1]);
9611
+ pct_saturation = rm_percentage2(argv[1], 1.0, false) * 100.0;
9603
9612
  case 1:
9604
- pct_brightness = 100*NUM2DBL(argv[0]);
9613
+ pct_brightness = rm_percentage(argv[0], 1.0) * 100.0;
9605
9614
  break;
9606
9615
  case 0:
9607
9616
  break;
@@ -9654,7 +9663,7 @@ Image_monochrome_q(VALUE self)
9654
9663
  /**
9655
9664
  * Tile size and offset within an image montage. Only valid for montage images.
9656
9665
  *
9657
- * @return [String] the tile size and offset
9666
+ * @return [String, nil] the tile size and offset
9658
9667
  */
9659
9668
  VALUE
9660
9669
  Image_montage(VALUE self)
@@ -9699,7 +9708,7 @@ motion_blur(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
9699
9708
  case 0:
9700
9709
  break;
9701
9710
  default:
9702
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 3)", argc);
9711
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 to 3)", argc);
9703
9712
  break;
9704
9713
  }
9705
9714
 
@@ -9727,9 +9736,9 @@ motion_blur(int argc, VALUE *argv, VALUE self, gvl_function_t fp)
9727
9736
  * blurring motion.
9728
9737
  *
9729
9738
  * @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)
9739
+ * @param radius [Numeric] The radius
9740
+ * @param sigma [Numeric] The standard deviation
9741
+ * @param angle [Numeric] The angle (in degrees)
9733
9742
  * @return [Magick::Image] a new image
9734
9743
  */
9735
9744
  VALUE
@@ -9797,7 +9806,6 @@ Image_negate(int argc, VALUE *argv, VALUE self)
9797
9806
  * @overload negate_channel(grayscale = false, *channels)
9798
9807
  * @param grayscale [Boolean] If the grayscale argument is true, only the grayscale values are
9799
9808
  * negated.
9800
- * @param channel [Magick::ChannelType] a ChannelType arguments.
9801
9809
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
9802
9810
  *
9803
9811
  * @return [Magick::Image] a new image
@@ -10012,7 +10020,11 @@ Image_normalize(VALUE self)
10012
10020
  *
10013
10021
  * @overload normalize_channel(channel = Magick::AllChannels)
10014
10022
  * @param channel [Magick::ChannelType] a ChannelType arguments.
10015
- * @return [Magick::Image] a new image
10023
+ *
10024
+ * @overload normalize_channel(*channels)
10025
+ * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
10026
+ *
10027
+ * @return [Magick::Image] a new image
10016
10028
  */
10017
10029
  VALUE
10018
10030
  Image_normalize_channel(int argc, VALUE *argv, VALUE self)
@@ -10077,7 +10089,7 @@ Image_normalized_maximum_error(VALUE self)
10077
10089
  /**
10078
10090
  * Return the number of unique colors in the image.
10079
10091
  *
10080
- * @return [Numeric] number of unique colors
10092
+ * @return [Integer] number of unique colors
10081
10093
  */
10082
10094
  VALUE
10083
10095
  Image_number_colors(VALUE self)
@@ -10102,7 +10114,7 @@ Image_number_colors(VALUE self)
10102
10114
  /**
10103
10115
  * Get the number of bytes to skip over when reading raw image.
10104
10116
  *
10105
- * @return [Number] the offset
10117
+ * @return [Integer] the offset
10106
10118
  */
10107
10119
  VALUE
10108
10120
  Image_offset(VALUE self)
@@ -10113,8 +10125,8 @@ Image_offset(VALUE self)
10113
10125
  /**
10114
10126
  * Set the number of bytes to skip over when reading raw image.
10115
10127
  *
10116
- * @param val [Number] the offset
10117
- * @return [Number] the given offset
10128
+ * @param val [Numeric] the offset
10129
+ * @return [Numeric] the given offset
10118
10130
  */
10119
10131
  VALUE
10120
10132
  Image_offset_eq(VALUE self, VALUE val)
@@ -10127,7 +10139,7 @@ Image_offset_eq(VALUE self, VALUE val)
10127
10139
  * Apply a special effect filter that simulates an oil painting.
10128
10140
  *
10129
10141
  * @overload oil_paint(radius = 3.0)
10130
- * @param radius [Float] The radius of the Gaussian in pixels.
10142
+ * @param radius [Numeric] The radius of the Gaussian in pixels.
10131
10143
  * @return [Magick::Image] a new image
10132
10144
  */
10133
10145
  VALUE
@@ -10232,7 +10244,7 @@ Image_opaque(VALUE self, VALUE target, VALUE fill)
10232
10244
  * @param fill [Magick::Pixel, String] the color for filling
10233
10245
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10234
10246
  * 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.
10247
+ * @param fuzz [Numeric] Colors within this distance are considered equal to the target color.
10236
10248
  * @param channel [Magick::ChannelType] a ChannelType arguments.
10237
10249
  *
10238
10250
  * @overload opaque_channel(target, fill, invert, fuzz, *channels)
@@ -10240,7 +10252,7 @@ Image_opaque(VALUE self, VALUE target, VALUE fill)
10240
10252
  * @param fill [Magick::Pixel, String] the color for filling
10241
10253
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10242
10254
  * 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.
10255
+ * @param fuzz [Numeric] Colors within this distance are considered equal to the target color.
10244
10256
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
10245
10257
  *
10246
10258
  * @return [Magick::Image] a new image
@@ -10464,11 +10476,11 @@ Image_page_eq(VALUE self, VALUE rect)
10464
10476
  * Changes the opacity value of all the pixels that match color to the value specified by opacity.
10465
10477
  * If invert is true, changes the pixels that don't match color.
10466
10478
  *
10467
- * @overload paint_transparent(target, invert, fuzz, alpha: Magick::TransparentAlpha)
10468
- * @param target [Magick::Pixel, String] the color name
10479
+ * @overload paint_transparent(color, invert, fuzz, alpha: Magick::TransparentAlpha)
10480
+ * @param color [Magick::Pixel, String] the color name
10469
10481
  * @param invert [Boolean] If true, the target pixels are all the pixels that are not the target
10470
10482
  * color.
10471
- * @param fuzz [Float] By default the pixel must match exactly, but you can specify a tolerance
10483
+ * @param fuzz [Numeric] By default the pixel must match exactly, but you can specify a tolerance
10472
10484
  * level by passing a positive value.
10473
10485
  * @param alpha [Numeric] The new alpha value, either an alpha value or a number between 0 and
10474
10486
  * QuantumRange. The default is TransparentAlpha.
@@ -10576,6 +10588,9 @@ Image_palette_q(VALUE self)
10576
10588
  /**
10577
10589
  * Returns all the properties of an image or image sequence except for the pixels.
10578
10590
  *
10591
+ * @param file_arg [File, String] the file containing image data or file name
10592
+ * @yield [info]
10593
+ * @yieldparam info [Magick::Image::Info]
10579
10594
  * @return [Array<Magick::Image>] an array of 1 or more new image objects (without pixel data)
10580
10595
  * @see Image#read
10581
10596
  */
@@ -10814,7 +10829,7 @@ Image_pixel_interpolation_method_eq(VALUE self, VALUE method)
10814
10829
  * font_weight, gravity, pointsize, stroke, stroke_width, text_antialias, undercolor.
10815
10830
  *
10816
10831
  * @overload polaroid(angle = -5.0)
10817
- * @param angle [Float] The resulting image is rotated by this amount, measured in degrees.
10832
+ * @param angle [Numeric] The resulting image is rotated by this amount, measured in degrees.
10818
10833
  *
10819
10834
  * @overload polaroid(angle = -5.0)
10820
10835
  * If present a block, optional arguments may be specified in a block associated with the method.
@@ -10823,8 +10838,9 @@ Image_pixel_interpolation_method_eq(VALUE self, VALUE method)
10823
10838
  * use options.shadow_color.
10824
10839
  * To specify a different border color (that is, the color of the image border) use options.border_color.
10825
10840
  * 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]
10841
+ * @param angle [Numeric] The resulting image is rotated by this amount, measured in degrees.
10842
+ * @yield [opt]
10843
+ * @yieldparam opt [Magick::Image::PolaroidOptions]
10828
10844
  *
10829
10845
  * @return [Magick::Image] a new image
10830
10846
  */
@@ -10965,7 +10981,7 @@ Image_preview(VALUE self, VALUE preview)
10965
10981
  * Set the image profile. If "profile" is nil, deletes the profile. Otherwise "profile" must be a
10966
10982
  * string containing the specified profile.
10967
10983
  *
10968
- * @param name [String] The profile name, or "*" to represent all the profiles in the image.
10984
+ * @param name [String, nil] The profile name, or "*" to represent all the profiles in the image.
10969
10985
  * @param profile [String] The profile value, or nil to cause the profile to be removed.
10970
10986
  * @return [Magick::Image] self
10971
10987
  */
@@ -10988,7 +11004,7 @@ Image_profile_bang(VALUE self, VALUE name, VALUE profile)
10988
11004
  /**
10989
11005
  * Get image quality.
10990
11006
  *
10991
- * @return [Numeric] the quality
11007
+ * @return [Integer] the quality
10992
11008
  */
10993
11009
  VALUE
10994
11010
  Image_quality(VALUE self)
@@ -11000,7 +11016,7 @@ Image_quality(VALUE self)
11000
11016
  /**
11001
11017
  * Return the image depth to the nearest Quantum (8, 16, or 32).
11002
11018
  *
11003
- * @return [Numeric] image depth
11019
+ * @return [Integer] image depth
11004
11020
  */
11005
11021
  VALUE
11006
11022
  Image_quantum_depth(VALUE self)
@@ -11025,12 +11041,12 @@ Image_quantum_depth(VALUE self)
11025
11041
  *
11026
11042
  * @overload quantum_operator(quantum_expression_op, rvalue, channel = Magick::AllChannels)
11027
11043
  * @param quantum_expression_op [Magick::QuantumExpressionOperator] the operator
11028
- * @param rvalue [Float] the operation rvalue.
11044
+ * @param rvalue [Numeric] the operation rvalue.
11029
11045
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11030
11046
  *
11031
11047
  * @overload quantum_operator(quantum_expression_op, rvalue, *channels)
11032
11048
  * @param quantum_expression_op [Magick::QuantumExpressionOperator] the operator
11033
- * @param rvalue [Float] the operation rvalue.
11049
+ * @param rvalue [Numeric] the operation rvalue.
11034
11050
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11035
11051
  *
11036
11052
  * @return [Magick::Image] self
@@ -11278,7 +11294,7 @@ Image_quantize(int argc, VALUE *argv, VALUE self)
11278
11294
  /**
11279
11295
  * Applies a radial blur to the image.
11280
11296
  *
11281
- * @param angle_obj [Float] the angle (in degrees)
11297
+ * @param angle_obj [Numeric] the angle (in degrees)
11282
11298
  * @return [Magick::Image] a new image
11283
11299
  */
11284
11300
  VALUE
@@ -11311,11 +11327,11 @@ Image_radial_blur(VALUE self, VALUE angle_obj)
11311
11327
  * Applies a radial blur to the selected image channels.
11312
11328
  *
11313
11329
  * @overload radial_blur_channel(angle, channel = Magick::AllChannels)
11314
- * @param angle [Float] the angle (in degrees)
11330
+ * @param angle [Numeric] the angle (in degrees)
11315
11331
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11316
11332
  *
11317
11333
  * @overload radial_blur_channel(angle, *channels)
11318
- * @param angle [Float] the angle (in degrees)
11334
+ * @param angle [Numeric] the angle (in degrees)
11319
11335
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11320
11336
  *
11321
11337
  * @return [Magick::Image] a new image
@@ -11369,11 +11385,11 @@ Image_radial_blur_channel(int argc, VALUE *argv, VALUE self)
11369
11385
  * threshold. The result is a low-contrast, two color image.
11370
11386
  *
11371
11387
  * @overload random_threshold_channel(geometry_str, channel = Magick::AllChannels)
11372
- * @param geometry_str [String] A geometry string containing LOWxHIGH thresholds.
11388
+ * @param geometry_str [Magick::Geometry, String] A geometry string containing LOWxHIGH thresholds.
11373
11389
  * @param channel [Magick::ChannelType] a ChannelType arguments.
11374
11390
  *
11375
11391
  * @overload random_threshold_channel(geometry_str, *channels)
11376
- * @param geometry_str [String] A geometry string containing LOWxHIGH thresholds.
11392
+ * @param geometry_str [Magick::Geometry, String] A geometry string containing LOWxHIGH thresholds.
11377
11393
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
11378
11394
  *
11379
11395
  * @return [Magick::Image] a new image
@@ -11497,6 +11513,8 @@ Image_raise(int argc, VALUE *argv, VALUE self)
11497
11513
  * Call ReadImage.
11498
11514
  *
11499
11515
  * @param file_arg [File, String] the file containing image data or file name
11516
+ * @yield [info]
11517
+ * @yieldparam info [Magick::Image::Info]
11500
11518
  * @return [Array<Magick::Image>] an array of 1 or more new image objects
11501
11519
  */
11502
11520
  VALUE
@@ -11626,7 +11644,7 @@ rd_image(VALUE klass ATTRIBUTE_UNUSED, VALUE file, gvl_function_t fp)
11626
11644
  * sized matrices, typically you use a 5x5 for an RGBA image and a 6x6 for CMYKA. Populate the last
11627
11645
  * row with normalized values to translate.
11628
11646
  *
11629
- * @param color_matrix [Array<Float>] An array of Float values representing the recolor matrix.
11647
+ * @param color_matrix [Array<Numeric>] An array of Float values representing the recolor matrix.
11630
11648
  * @return [Magick::Image] a new image
11631
11649
  */
11632
11650
  VALUE
@@ -11704,6 +11722,8 @@ Image_recolor(VALUE self, VALUE color_matrix)
11704
11722
  * Read a Base64-encoded image.
11705
11723
  *
11706
11724
  * @param content [String] the content
11725
+ * @yield [info]
11726
+ * @yieldparam info [Magick::Image::Info]
11707
11727
  * @return [Array<Magick::Image>] an array of new images
11708
11728
  */
11709
11729
  VALUE
@@ -12058,10 +12078,10 @@ resample(int bang, int argc, VALUE *argv, VALUE self)
12058
12078
  * specifying the resample resolution.
12059
12079
  *
12060
12080
  * @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.
12081
+ * @param x_resolution [Numeric] the target horizontal resolution.
12082
+ * @param y_resolution [Numeric] the target vertical resolution.
12063
12083
  * @param filter [Magick::FilterType] the filter type
12064
- * @param blur [Float] the blur size
12084
+ * @param blur [Numeric] the blur size
12065
12085
  * @return [Magick] a new image
12066
12086
  * @see Image#resample!
12067
12087
  */
@@ -12078,10 +12098,10 @@ Image_resample(int argc, VALUE *argv, VALUE self)
12078
12098
  * In-place form of {Image#resample}.
12079
12099
  *
12080
12100
  * @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.
12101
+ * @param x_resolution [Numeric] the target horizontal resolution.
12102
+ * @param y_resolution [Numeric] the target vertical resolution.
12083
12103
  * @param filter [Magick::FilterType] the filter type
12084
- * @param blur [Float] the blur size
12104
+ * @param blur [Numeric] the blur size
12085
12105
  * @return [Magick] a new image
12086
12106
  * @see Image#resample
12087
12107
  */
@@ -12195,15 +12215,15 @@ resize(int bang, int argc, VALUE *argv, VALUE self)
12195
12215
  * Scale an image to the desired dimensions using the specified filter and blur factor.
12196
12216
  *
12197
12217
  * @overload resize(scale)
12198
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12218
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12199
12219
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12200
12220
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12201
12221
  *
12202
12222
  * @overload resize(cols, rows, filter, blur)
12203
- * @param cols [Float] The desired width
12204
- * @param rows [Float] The desired height.
12223
+ * @param cols [Numeric] The desired width
12224
+ * @param rows [Numeric] The desired height.
12205
12225
  * @param filter [Magick::FilterType] the filter type
12206
- * @param blur [Float] the blur size
12226
+ * @param blur [Numeric] the blur size
12207
12227
  *
12208
12228
  * @return [Magick::Image] a new image
12209
12229
  * @see Image#resize!
@@ -12221,15 +12241,15 @@ Image_resize(int argc, VALUE *argv, VALUE self)
12221
12241
  * In-place form of {Image#resize}.
12222
12242
  *
12223
12243
  * @overload resize!(scale)
12224
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12244
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12225
12245
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12226
12246
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12227
12247
  *
12228
12248
  * @overload resize!(cols, rows, filter, blur)
12229
- * @param cols [Float] The desired width
12230
- * @param rows [Float] The desired height.
12249
+ * @param cols [Numeric] The desired width
12250
+ * @param rows [Numeric] The desired height.
12231
12251
  * @param filter [Magick::FilterType] the filter type
12232
- * @param blur [Float] the blur size
12252
+ * @param blur [Numeric] the blur size
12233
12253
  *
12234
12254
  * @return [Magick::Image] a new image
12235
12255
  * @see Image#resize!
@@ -12342,10 +12362,10 @@ rotate(int bang, int argc, VALUE *argv, VALUE self)
12342
12362
  * black.
12343
12363
  *
12344
12364
  * @overload rotate(degrees)
12345
- * @param degrees [Float] The number of degrees to rotate the image.
12365
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12346
12366
  *
12347
12367
  * @overload rotate(degrees, qualifier)
12348
- * @param degrees [Float] The number of degrees to rotate the image.
12368
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12349
12369
  * @param qualifier [String] If present, either ">" or "<". If ">", rotates the image only if the
12350
12370
  * image's width exceeds its height. If "<" rotates the image only if its height exceeds its
12351
12371
  * width. If this argument is omitted the image is always rotated.
@@ -12366,10 +12386,10 @@ Image_rotate(int argc, VALUE *argv, VALUE self)
12366
12386
  * In-place form of {Image#rotate}.
12367
12387
  *
12368
12388
  * @overload rotate!(degrees)
12369
- * @param degrees [Float] The number of degrees to rotate the image.
12389
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12370
12390
  *
12371
12391
  * @overload rotate!(degrees, qualifier)
12372
- * @param degrees [Float] The number of degrees to rotate the image.
12392
+ * @param degrees [Numeric] The number of degrees to rotate the image.
12373
12393
  * @param qualifier [String] If present, either ">" or "<". If ">", rotates the image only if the
12374
12394
  * image's width exceeds its height. If "<" rotates the image only if its height exceeds its
12375
12395
  * width. If this argument is omitted the image is always rotated.
@@ -12388,7 +12408,7 @@ Image_rotate_bang(int argc, VALUE *argv, VALUE self)
12388
12408
  /**
12389
12409
  * Return image rows.
12390
12410
  *
12391
- * @return [Numeric] the image rows
12411
+ * @return [Integer] the image rows
12392
12412
  */
12393
12413
  VALUE
12394
12414
  Image_rows(VALUE self)
@@ -12402,7 +12422,7 @@ Image_rows(VALUE self)
12402
12422
  * method does not introduce any additional color into the scaled image.
12403
12423
  *
12404
12424
  * @overload sample(scale)
12405
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12425
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12406
12426
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12407
12427
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12408
12428
  *
@@ -12426,7 +12446,7 @@ Image_sample(int argc, VALUE *argv, VALUE self)
12426
12446
  * In-place form of {Image#sample}.
12427
12447
  *
12428
12448
  * @overload sample!(scale)
12429
- * @param scale [Float] You can use this argument instead of specifying the desired width and
12449
+ * @param scale [Numeric] You can use this argument instead of specifying the desired width and
12430
12450
  * height. The percentage size change. For example, 1.25 makes the new image 125% of the size of
12431
12451
  * the receiver. The scale factor 0.5 makes the new image 50% of the size of the receiver.
12432
12452
  *
@@ -12578,7 +12598,7 @@ scale(int bang, int argc, VALUE *argv, VALUE self, gvl_function_t fp)
12578
12598
  * Return the scene number assigned to the image the last time the image was written to a
12579
12599
  * multi-image image file.
12580
12600
  *
12581
- * @return [Numeric] the image scene
12601
+ * @return [Integer] the image scene
12582
12602
  */
12583
12603
  VALUE
12584
12604
  Image_scene(VALUE self)
@@ -12591,16 +12611,16 @@ Image_scene(VALUE self)
12591
12611
  * Selectively blur pixels within a contrast threshold.
12592
12612
  *
12593
12613
  * @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
12614
+ * @param radius [Numeric] the radius value
12615
+ * @param sigma [Numeric] the sigma value
12616
+ * @param threshold [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form
12597
12617
  * "NN%"
12598
12618
  * @param channel [Magick::ChannelType] a ChannelType arguments.
12599
12619
  *
12600
12620
  * @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
12621
+ * @param radius [Numeric] the radius value
12622
+ * @param sigma [Numeric] the sigma value
12623
+ * @param threshold [Numeric, String] Either a number between 0.0 and 1.0 or a string in the form
12604
12624
  * "NN%"
12605
12625
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
12606
12626
  *
@@ -12739,7 +12759,7 @@ Image_separate(int argc, VALUE *argv, VALUE self)
12739
12759
  * sepia toning.
12740
12760
  *
12741
12761
  * @overload sepiatone(threshold = Magick::QuantumRange)
12742
- * @param threshold [Float] Threshold ranges from 0 to QuantumRange and is a measure of the extent
12762
+ * @param threshold [Numeric] Threshold ranges from 0 to QuantumRange and is a measure of the extent
12743
12763
  * of the sepia toning. A threshold of 80% is a good starting point for a reasonable tone.
12744
12764
  * @return [Magick::Image] a new image
12745
12765
  */
@@ -12781,9 +12801,9 @@ Image_sepiatone(int argc, VALUE *argv, VALUE self)
12781
12801
  * @param colorspace [Magick::ColorspaceType] A ColorspaceType value. Empirical evidence suggests
12782
12802
  * that distances in YUV or YIQ correspond to perceptual color differences more closely than do
12783
12803
  * 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
12804
+ * @param cluster_threshold [Numeric] The number of pixels in each cluster must exceed the the
12785
12805
  * cluster threshold to be considered valid.
12786
- * @param smoothing_threshold [Float] The smoothing threshold eliminates noise in the second
12806
+ * @param smoothing_threshold [Numeric] The smoothing threshold eliminates noise in the second
12787
12807
  * derivative of the histogram. As the value is increased, you can expect a smoother second
12788
12808
  * derivative.
12789
12809
  * @param verbose [Boolean] If true, segment prints detailed information about the identified classes.
@@ -12844,10 +12864,12 @@ Image_segment(int argc, VALUE *argv, VALUE self)
12844
12864
  * and the associated value is the property value.
12845
12865
  *
12846
12866
  * @overload properties
12847
- * @return [Hash] the properties
12867
+ * @return [Hash<String, String>] the properties
12848
12868
  *
12849
12869
  * @overload properties
12850
- * @yield [Magick::Image::Info]
12870
+ * @yield [property, value]
12871
+ * @yieldparam property [String] property key
12872
+ * @yieldparam value [String] property value
12851
12873
  * @return [Magick::Image] self
12852
12874
  */
12853
12875
  VALUE
@@ -12934,9 +12956,9 @@ Image_properties(VALUE self)
12934
12956
  *
12935
12957
  * @overload shade(shading = false, azimuth = 30.0, elevation = 30.0)
12936
12958
  * @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
12959
+ * @param azimuth [Numeric] The light source direction. The azimuth is measured in degrees. 0 is at
12938
12960
  * 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
12961
+ * @param elevation [Numeric] The light source direction. The azimuth is measured in degrees. 0 is
12940
12962
  * at 9 o'clock. Increasing values move the light source counter-clockwise.
12941
12963
  * @return [Magick::Image] a new image
12942
12964
  */
@@ -12981,10 +13003,10 @@ Image_shade(int argc, VALUE *argv, VALUE self)
12981
13003
  * @overload Image#shadow(x_offset = 4, y_offset = 4, sigma = 4.0, alpha = 1.0)
12982
13004
  * @param x_offset [Numeric] The shadow x-offset
12983
13005
  * @param y_offset [Numeric] The shadow y-offset
12984
- * @param sigma [Float] The standard deviation of the Gaussian operator used to produce the
13006
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator used to produce the
12985
13007
  * shadow. The higher the number, the "blurrier" the shadow, but the longer it takes to produce
12986
13008
  * the shadow. Must be > 0.0.
12987
- * @param alpha [String, Float] The percent alpha of the shadow. The argument may be a
13009
+ * @param alpha [Numeric, String] The percent alpha of the shadow. The argument may be a
12988
13010
  * floating-point numeric value or a string in the form "NN%".
12989
13011
  * @return [Magick::Image] a new image
12990
13012
  */
@@ -13037,8 +13059,8 @@ Image_shadow(int argc, VALUE *argv, VALUE self)
13037
13059
  * Sharpen an image.
13038
13060
  *
13039
13061
  * @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.
13062
+ * @param radius [Numeric] The radius of the Gaussian operator.
13063
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13042
13064
  * @return [Magick::Image] a new image
13043
13065
  */
13044
13066
  VALUE
@@ -13052,13 +13074,13 @@ Image_sharpen(int argc, VALUE *argv, VALUE self)
13052
13074
  * Sharpen image on a channel.
13053
13075
  *
13054
13076
  * @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.
13077
+ * @param radius [Numeric] The radius of the Gaussian operator.
13078
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13057
13079
  * @param channel [Magick::ChannelType] a ChannelType arguments.
13058
13080
  *
13059
13081
  * @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.
13082
+ * @param radius [Numeric] The radius of the Gaussian operator.
13083
+ * @param sigma [Numeric] The sigma (standard deviation) of the Gaussian operator.
13062
13084
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
13063
13085
  *
13064
13086
  * @return [Magick::Image] a new image
@@ -13151,8 +13173,8 @@ Image_shave_bang(VALUE self, VALUE width, VALUE height)
13151
13173
  * measured relative to the X axis. Empty triangles left over from shearing the image are filled
13152
13174
  * with the background color.
13153
13175
  *
13154
- * @param x_shear [Float] the x shear (in degrees)
13155
- * @param y_shear [Float] the y shear (in degrees)
13176
+ * @param x_shear [Numeric] the x shear (in degrees)
13177
+ * @param y_shear [Numeric] the y shear (in degrees)
13156
13178
  * @return [Magick::Image] a new image
13157
13179
  */
13158
13180
  VALUE
@@ -13181,10 +13203,9 @@ Image_shear(VALUE self, VALUE x_shear, VALUE y_shear)
13181
13203
  * saturating highlights or shadows.
13182
13204
  *
13183
13205
  * @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
13206
+ * @param contrast [Numeric] indicates how much to increase the contrast
13186
13207
  * (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%
13208
+ * @param midpoint [Numeric] indicates where midtones fall in the resultant image (0 is white; 50%
13188
13209
  * is middle-gray; 100% is black). Note that "50%" means "50% of the quantum range." This argument
13189
13210
  * is a number between 0 and QuantumRange. To specify "50%" use QuantumRange * 0.50.
13190
13211
  * @param sharpen [Boolean] Set sharpen to true to increase the image contrast otherwise the
@@ -13192,9 +13213,9 @@ Image_shear(VALUE self, VALUE x_shear, VALUE y_shear)
13192
13213
  * @param channel [Magick::ChannelType] a ChannelType arguments.
13193
13214
  *
13194
13215
  * @overload sigmoidal_contrast_channel(contrast = 3.0, midpoint = 50.0, sharpen = false, *channels)
13195
- * @param contrast [Float] indicates how much to increase the contrast
13216
+ * @param contrast [Numeric] indicates how much to increase the contrast
13196
13217
  * (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%
13218
+ * @param midpoint [Numeric] indicates where midtones fall in the resultant image (0 is white; 50%
13198
13219
  * is middle-gray; 100% is black). Note that "50%" means "50% of the quantum range." This argument
13199
13220
  * is a number between 0 and QuantumRange. To specify "50%" use QuantumRange * 0.50.
13200
13221
  * @param sharpen [Boolean] Set sharpen to true to increase the image contrast otherwise the
@@ -13294,9 +13315,9 @@ Image_signature(VALUE self)
13294
13315
  * Simulates a pencil sketch. For best results start with a grayscale image.
13295
13316
  *
13296
13317
  * @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)
13318
+ * @param radius [Numeric] The radius
13319
+ * @param sigma [Numeric] The standard deviation
13320
+ * @param angle [Numeric] The angle (in degrees)
13300
13321
  * @return [Magick::Image] a new image
13301
13322
  * @see motion_blur
13302
13323
  */
@@ -13314,7 +13335,7 @@ Image_sketch(int argc, VALUE *argv, VALUE self)
13314
13335
  * QuantumRange and is a measure of the extent of the solarization.
13315
13336
  *
13316
13337
  * @overload solarize(threshold = 50.0)
13317
- * @param threshold [Float] Ranges from 0 to QuantumRange and is a measure of the extent of the
13338
+ * @param threshold [Numeric] Ranges from 0 to QuantumRange and is a measure of the extent of the
13318
13339
  * solarization.
13319
13340
  * @return a new image
13320
13341
  */
@@ -13657,7 +13678,7 @@ Image_splice(int argc, VALUE *argv, VALUE self)
13657
13678
  * Randomly displace each pixel in a block defined by "radius".
13658
13679
  *
13659
13680
  * @overload spread(radius = 3.0)
13660
- * @param radius [Float] The radius
13681
+ * @param radius [Numeric] The radius
13661
13682
  * @return [Magick::Image] a new image
13662
13683
  */
13663
13684
  VALUE
@@ -14031,7 +14052,7 @@ Image_strip_bang(VALUE self)
14031
14052
  * through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to
14032
14053
  * 360.
14033
14054
  *
14034
- * @param degrees_obj [Float] the degrees
14055
+ * @param degrees_obj [Numeric] the degrees
14035
14056
  * @return [Magick::Image] a new image
14036
14057
  */
14037
14058
  VALUE
@@ -14164,7 +14185,7 @@ Image_texture_flood_fill(VALUE self, VALUE color_obj, VALUE texture_obj,
14164
14185
  * Change the value of individual pixels based on the intensity of each pixel compared to
14165
14186
  * threshold. The result is a high-contrast, two color image.
14166
14187
  *
14167
- * @param threshold_obj [Float] the threshold
14188
+ * @param threshold_obj [Numeric] the threshold
14168
14189
  * @return [Magick::Image] a new image
14169
14190
  */
14170
14191
  VALUE
@@ -14353,11 +14374,12 @@ thumbnail(int bang, int argc, VALUE *argv, VALUE self)
14353
14374
  * image is < 10% of the original.
14354
14375
  *
14355
14376
  * @overload thumbnail(scale)
14356
- * @param scale [Float] The desired size represented as a floating-point number. For example, to
14377
+ * @param scale [Numeric] The desired size represented as a floating-point number. For example, to
14357
14378
  * make a thumbnail that is 9.5% of the size of the original image, use 0.095.
14358
14379
  *
14359
14380
  * @overload thumbnail(cols, rows)
14360
14381
  * @param cols [Numeric] The desired width in pixels.
14382
+ * @param rows [Numeric] The desired height.
14361
14383
  *
14362
14384
  * @return [Magick::Image] a new image
14363
14385
  * @see Image#thumbnail!
@@ -14375,11 +14397,12 @@ Image_thumbnail(int argc, VALUE *argv, VALUE self)
14375
14397
  * image is < 10% of the original. In-place form of {Image#thumbnail}.
14376
14398
  *
14377
14399
  * @overload thumbnail!(scale)
14378
- * @param scale [Float] The desired size represented as a floating-point number. For example, to
14400
+ * @param scale [Numeric] The desired size represented as a floating-point number. For example, to
14379
14401
  * make a thumbnail that is 9.5% of the size of the original image, use 0.095.
14380
14402
  *
14381
14403
  * @overload thumbnail!(cols, rows)
14382
14404
  * @param cols [Numeric] The desired width in pixels.
14405
+ * @param rows [Numeric] The desired height.
14383
14406
  *
14384
14407
  * @return [Magick::Image] a new image
14385
14408
  * @see Image#thumbnail
@@ -14397,7 +14420,7 @@ Image_thumbnail_bang(int argc, VALUE *argv, VALUE self)
14397
14420
  * This attribute is used in conjunction with the delay attribute to establish the amount of time
14398
14421
  * that must elapse between frames in an animation.The default is 100.
14399
14422
  *
14400
- * @return [Numeric] ticks per second
14423
+ * @return [Integer] ticks per second
14401
14424
  */
14402
14425
  VALUE
14403
14426
  Image_ticks_per_second(VALUE self)
@@ -14431,10 +14454,10 @@ Image_ticks_per_second_eq(VALUE self, VALUE tps)
14431
14454
  *
14432
14455
  * @overload tint(tint, red_alpha, green_alpha = red_alpha, blue_alpha = red_alpha, alpha_alpha = 1.0)
14433
14456
  * @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
14457
+ * @param red_alpha [Numeric] the red value
14458
+ * @param green_alpha [Numeric] the green value
14459
+ * @param blue_alpha [Numeric] the blue value
14460
+ * @param alpha_alpha [Numeric] the alpha value
14438
14461
  * @return a new image
14439
14462
  */
14440
14463
  VALUE
@@ -14508,6 +14531,8 @@ Image_tint(int argc, VALUE *argv, VALUE self)
14508
14531
  * - The magick member of the Image structure determines the format of the
14509
14532
  * returned blob (GIG, JPEG, PNG, etc.)
14510
14533
  *
14534
+ * @yield [info]
14535
+ * @yieldparam info [Magick::Image::Info]
14511
14536
  * @return [String] the blob
14512
14537
  * @see Image#from_blob
14513
14538
  */
@@ -14638,7 +14663,7 @@ Image_to_color(VALUE self, VALUE pixel_arg)
14638
14663
  /**
14639
14664
  * Alias for {Image#number_colors}.
14640
14665
  *
14641
- * @return [Numeric] number of unique colors
14666
+ * @return [Integer] number of unique colors
14642
14667
  * @see Image#number_colors
14643
14668
  */
14644
14669
  VALUE
@@ -14871,7 +14896,7 @@ Image_transpose(VALUE self)
14871
14896
  * rotating them by 90 degrees.
14872
14897
  * In-place form of {Image#transpose}.
14873
14898
  *
14874
- * @return [Magick::Image] a new image
14899
+ * @return [Magick::Image] self
14875
14900
  * @see Image#transpose
14876
14901
  */
14877
14902
  VALUE
@@ -14901,7 +14926,7 @@ Image_transverse(VALUE self)
14901
14926
  * them by 270 degrees
14902
14927
  * In-place form of {Image#transverse}.
14903
14928
  *
14904
- * @return [Magick::Image] a new image
14929
+ * @return [Magick::Image] self
14905
14930
  * @see Image#transverse
14906
14931
  */
14907
14932
  VALUE
@@ -15001,7 +15026,7 @@ Image_trim(int argc, VALUE *argv, VALUE self)
15001
15026
  * image. This may cause the image to appear to be surrounded by blank or black space when viewed
15002
15027
  * with an external viewer. This only occurs when the image is saved in a format (such as GIF)
15003
15028
  * that saves offset information. To reset the offset data, use true as the argument to trim.
15004
- * @return [Magick::Image] a new image
15029
+ * @return [Magick::Image] self
15005
15030
  * @see Image#trim
15006
15031
  */
15007
15032
  VALUE
@@ -15278,11 +15303,11 @@ unsharp_mask_args(int argc, VALUE *argv, double *radius, double *sigma,
15278
15303
  * apply the diffence amount.
15279
15304
  *
15280
15305
  * @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,
15306
+ * @param radius [Numeric] The radius of the Gaussian operator.
15307
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15308
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15284
15309
  * specified as a fraction between 0 and 1.0
15285
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15310
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15286
15311
  * between 0 and 1.0
15287
15312
  * @return [Magick::Image] a new image
15288
15313
  */
@@ -15315,20 +15340,20 @@ Image_unsharp_mask(int argc, VALUE *argv, VALUE self)
15315
15340
  * Only the specified channels are sharpened.
15316
15341
  *
15317
15342
  * @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,
15343
+ * @param radius [Numeric] The radius of the Gaussian operator.
15344
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15345
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15321
15346
  * specified as a fraction between 0 and 1.0
15322
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15347
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15323
15348
  * between 0 and 1.0
15324
15349
  * @param channel [Magick::ChannelType] a ChannelType arguments.
15325
15350
  *
15326
15351
  * @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,
15352
+ * @param radius [Numeric] The radius of the Gaussian operator.
15353
+ * @param sigma [Numeric] The standard deviation of the Gaussian operator.
15354
+ * @param amount [Numeric] The percentage of the blurred image to be added to the receiver,
15330
15355
  * specified as a fraction between 0 and 1.0
15331
- * @param threshold [Float] The threshold needed to apply the amount, specified as a fraction
15356
+ * @param threshold [Numeric] The threshold needed to apply the amount, specified as a fraction
15332
15357
  * between 0 and 1.0
15333
15358
  * @param *channels [Magick::ChannelType] one or more ChannelType arguments.
15334
15359
  *
@@ -15373,10 +15398,10 @@ Image_unsharp_mask_channel(int argc, VALUE *argv, VALUE self)
15373
15398
  * Soften the edges of an image.
15374
15399
  *
15375
15400
  * @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.
15401
+ * @param horz_radius [Numeric] Influences the amount of background color in the horizontal dimension.
15402
+ * @param vert_radius [Numeric] Influences the amount of background color in the vertical dimension.
15403
+ * @param radius [Numeric] Controls the amount of blurring.
15404
+ * @param sigma [Numeric] Controls the amount of blurring.
15380
15405
  * @return [Magick::Image] a new image
15381
15406
  */
15382
15407
  VALUE
@@ -15478,11 +15503,11 @@ Image_virtual_pixel_method_eq(VALUE self, VALUE method)
15478
15503
  * @overload watermark(mark, brightness = 1.0, saturation = 1.0, x_off = 0, y_off = 0)
15479
15504
  * @param mark [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
15480
15505
  * imagelist, uses the current image.
15481
- * @param brightness [Float] The fraction of the lightness component of the watermark pixels to be
15506
+ * @param brightness [Numeric, String] The fraction of the lightness component of the watermark pixels to be
15482
15507
  * composited onto the target image. Must be a non-negative number or a string in the form
15483
15508
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15484
15509
  * 25%. The default is 100%.
15485
- * @param saturation [Float] The fraction of the saturation component of the watermark pixels to
15510
+ * @param saturation [Numeric, String] The fraction of the saturation component of the watermark pixels to
15486
15511
  * be composited onto the target image. Must be a non-negative number or a string in the form
15487
15512
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15488
15513
  * 25%. The default is 100%.
@@ -15493,11 +15518,11 @@ Image_virtual_pixel_method_eq(VALUE self, VALUE method)
15493
15518
  * @overload watermark(mark, brightness, saturation, gravity, x_off = 0, y_off = 0)
15494
15519
  * @param mark [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
15495
15520
  * imagelist, uses the current image.
15496
- * @param brightness [Float] The fraction of the lightness component of the watermark pixels to be
15521
+ * @param brightness [Numeric, String] The fraction of the lightness component of the watermark pixels to be
15497
15522
  * composited onto the target image. Must be a non-negative number or a string in the form
15498
15523
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15499
15524
  * 25%. The default is 100%.
15500
- * @param saturation [Float] The fraction of the saturation component of the watermark pixels to
15525
+ * @param saturation [Numeric, String] The fraction of the saturation component of the watermark pixels to
15501
15526
  * be composited onto the target image. Must be a non-negative number or a string in the form
15502
15527
  * "NN%". If lightness is a number it is interpreted as a percentage. Both 0.25 and "25%" mean
15503
15528
  * 25%. The default is 100%.
@@ -15525,7 +15550,7 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15525
15550
 
15526
15551
  if (argc < 1)
15527
15552
  {
15528
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 to 6)", argc);
15553
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
15529
15554
  }
15530
15555
 
15531
15556
  ovly = rm_cur_image(argv[0]);
@@ -15547,7 +15572,7 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15547
15572
  case 1:
15548
15573
  break;
15549
15574
  default:
15550
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 to 6)", argc);
15575
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 to 6)", argc);
15551
15576
  break;
15552
15577
  }
15553
15578
 
@@ -15580,8 +15605,8 @@ Image_watermark(int argc, VALUE *argv, VALUE self)
15580
15605
  * amplitude and wavelength is specified by the given parameters.
15581
15606
  *
15582
15607
  * @overload wave(amplitude = 25.0, wavelength = 150.0)
15583
- * @param amplitude [Float] the amplitude
15584
- * @param wavelength [Float] the wave length
15608
+ * @param amplitude [Numeric] the amplitude
15609
+ * @param wavelength [Numeric] the wave length
15585
15610
  * @return [Magick::Image] a new image
15586
15611
  */
15587
15612
  VALUE
@@ -15625,11 +15650,11 @@ Image_wave(int argc, VALUE *argv, VALUE self)
15625
15650
  * appears in the reflection.
15626
15651
  *
15627
15652
  * @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
15653
+ * @param initial [Numeric] A value between 0.0 and 1.0 that specifies the initial percentage of
15629
15654
  * transparency. Higher values cause the top of the reflection to be more transparent, lower
15630
15655
  * values less transparent. The default is 0.5, which means that the top of the reflection is 50%
15631
15656
  * transparent.
15632
- * @param rate [Float] A non-negative value that specifies how rapidly the reflection transitions
15657
+ * @param rate [Numeric] A non-negative value that specifies how rapidly the reflection transitions
15633
15658
  * from the initial level of transparency to entirely transparent. The default value is 1.0, which
15634
15659
  * means that the transition occurs in 1/3 the image height. Values greater than 1.0 speed up the
15635
15660
  * transition (the reflection will have fewer rows), values lower than 1.0 slow down the
@@ -15811,9 +15836,9 @@ Image_wet_floor(int argc, VALUE *argv, VALUE self)
15811
15836
  * unchanged.
15812
15837
  *
15813
15838
  * @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
15839
+ * @param red [Numeric] the number for red channel
15840
+ * @param green [Numeric] the number for green channel
15841
+ * @param blue [Numeric] the number for blue channel
15817
15842
  * @param alpha [Numeric] the number for alpha channel
15818
15843
  * @return [Magick::Image] a new image
15819
15844
  * @see Image#black_threshold
@@ -15923,6 +15948,8 @@ void add_format_prefix(Info *info, VALUE file)
15923
15948
  * Write the image to the file.
15924
15949
  *
15925
15950
  * @param file [File, String] the file
15951
+ * @yield [info]
15952
+ * @yieldparam info [Magick::Image::Info]
15926
15953
  * @return [Magick::Image] self
15927
15954
  */
15928
15955
  VALUE
@@ -15997,8 +16024,8 @@ Image_x_resolution(VALUE self)
15997
16024
  /**
15998
16025
  * Set the horizontal resolution of the image.
15999
16026
  *
16000
- * @param val [Float] the resolution
16001
- * @return [Float] the given resolution
16027
+ * @param val [Numeric] the resolution
16028
+ * @return [Numeric] the given resolution
16002
16029
  */
16003
16030
  VALUE
16004
16031
  Image_x_resolution_eq(VALUE self, VALUE val)
@@ -16020,8 +16047,8 @@ Image_y_resolution(VALUE self)
16020
16047
  /**
16021
16048
  * Set the vertical resolution of the image.
16022
16049
  *
16023
- * @param val [Float] the resolution
16024
- * @return [Float] the given resolution
16050
+ * @param val [Numeric] the resolution
16051
+ * @return [Numeric] the given resolution
16025
16052
  */
16026
16053
  VALUE
16027
16054
  Image_y_resolution_eq(VALUE self, VALUE val)
@@ -16043,8 +16070,8 @@ Image_x_resolution(VALUE self)
16043
16070
  /**
16044
16071
  * Set the horizontal resolution of the image.
16045
16072
  *
16046
- * @param val [Float] the resolution
16047
- * @return [Float] the given resolution
16073
+ * @param val [Numeric] the resolution
16074
+ * @return [Numeric] the given resolution
16048
16075
  */
16049
16076
  VALUE
16050
16077
  Image_x_resolution_eq(VALUE self, VALUE val)
@@ -16066,8 +16093,8 @@ Image_y_resolution(VALUE self)
16066
16093
  /**
16067
16094
  * Set the vertical resolution of the image.
16068
16095
  *
16069
- * @param val [Float] the resolution
16070
- * @return [Float] the given resolution
16096
+ * @param val [Numeric] the resolution
16097
+ * @return [Numeric] the given resolution
16071
16098
  */
16072
16099
  VALUE
16073
16100
  Image_y_resolution_eq(VALUE self, VALUE val)