rmagick 2.13.2 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (380) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +17 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +107 -0
  6. data/.gitignore +25 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +37 -0
  9. data/.rubocop_todo.yml +449 -0
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +1277 -0
  12. data/CODE_OF_CONDUCT.md +128 -0
  13. data/CONTRIBUTING.md +81 -0
  14. data/Gemfile +4 -0
  15. data/LICENSE +20 -0
  16. data/README.md +324 -0
  17. data/Rakefile +190 -0
  18. data/before_install_linux.sh +69 -0
  19. data/before_install_osx.sh +57 -0
  20. data/deprecated/RMagick.rb +6 -0
  21. data/ext/RMagick/extconf.rb +334 -333
  22. data/ext/RMagick/rmagick.c +129 -127
  23. data/ext/RMagick/rmagick.h +221 -320
  24. data/ext/RMagick/rmdraw.c +458 -767
  25. data/ext/RMagick/rmenum.c +305 -752
  26. data/ext/RMagick/rmfill.c +231 -199
  27. data/ext/RMagick/rmilist.c +437 -478
  28. data/ext/RMagick/rmimage.c +6130 -5342
  29. data/ext/RMagick/rminfo.c +695 -833
  30. data/ext/RMagick/rmkinfo.c +198 -0
  31. data/ext/RMagick/rmmain.c +752 -506
  32. data/ext/RMagick/rmmontage.c +94 -152
  33. data/ext/RMagick/rmpixel.c +619 -425
  34. data/ext/RMagick/rmstruct.c +206 -309
  35. data/ext/RMagick/rmutil.c +514 -344
  36. data/lib/rmagick/version.rb +5 -0
  37. data/lib/rmagick.rb +1 -0
  38. data/lib/rmagick_internal.rb +1922 -0
  39. data/lib/rvg/clippath.rb +35 -39
  40. data/lib/rvg/container.rb +123 -124
  41. data/lib/rvg/deep_equal.rb +45 -49
  42. data/lib/rvg/describable.rb +41 -47
  43. data/lib/rvg/embellishable.rb +380 -411
  44. data/lib/rvg/misc.rb +691 -711
  45. data/lib/rvg/paint.rb +43 -47
  46. data/lib/rvg/pathdata.rb +119 -125
  47. data/lib/rvg/rvg.rb +214 -213
  48. data/lib/rvg/stretchable.rb +153 -162
  49. data/lib/rvg/stylable.rb +111 -117
  50. data/lib/rvg/text.rb +169 -180
  51. data/lib/rvg/transformable.rb +121 -127
  52. data/lib/rvg/units.rb +58 -61
  53. data/rmagick.gemspec +36 -16
  54. metadata +188 -365
  55. data/ChangeLog +0 -773
  56. data/Doxyfile +0 -1514
  57. data/README-Mac-OSX.txt +0 -1
  58. data/README.html +0 -10
  59. data/build_tarball.rake +0 -215
  60. data/doc/comtasks.html +0 -287
  61. data/doc/constants.html +0 -1581
  62. data/doc/css/doc.css +0 -299
  63. data/doc/css/popup.css +0 -34
  64. data/doc/css/ref.css +0 -67
  65. data/doc/draw.html +0 -3269
  66. data/doc/ex/InitialCoords.rb +0 -23
  67. data/doc/ex/NewCoordSys.rb +0 -32
  68. data/doc/ex/OrigCoordSys.rb +0 -18
  69. data/doc/ex/PreserveAspectRatio.rb +0 -205
  70. data/doc/ex/RotateScale.rb +0 -37
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -16
  73. data/doc/ex/Use02.rb +0 -21
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -33
  76. data/doc/ex/adaptive_threshold.rb +0 -10
  77. data/doc/ex/add_noise.rb +0 -17
  78. data/doc/ex/affine.rb +0 -48
  79. data/doc/ex/affine_transform.rb +0 -20
  80. data/doc/ex/arc.rb +0 -49
  81. data/doc/ex/arcpath.rb +0 -33
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -61
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -18
  87. data/doc/ex/bilevel_channel.rb +0 -9
  88. data/doc/ex/blur_image.rb +0 -12
  89. data/doc/ex/border.rb +0 -10
  90. data/doc/ex/bounding_box.rb +0 -44
  91. data/doc/ex/cbezier1.rb +0 -42
  92. data/doc/ex/cbezier2.rb +0 -42
  93. data/doc/ex/cbezier3.rb +0 -42
  94. data/doc/ex/cbezier4.rb +0 -43
  95. data/doc/ex/cbezier5.rb +0 -43
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -26
  98. data/doc/ex/charcoal.rb +0 -12
  99. data/doc/ex/chop.rb +0 -29
  100. data/doc/ex/circle.rb +0 -33
  101. data/doc/ex/circle01.rb +0 -17
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -60
  104. data/doc/ex/color_fill_to_border.rb +0 -29
  105. data/doc/ex/color_floodfill.rb +0 -28
  106. data/doc/ex/color_histogram.rb +0 -48
  107. data/doc/ex/color_reset.rb +0 -11
  108. data/doc/ex/colorize.rb +0 -16
  109. data/doc/ex/colors.rb +0 -64
  110. data/doc/ex/compose_mask.rb +0 -23
  111. data/doc/ex/composite.rb +0 -135
  112. data/doc/ex/composite_layers.rb +0 -53
  113. data/doc/ex/composite_tiled.rb +0 -23
  114. data/doc/ex/contrast.rb +0 -36
  115. data/doc/ex/crop.rb +0 -31
  116. data/doc/ex/crop_with_gravity.rb +0 -46
  117. data/doc/ex/cubic01.rb +0 -45
  118. data/doc/ex/cubic02.rb +0 -94
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -13
  121. data/doc/ex/drawcomp.rb +0 -42
  122. data/doc/ex/drop_shadow.rb +0 -60
  123. data/doc/ex/edge.rb +0 -11
  124. data/doc/ex/ellipse.rb +0 -45
  125. data/doc/ex/ellipse01.rb +0 -22
  126. data/doc/ex/emboss.rb +0 -11
  127. data/doc/ex/enhance.rb +0 -28
  128. data/doc/ex/equalize.rb +0 -11
  129. data/doc/ex/evenodd.rb +0 -43
  130. data/doc/ex/fill_pattern.rb +0 -26
  131. data/doc/ex/flatten_images.rb +0 -36
  132. data/doc/ex/flip.rb +0 -11
  133. data/doc/ex/flop.rb +0 -11
  134. data/doc/ex/font_styles.rb +0 -34
  135. data/doc/ex/fonts.rb +0 -20
  136. data/doc/ex/frame.rb +0 -12
  137. data/doc/ex/gaussian_blur.rb +0 -11
  138. data/doc/ex/get_multiline_type_metrics.rb +0 -42
  139. data/doc/ex/get_pixels.rb +0 -48
  140. data/doc/ex/get_type_metrics.rb +0 -146
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -46
  143. data/doc/ex/gravity.rb +0 -79
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -46
  147. data/doc/ex/images/Apple.miff +0 -0
  148. data/doc/ex/images/Ballerina.jpg +0 -0
  149. data/doc/ex/images/Ballerina3.jpg +0 -0
  150. data/doc/ex/images/Button_0.gif +0 -0
  151. data/doc/ex/images/Button_1.gif +0 -0
  152. data/doc/ex/images/Button_2.gif +0 -0
  153. data/doc/ex/images/Button_3.gif +0 -0
  154. data/doc/ex/images/Button_4.gif +0 -0
  155. data/doc/ex/images/Button_5.gif +0 -0
  156. data/doc/ex/images/Button_6.gif +0 -0
  157. data/doc/ex/images/Button_7.gif +0 -0
  158. data/doc/ex/images/Button_8.gif +0 -0
  159. data/doc/ex/images/Button_9.gif +0 -0
  160. data/doc/ex/images/Button_A.gif +0 -0
  161. data/doc/ex/images/Button_B.gif +0 -0
  162. data/doc/ex/images/Button_C.gif +0 -0
  163. data/doc/ex/images/Button_D.gif +0 -0
  164. data/doc/ex/images/Button_E.gif +0 -0
  165. data/doc/ex/images/Button_F.gif +0 -0
  166. data/doc/ex/images/Button_G.gif +0 -0
  167. data/doc/ex/images/Button_H.gif +0 -0
  168. data/doc/ex/images/Button_I.gif +0 -0
  169. data/doc/ex/images/Button_J.gif +0 -0
  170. data/doc/ex/images/Button_K.gif +0 -0
  171. data/doc/ex/images/Button_L.gif +0 -0
  172. data/doc/ex/images/Button_M.gif +0 -0
  173. data/doc/ex/images/Button_N.gif +0 -0
  174. data/doc/ex/images/Button_O.gif +0 -0
  175. data/doc/ex/images/Button_P.gif +0 -0
  176. data/doc/ex/images/Button_Q.gif +0 -0
  177. data/doc/ex/images/Button_R.gif +0 -0
  178. data/doc/ex/images/Button_S.gif +0 -0
  179. data/doc/ex/images/Button_T.gif +0 -0
  180. data/doc/ex/images/Button_U.gif +0 -0
  181. data/doc/ex/images/Button_V.gif +0 -0
  182. data/doc/ex/images/Button_W.gif +0 -0
  183. data/doc/ex/images/Button_X.gif +0 -0
  184. data/doc/ex/images/Button_Y.gif +0 -0
  185. data/doc/ex/images/Button_Z.gif +0 -0
  186. data/doc/ex/images/Cheetah.jpg +0 -0
  187. data/doc/ex/images/Coffee.wmf +0 -0
  188. data/doc/ex/images/Flower_Hat.jpg +0 -0
  189. data/doc/ex/images/Gold_Statue.jpg +0 -0
  190. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  191. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  192. data/doc/ex/images/Leaf.miff +0 -0
  193. data/doc/ex/images/No.wmf +0 -0
  194. data/doc/ex/images/Polynesia.jpg +0 -0
  195. data/doc/ex/images/Red_Rocks.jpg +0 -0
  196. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  197. data/doc/ex/images/Shorts.jpg +0 -0
  198. data/doc/ex/images/Snake.wmf +0 -0
  199. data/doc/ex/images/Violin.jpg +0 -0
  200. data/doc/ex/images/Yellow_Rose.miff +0 -0
  201. data/doc/ex/images/big-duck.gif +0 -0
  202. data/doc/ex/images/duck.gif +0 -0
  203. data/doc/ex/images/duck0.gif +0 -0
  204. data/doc/ex/images/duck1.gif +0 -0
  205. data/doc/ex/images/duck10.gif +0 -0
  206. data/doc/ex/images/duck11.gif +0 -0
  207. data/doc/ex/images/duck12.gif +0 -0
  208. data/doc/ex/images/duck13.gif +0 -0
  209. data/doc/ex/images/duck14.gif +0 -0
  210. data/doc/ex/images/duck15.gif +0 -0
  211. data/doc/ex/images/duck2.gif +0 -0
  212. data/doc/ex/images/duck3.gif +0 -0
  213. data/doc/ex/images/duck4.gif +0 -0
  214. data/doc/ex/images/duck5.gif +0 -0
  215. data/doc/ex/images/duck6.gif +0 -0
  216. data/doc/ex/images/duck7.gif +0 -0
  217. data/doc/ex/images/duck8.gif +0 -0
  218. data/doc/ex/images/duck9.gif +0 -0
  219. data/doc/ex/images/graydient230x6.gif +0 -0
  220. data/doc/ex/images/logo400x83.gif +0 -0
  221. data/doc/ex/images/model.miff +0 -0
  222. data/doc/ex/images/notimplemented.gif +0 -0
  223. data/doc/ex/images/smile.miff +0 -0
  224. data/doc/ex/images/spin.gif +0 -0
  225. data/doc/ex/implode.rb +0 -34
  226. data/doc/ex/level.rb +0 -11
  227. data/doc/ex/level_colors.rb +0 -11
  228. data/doc/ex/line.rb +0 -42
  229. data/doc/ex/line01.rb +0 -23
  230. data/doc/ex/mask.rb +0 -36
  231. data/doc/ex/matte_fill_to_border.rb +0 -40
  232. data/doc/ex/matte_floodfill.rb +0 -33
  233. data/doc/ex/matte_replace.rb +0 -40
  234. data/doc/ex/median_filter.rb +0 -28
  235. data/doc/ex/modulate.rb +0 -11
  236. data/doc/ex/mono.rb +0 -23
  237. data/doc/ex/morph.rb +0 -26
  238. data/doc/ex/mosaic.rb +0 -35
  239. data/doc/ex/motion_blur.rb +0 -11
  240. data/doc/ex/negate.rb +0 -11
  241. data/doc/ex/negate_channel.rb +0 -9
  242. data/doc/ex/nested_rvg.rb +0 -21
  243. data/doc/ex/nonzero.rb +0 -43
  244. data/doc/ex/normalize.rb +0 -11
  245. data/doc/ex/oil_paint.rb +0 -11
  246. data/doc/ex/opacity.rb +0 -37
  247. data/doc/ex/ordered_dither.rb +0 -11
  248. data/doc/ex/path.rb +0 -64
  249. data/doc/ex/pattern1.rb +0 -25
  250. data/doc/ex/pattern2.rb +0 -26
  251. data/doc/ex/polaroid.rb +0 -28
  252. data/doc/ex/polygon.rb +0 -24
  253. data/doc/ex/polygon01.rb +0 -23
  254. data/doc/ex/polyline.rb +0 -23
  255. data/doc/ex/polyline01.rb +0 -23
  256. data/doc/ex/posterize.rb +0 -8
  257. data/doc/ex/preview.rb +0 -9
  258. data/doc/ex/qbezierpath.rb +0 -52
  259. data/doc/ex/quad01.rb +0 -36
  260. data/doc/ex/quantize-m.rb +0 -25
  261. data/doc/ex/radial_blur.rb +0 -9
  262. data/doc/ex/raise.rb +0 -8
  263. data/doc/ex/random_threshold_channel.rb +0 -13
  264. data/doc/ex/rect01.rb +0 -15
  265. data/doc/ex/rect02.rb +0 -22
  266. data/doc/ex/rectangle.rb +0 -35
  267. data/doc/ex/reduce_noise.rb +0 -28
  268. data/doc/ex/remap.rb +0 -12
  269. data/doc/ex/remap_images.rb +0 -21
  270. data/doc/ex/resize_to_fill.rb +0 -10
  271. data/doc/ex/resize_to_fit.rb +0 -10
  272. data/doc/ex/roll.rb +0 -9
  273. data/doc/ex/rotate.rb +0 -45
  274. data/doc/ex/rotate_f.rb +0 -14
  275. data/doc/ex/roundrect.rb +0 -34
  276. data/doc/ex/rubyname.rb +0 -30
  277. data/doc/ex/rvg_clippath.rb +0 -14
  278. data/doc/ex/rvg_linecap.rb +0 -43
  279. data/doc/ex/rvg_linejoin.rb +0 -41
  280. data/doc/ex/rvg_opacity.rb +0 -19
  281. data/doc/ex/rvg_pattern.rb +0 -26
  282. data/doc/ex/rvg_stroke_dasharray.rb +0 -12
  283. data/doc/ex/segment.rb +0 -11
  284. data/doc/ex/sepiatone.rb +0 -8
  285. data/doc/ex/shade.rb +0 -11
  286. data/doc/ex/shadow.rb +0 -31
  287. data/doc/ex/shave.rb +0 -15
  288. data/doc/ex/shear.rb +0 -10
  289. data/doc/ex/sketch.rb +0 -18
  290. data/doc/ex/skewx.rb +0 -52
  291. data/doc/ex/skewy.rb +0 -47
  292. data/doc/ex/smile.rb +0 -125
  293. data/doc/ex/solarize.rb +0 -11
  294. data/doc/ex/sparse_color.rb +0 -55
  295. data/doc/ex/splice.rb +0 -9
  296. data/doc/ex/spread.rb +0 -11
  297. data/doc/ex/stegano.rb +0 -55
  298. data/doc/ex/stroke_dasharray.rb +0 -43
  299. data/doc/ex/stroke_fill.rb +0 -11
  300. data/doc/ex/stroke_linecap.rb +0 -44
  301. data/doc/ex/stroke_linejoin.rb +0 -48
  302. data/doc/ex/stroke_width.rb +0 -49
  303. data/doc/ex/swirl.rb +0 -17
  304. data/doc/ex/text.rb +0 -37
  305. data/doc/ex/text01.rb +0 -17
  306. data/doc/ex/text_align.rb +0 -36
  307. data/doc/ex/text_antialias.rb +0 -38
  308. data/doc/ex/text_styles.rb +0 -21
  309. data/doc/ex/text_undercolor.rb +0 -28
  310. data/doc/ex/texture_fill_to_border.rb +0 -34
  311. data/doc/ex/texture_floodfill.rb +0 -32
  312. data/doc/ex/texturefill.rb +0 -25
  313. data/doc/ex/threshold.rb +0 -13
  314. data/doc/ex/to_blob.rb +0 -14
  315. data/doc/ex/translate.rb +0 -39
  316. data/doc/ex/transparent.rb +0 -38
  317. data/doc/ex/transpose.rb +0 -9
  318. data/doc/ex/transverse.rb +0 -9
  319. data/doc/ex/tref01.rb +0 -25
  320. data/doc/ex/triangle01.rb +0 -16
  321. data/doc/ex/trim.rb +0 -24
  322. data/doc/ex/tspan01.rb +0 -18
  323. data/doc/ex/tspan02.rb +0 -19
  324. data/doc/ex/tspan03.rb +0 -21
  325. data/doc/ex/unsharp_mask.rb +0 -28
  326. data/doc/ex/viewex.rb +0 -35
  327. data/doc/ex/vignette.rb +0 -12
  328. data/doc/ex/watermark.rb +0 -28
  329. data/doc/ex/wave.rb +0 -9
  330. data/doc/ex/wet_floor.rb +0 -59
  331. data/doc/ex/writing_mode01.rb +0 -27
  332. data/doc/ex/writing_mode02.rb +0 -26
  333. data/doc/ilist.html +0 -2056
  334. data/doc/image1.html +0 -4680
  335. data/doc/image2.html +0 -3665
  336. data/doc/image3.html +0 -4522
  337. data/doc/imageattrs.html +0 -1638
  338. data/doc/imusage.html +0 -514
  339. data/doc/index.html +0 -416
  340. data/doc/info.html +0 -1499
  341. data/doc/magick.html +0 -565
  342. data/doc/optequiv.html +0 -2435
  343. data/doc/rvg.html +0 -975
  344. data/doc/rvgclip.html +0 -248
  345. data/doc/rvggroup.html +0 -305
  346. data/doc/rvgimage.html +0 -289
  347. data/doc/rvgpattern.html +0 -475
  348. data/doc/rvgshape.html +0 -406
  349. data/doc/rvgstyle.html +0 -270
  350. data/doc/rvgtext.html +0 -465
  351. data/doc/rvgtspan.html +0 -238
  352. data/doc/rvgtut.html +0 -530
  353. data/doc/rvguse.html +0 -145
  354. data/doc/rvgxform.html +0 -294
  355. data/doc/scripts/doc.js +0 -22
  356. data/doc/scripts/stripeTables.js +0 -23
  357. data/doc/struct.html +0 -1339
  358. data/doc/usage.html +0 -1621
  359. data/examples/constitute.rb +0 -7
  360. data/examples/crop_with_gravity.rb +0 -46
  361. data/examples/demo.rb +0 -324
  362. data/examples/describe.rb +0 -44
  363. data/examples/find_similar_region.rb +0 -34
  364. data/examples/histogram.rb +0 -325
  365. data/examples/identify.rb +0 -187
  366. data/examples/image_opacity.rb +0 -29
  367. data/examples/import_export.rb +0 -31
  368. data/examples/pattern_fill.rb +0 -38
  369. data/examples/rotating_text.rb +0 -45
  370. data/examples/spinner.rb +0 -50
  371. data/examples/thumbnail.rb +0 -65
  372. data/examples/vignette.rb +0 -79
  373. data/ext/RMagick/MANIFEST +0 -358
  374. data/lib/RMagick.rb +0 -1962
  375. data/metaconfig +0 -7
  376. data/post-clean.rb +0 -12
  377. data/post-install.rb +0 -50
  378. data/post-setup.rb +0 -254
  379. data/setup.rb +0 -1585
  380. data/uninstall.rb +0 -76
@@ -41,7 +41,7 @@ destroy_Montage(void *obj)
41
41
  }
42
42
  if (montage->info)
43
43
  {
44
- (void) DestroyMontageInfo(montage->info);
44
+ DestroyMontageInfo(montage->info);
45
45
  montage->info = NULL;
46
46
  }
47
47
  xfree(montage);
@@ -51,11 +51,7 @@ destroy_Montage(void *obj)
51
51
  /**
52
52
  * Create a new Montage object.
53
53
  *
54
- * Ruby usage:
55
- * - @verbatim Montage.new @endverbatim
56
- *
57
- * @param class the Ruby class to use
58
- * @return a new Montage object
54
+ * @return [Magick::ImageList::Montage] a new Montage object
59
55
  */
60
56
  VALUE
61
57
  Montage_alloc(VALUE class)
@@ -63,7 +59,7 @@ Montage_alloc(VALUE class)
63
59
  MontageInfo *montage_info;
64
60
  Montage *montage;
65
61
  Info *image_info;
66
- volatile VALUE montage_obj;
62
+ VALUE montage_obj;
67
63
 
68
64
  // DO NOT call rm_info_new - we don't want to support an Info parm block.
69
65
  image_info = CloneImageInfo(NULL);
@@ -73,7 +69,7 @@ Montage_alloc(VALUE class)
73
69
  }
74
70
 
75
71
  montage_info = CloneMontageInfo(image_info, NULL);
76
- (void) (void) DestroyImageInfo(image_info);
72
+ (void) DestroyImageInfo(image_info);
77
73
 
78
74
  if (!montage_info)
79
75
  {
@@ -85,6 +81,8 @@ Montage_alloc(VALUE class)
85
81
  montage->compose = OverCompositeOp;
86
82
  montage_obj = Data_Wrap_Struct(class, NULL, destroy_Montage, montage);
87
83
 
84
+ RB_GC_GUARD(montage_obj);
85
+
88
86
  return montage_obj;
89
87
  }
90
88
 
@@ -92,12 +90,8 @@ Montage_alloc(VALUE class)
92
90
  /**
93
91
  * Set background_color value.
94
92
  *
95
- * Ruby usage:
96
- * - @verbatim Magick::Montage#background_color(color-name) @endverbatim
97
- *
98
- * @param self this object
99
- * @param color the color name
100
- * @return self
93
+ * @param color [Magick::Pixel, String] the color name
94
+ * @return [Magick::Pixel, String] the given color name
101
95
  */
102
96
  VALUE
103
97
  Montage_background_color_eq(VALUE self, VALUE color)
@@ -105,20 +99,16 @@ Montage_background_color_eq(VALUE self, VALUE color)
105
99
  Montage *montage;
106
100
 
107
101
  Data_Get_Struct(self, Montage, montage);
108
- Color_to_PixelPacket(&montage->info->background_color, color);
109
- return self;
102
+ Color_to_PixelColor(&montage->info->background_color, color);
103
+ return color;
110
104
  }
111
105
 
112
106
 
113
107
  /**
114
108
  * Set border_color value.
115
109
  *
116
- * Ruby usage:
117
- * - @verbatim Magick::Montage#border_color(color-name) @endverbatim
118
- *
119
- * @param self this object
120
- * @param color the color name
121
- * @return self
110
+ * @param color [Magick::Pixel, String] the color name
111
+ * @return [Magick::Pixel, String] the given color name
122
112
  */
123
113
  VALUE
124
114
  Montage_border_color_eq(VALUE self, VALUE color)
@@ -126,20 +116,16 @@ Montage_border_color_eq(VALUE self, VALUE color)
126
116
  Montage *montage;
127
117
 
128
118
  Data_Get_Struct(self, Montage, montage);
129
- Color_to_PixelPacket(&montage->info->border_color, color);
130
- return self;
119
+ Color_to_PixelColor(&montage->info->border_color, color);
120
+ return color;
131
121
  }
132
122
 
133
123
 
134
124
  /**
135
125
  * Set border_width value.
136
126
  *
137
- * Ruby usage:
138
- * - @verbatim Magick::Montage#border_width(width) @endverbatim
139
- *
140
- * @param self this object
141
- * @param width the width
142
- * @return self
127
+ * @param width [Numeric] the width
128
+ * @return [Numeric] the given width
143
129
  */
144
130
  VALUE
145
131
  Montage_border_width_eq(VALUE self, VALUE width)
@@ -148,19 +134,15 @@ Montage_border_width_eq(VALUE self, VALUE width)
148
134
 
149
135
  Data_Get_Struct(self, Montage, montage);
150
136
  montage->info->border_width = NUM2ULONG(width);
151
- return self;
137
+ return width;
152
138
  }
153
139
 
154
140
 
155
141
  /**
156
142
  * Set a composition operator.
157
143
  *
158
- * Ruby usage:
159
- * - @verbatim Magick::Montage#compose(width) @endverbatim
160
- *
161
- * @param self this object
162
- * @param compose the composition operator
163
- * @return self
144
+ * @param compose [Magick::CompositeOperator] the composition operator
145
+ * @return [Magick::CompositeOperator] the given compose operator
164
146
  */
165
147
  VALUE
166
148
  Montage_compose_eq(VALUE self, VALUE compose)
@@ -169,19 +151,15 @@ Montage_compose_eq(VALUE self, VALUE compose)
169
151
 
170
152
  Data_Get_Struct(self, Montage, montage);
171
153
  VALUE_TO_ENUM(compose, montage->compose, CompositeOperator);
172
- return self;
154
+ return compose;
173
155
  }
174
156
 
175
157
 
176
158
  /**
177
159
  * Set filename value.
178
160
  *
179
- * Ruby usage:
180
- * - @verbatim Magick::Montage#filename(name) @endverbatim
181
- *
182
- * @param self this object
183
- * @param filename the filename
184
- * @return self
161
+ * @param filename [String] the filename
162
+ * @return [String] filename
185
163
  */
186
164
  VALUE
187
165
  Montage_filename_eq(VALUE self, VALUE filename)
@@ -189,20 +167,16 @@ Montage_filename_eq(VALUE self, VALUE filename)
189
167
  Montage *montage;
190
168
 
191
169
  Data_Get_Struct(self, Montage, montage);
192
- strncpy(montage->info->filename, StringValuePtr(filename), MaxTextExtent-1);
193
- return self;
170
+ strlcpy(montage->info->filename, StringValueCStr(filename), sizeof(montage->info->filename));
171
+ return filename;
194
172
  }
195
173
 
196
174
 
197
175
  /**
198
176
  * Set fill value.
199
177
  *
200
- * Ruby usage:
201
- * - @verbatim Magick::Montage#fill(color-name) @endverbatim
202
- *
203
- * @param self this object
204
- * @param color the color name
205
- * @return self
178
+ * @param color [Magick::Pixel, String] the color name
179
+ * @return [Magick::Pixel, String] the given color name
206
180
  */
207
181
  VALUE
208
182
  Montage_fill_eq(VALUE self, VALUE color)
@@ -210,20 +184,16 @@ Montage_fill_eq(VALUE self, VALUE color)
210
184
  Montage *montage;
211
185
 
212
186
  Data_Get_Struct(self, Montage, montage);
213
- Color_to_PixelPacket(&montage->info->fill, color);
214
- return self;
187
+ Color_to_PixelColor(&montage->info->fill, color);
188
+ return color;
215
189
  }
216
190
 
217
191
 
218
192
  /**
219
193
  * Set font value.
220
194
  *
221
- * Ruby usage:
222
- * - @verbatim Magick::Montage#font(font-name) @endverbatim
223
- *
224
- * @param self this object
225
- * @param font the font name
226
- * @return self
195
+ * @param font [String] the font name
196
+ * @return [String] the given font name
227
197
  */
228
198
  VALUE
229
199
  Montage_font_eq(VALUE self, VALUE font)
@@ -231,74 +201,70 @@ Montage_font_eq(VALUE self, VALUE font)
231
201
  Montage *montage;
232
202
 
233
203
  Data_Get_Struct(self, Montage, montage);
234
- magick_clone_string(&montage->info->font, StringValuePtr(font));
204
+ magick_clone_string(&montage->info->font, StringValueCStr(font));
235
205
 
236
- return self;
206
+ return font;
237
207
  }
238
208
 
239
209
 
240
210
  /**
241
211
  * Set frame value.
242
212
  *
243
- * Ruby usage:
244
- * - @verbatim Magick::Montage#frame(frame-geometry) @endverbatim
245
- *
246
- * Notes:
247
- * - The geometry is a string in the form:
248
- * @verbatim <width>x<height>+<outer-bevel-width>+<inner-bevel-width> @endverbatim
249
- * or a Geometry object
213
+ * - The geometry is a string in the form:
214
+ * <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
215
+ * or a Geometry object
250
216
  *
251
- * @param self this object
252
- * @param frame_arg the frame geometry
253
- * @return self
217
+ * @param frame_arg [String] the frame geometry
218
+ * @see https://www.imagemagick.org/Magick++/Geometry.html
254
219
  */
255
220
  VALUE
256
221
  Montage_frame_eq(VALUE self, VALUE frame_arg)
257
222
  {
258
223
  Montage *montage;
259
- volatile VALUE frame;
224
+ VALUE frame;
260
225
 
261
226
  Data_Get_Struct(self, Montage, montage);
262
- frame = rm_to_s(frame_arg);
263
- magick_clone_string(&montage->info->frame, StringValuePtr(frame));
227
+ frame = rb_String(frame_arg);
228
+ magick_clone_string(&montage->info->frame, StringValueCStr(frame));
264
229
 
265
- return self;
230
+ RB_GC_GUARD(frame);
231
+
232
+ return frame_arg;
266
233
  }
267
234
 
268
235
 
269
236
  /**
270
237
  * Set geometry value.
271
238
  *
272
- * Ruby usage:
273
- * - @verbatim Magick::Montage#geometry(geometry) @endverbatim
239
+ * - The geometry is a string in the form:
240
+ * <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
241
+ * or a Geometry object
274
242
  *
275
- * @param self this object
276
- * @param geometry_arg the geometry
277
- * @return self
243
+ * @param geometry_arg [String] the geometry
244
+ * @return [String] the given geometry
245
+ * @see https://www.imagemagick.org/Magick++/Geometry.html
278
246
  */
279
247
  VALUE
280
248
  Montage_geometry_eq(VALUE self, VALUE geometry_arg)
281
249
  {
282
250
  Montage *montage;
283
- volatile VALUE geometry;
251
+ VALUE geometry;
284
252
 
285
253
  Data_Get_Struct(self, Montage, montage);
286
- geometry = rm_to_s(geometry_arg);
287
- magick_clone_string(&montage->info->geometry, StringValuePtr(geometry));
254
+ geometry = rb_String(geometry_arg);
255
+ magick_clone_string(&montage->info->geometry, StringValueCStr(geometry));
288
256
 
289
- return self;
257
+ RB_GC_GUARD(geometry);
258
+
259
+ return geometry_arg;
290
260
  }
291
261
 
292
262
 
293
263
  /**
294
264
  * Set gravity value.
295
265
  *
296
- * Ruby usage:
297
- * - @verbatim Magick::Montage#gravity(gravity-type) @endverbatim
298
- *
299
- * @param self this object
300
- * @param gravity the gravity type
301
- * @return self
266
+ * @param gravity [Magick::GravityType] the gravity type
267
+ * @return [Magick::GravityType] the given gravity
302
268
  */
303
269
  VALUE
304
270
  Montage_gravity_eq(VALUE self, VALUE gravity)
@@ -307,18 +273,14 @@ Montage_gravity_eq(VALUE self, VALUE gravity)
307
273
 
308
274
  Data_Get_Struct(self, Montage, montage);
309
275
  VALUE_TO_ENUM(gravity, montage->info->gravity, GravityType);
310
- return self;
276
+ return gravity;
311
277
  }
312
278
 
313
279
 
314
280
  /**
315
281
  * Initialize a Montage object. Does nothing currently.
316
282
  *
317
- * Ruby usage:
318
- * - @verbatim Magick::Montage#initialize @endverbatim
319
- *
320
- * @param self this object
321
- * @return self
283
+ * @return [Magick::ImageList::Montage] self
322
284
  */
323
285
  VALUE
324
286
  Montage_initialize(VALUE self)
@@ -331,12 +293,8 @@ Montage_initialize(VALUE self)
331
293
  /**
332
294
  * Set matte_color value.
333
295
  *
334
- * Ruby usage:
335
- * - @verbatim Magick::Montage#matte_color(color-name) @endverbatim
336
- *
337
- * @param self this object
338
- * @param color the color name
339
- * @return self
296
+ * @param color [Magick::Pixel, String] the color name
297
+ * @return [Magick::Pixel, String] the given color name
340
298
  */
341
299
  VALUE
342
300
  Montage_matte_color_eq(VALUE self, VALUE color)
@@ -344,20 +302,16 @@ Montage_matte_color_eq(VALUE self, VALUE color)
344
302
  Montage *montage;
345
303
 
346
304
  Data_Get_Struct(self, Montage, montage);
347
- Color_to_PixelPacket(&montage->info->matte_color, color);
348
- return self;
305
+ Color_to_PixelColor(&montage->info->matte_color, color);
306
+ return color;
349
307
  }
350
308
 
351
309
 
352
310
  /**
353
311
  * Set pointsize value.
354
312
  *
355
- * Ruby usage:
356
- * - @verbatim Magick::Montage#pointsize= @endverbatim
357
- *
358
- * @param self this object
359
- * @param size the point size
360
- * @return self
313
+ * @param size [Numeric] the point size
314
+ * @return [Numeric] the given point size
361
315
  */
362
316
  VALUE
363
317
  Montage_pointsize_eq(VALUE self, VALUE size)
@@ -366,19 +320,15 @@ Montage_pointsize_eq(VALUE self, VALUE size)
366
320
 
367
321
  Data_Get_Struct(self, Montage, montage);
368
322
  montage->info->pointsize = NUM2DBL(size);
369
- return self;
323
+ return size;
370
324
  }
371
325
 
372
326
 
373
327
  /**
374
328
  * Set shadow value.
375
329
  *
376
- * Ruby usage:
377
- * - @verbatim Magick::Montage#shadow= @endverbatim
378
- *
379
- * @param self this object
380
- * @param shadow the shadow
381
- * @return self
330
+ * @param shadow [Bool] true if the shadow will be enabled
331
+ * @return [Bool] the given value
382
332
  */
383
333
  VALUE
384
334
  Montage_shadow_eq(VALUE self, VALUE shadow)
@@ -387,19 +337,15 @@ Montage_shadow_eq(VALUE self, VALUE shadow)
387
337
 
388
338
  Data_Get_Struct(self, Montage, montage);
389
339
  montage->info->shadow = (MagickBooleanType) RTEST(shadow);
390
- return self;
340
+ return shadow;
391
341
  }
392
342
 
393
343
 
394
344
  /**
395
345
  * Set stroke value.
396
346
  *
397
- * Ruby usage:
398
- * - @verbatim Magick::Montage#stroke(color-name) @endverbatim
399
- *
400
- * @param self this object
401
- * @param color the color name
402
- * @return self
347
+ * @param color [Magick::Pixel, String] the color name
348
+ * @return [Magick::Pixel, String] the given color name
403
349
  */
404
350
  VALUE
405
351
  Montage_stroke_eq(VALUE self, VALUE color)
@@ -407,20 +353,17 @@ Montage_stroke_eq(VALUE self, VALUE color)
407
353
  Montage *montage;
408
354
 
409
355
  Data_Get_Struct(self, Montage, montage);
410
- Color_to_PixelPacket(&montage->info->stroke, color);
411
- return self;
356
+ Color_to_PixelColor(&montage->info->stroke, color);
357
+ return color;
412
358
  }
413
359
 
414
360
 
415
361
  /**
416
362
  * Set texture value.
417
363
  *
418
- * Ruby usage:
419
- * - @verbatim Montage#texture(texture-image) @endverbatim
420
- *
421
- * @param self this object
422
- * @param texture the texture image
423
- * @return self
364
+ * @param texture [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
365
+ * imagelist, uses the current image.
366
+ * @return [Magick::Image] the given texture image
424
367
  */
425
368
  VALUE
426
369
  Montage_texture_eq(VALUE self, VALUE texture)
@@ -444,46 +387,45 @@ Montage_texture_eq(VALUE self, VALUE texture)
444
387
  texture_image = rm_check_destroyed(texture);
445
388
 
446
389
  // Write a temp copy of the image & save its name.
447
- rm_write_temp_image(texture_image, temp_name);
390
+ rm_write_temp_image(texture_image, temp_name, sizeof(temp_name));
448
391
  magick_clone_string(&montage->info->texture, temp_name);
449
392
 
450
- return self;
393
+ return texture;
451
394
  }
452
395
 
453
396
 
454
397
  /**
455
398
  * Set tile value.
456
399
  *
457
- * Ruby usage:
458
- * - @verbatim Magick::Montage#tile(tile) @endverbatim
400
+ * - The geometry is a string in the form:
401
+ * <width>x<height>+<outer-bevel-width>+<inner-bevel-width>
402
+ * or a Geometry object
459
403
  *
460
- * @param self this object
461
- * @param tile_arg the tile
462
- * @return self
404
+ * @param tile_arg [String] the tile geometry
405
+ * @return [String] the given tile geometry
406
+ * @see https://www.imagemagick.org/Magick++/Geometry.html
463
407
  */
464
408
  VALUE
465
409
  Montage_tile_eq(VALUE self, VALUE tile_arg)
466
410
  {
467
411
  Montage *montage;
468
- volatile VALUE tile;
412
+ VALUE tile;
469
413
 
470
414
  Data_Get_Struct(self, Montage, montage);
471
- tile = rm_to_s(tile_arg);
472
- magick_clone_string(&montage->info->tile, StringValuePtr(tile));
415
+ tile = rb_String(tile_arg);
416
+ magick_clone_string(&montage->info->tile, StringValueCStr(tile));
473
417
 
474
- return self;
418
+ RB_GC_GUARD(tile);
419
+
420
+ return tile_arg;
475
421
  }
476
422
 
477
423
 
478
424
  /**
479
425
  * Set title value.
480
426
  *
481
- * Ruby usage:
482
- * - @verbatim Magick::Montage#title(title) @endverbatim
483
- *
484
- * @param self this object
485
- * @param title the title
486
- * @return self
427
+ * @param title [String] the title
428
+ * @return [String] the given title
487
429
  */
488
430
  VALUE
489
431
  Montage_title_eq(VALUE self, VALUE title)
@@ -491,8 +433,8 @@ Montage_title_eq(VALUE self, VALUE title)
491
433
  Montage *montage;
492
434
 
493
435
  Data_Get_Struct(self, Montage, montage);
494
- magick_clone_string(&montage->info->title, StringValuePtr(title));
495
- return self;
436
+ magick_clone_string(&montage->info->title, StringValueCStr(title));
437
+ return title;
496
438
  }
497
439
 
498
440