rmagick 4.0.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (420) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +14 -0
  3. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  4. data/.devcontainer/devcontainer.json +11 -0
  5. data/.devcontainer/setup-repo.sh +10 -0
  6. data/.devcontainer/setup-user.sh +45 -0
  7. data/.editorconfig +3 -0
  8. data/.github/ISSUE_TEMPLATE.md +17 -0
  9. data/.github/workflows/ci.yml +138 -0
  10. data/.gitignore +5 -1
  11. data/.rspec +1 -0
  12. data/.rubocop.yml +24 -0
  13. data/.rubocop_todo.yml +150 -297
  14. data/.yardopts +5 -0
  15. data/CHANGELOG.md +222 -0
  16. data/CODE_OF_CONDUCT.md +122 -7
  17. data/CONTRIBUTING.md +14 -10
  18. data/README.md +316 -0
  19. data/Rakefile +59 -93
  20. data/before_install_linux.sh +23 -29
  21. data/before_install_osx.sh +58 -2
  22. data/ext/RMagick/extconf.rb +191 -110
  23. data/ext/RMagick/rmagick.c +77 -104
  24. data/ext/RMagick/rmagick.h +138 -99
  25. data/ext/RMagick/rmagick_gvl.h +224 -0
  26. data/ext/RMagick/rmdraw.c +464 -526
  27. data/ext/RMagick/rmenum.c +132 -121
  28. data/ext/RMagick/rmfill.c +223 -83
  29. data/ext/RMagick/rmilist.c +360 -288
  30. data/ext/RMagick/rmimage.c +5550 -4318
  31. data/ext/RMagick/rminfo.c +637 -818
  32. data/ext/RMagick/rmkinfo.c +88 -92
  33. data/ext/RMagick/rmmain.c +462 -263
  34. data/ext/RMagick/rmmontage.c +105 -150
  35. data/ext/RMagick/rmpixel.c +554 -359
  36. data/ext/RMagick/rmstruct.c +81 -94
  37. data/ext/RMagick/rmutil.c +279 -270
  38. data/lib/rmagick/version.rb +3 -1
  39. data/lib/rmagick.rb +2 -0
  40. data/lib/rmagick_internal.rb +118 -104
  41. data/lib/rvg/clippath.rb +2 -1
  42. data/lib/rvg/container.rb +10 -5
  43. data/lib/rvg/describable.rb +1 -1
  44. data/lib/rvg/embellishable.rb +5 -4
  45. data/lib/rvg/misc.rb +15 -12
  46. data/lib/rvg/paint.rb +2 -1
  47. data/lib/rvg/pathdata.rb +12 -11
  48. data/lib/rvg/rvg.rb +10 -6
  49. data/lib/rvg/stylable.rb +9 -7
  50. data/lib/rvg/text.rb +11 -6
  51. data/lib/rvg/transformable.rb +3 -2
  52. data/lib/rvg/units.rb +1 -1
  53. data/rmagick.gemspec +13 -12
  54. metadata +63 -419
  55. data/.appveyor.yml +0 -45
  56. data/.circleci/config.yml +0 -56
  57. data/.ruby-version +0 -1
  58. data/.simplecov +0 -27
  59. data/.travis.yml +0 -62
  60. data/Doxyfile +0 -1514
  61. data/README.textile +0 -259
  62. data/benchmarks/memory/README.md +0 -50
  63. data/benchmarks/memory/image_new.rb +0 -8
  64. data/benchmarks/memory/rmagick.gnuplot +0 -16
  65. data/deprecated/RMagick.rb +0 -6
  66. data/doc/.cvsignore +0 -1
  67. data/doc/comtasks.html +0 -287
  68. data/doc/constants.html +0 -1581
  69. data/doc/css/doc.css +0 -299
  70. data/doc/css/popup.css +0 -34
  71. data/doc/css/ref.css +0 -67
  72. data/doc/draw.html +0 -3272
  73. data/doc/ex/InitialCoords.rb +0 -22
  74. data/doc/ex/NewCoordSys.rb +0 -30
  75. data/doc/ex/OrigCoordSys.rb +0 -16
  76. data/doc/ex/PreserveAspectRatio.rb +0 -204
  77. data/doc/ex/RotateScale.rb +0 -36
  78. data/doc/ex/Skew.rb +0 -38
  79. data/doc/ex/Use01.rb +0 -15
  80. data/doc/ex/Use02.rb +0 -20
  81. data/doc/ex/Use03.rb +0 -16
  82. data/doc/ex/ViewBox.rb +0 -31
  83. data/doc/ex/adaptive_threshold.rb +0 -9
  84. data/doc/ex/add_noise.rb +0 -16
  85. data/doc/ex/affine.rb +0 -48
  86. data/doc/ex/affine_transform.rb +0 -20
  87. data/doc/ex/arc.rb +0 -49
  88. data/doc/ex/arcpath.rb +0 -32
  89. data/doc/ex/arcs01.rb +0 -28
  90. data/doc/ex/arcs02.rb +0 -59
  91. data/doc/ex/average.rb +0 -15
  92. data/doc/ex/axes.rb +0 -64
  93. data/doc/ex/baseline_shift01.rb +0 -17
  94. data/doc/ex/bilevel_channel.rb +0 -8
  95. data/doc/ex/blur_image.rb +0 -12
  96. data/doc/ex/border.rb +0 -10
  97. data/doc/ex/bounding_box.rb +0 -42
  98. data/doc/ex/cbezier1.rb +0 -41
  99. data/doc/ex/cbezier2.rb +0 -41
  100. data/doc/ex/cbezier3.rb +0 -41
  101. data/doc/ex/cbezier4.rb +0 -42
  102. data/doc/ex/cbezier5.rb +0 -42
  103. data/doc/ex/cbezier6.rb +0 -53
  104. data/doc/ex/channel.rb +0 -25
  105. data/doc/ex/charcoal.rb +0 -12
  106. data/doc/ex/chop.rb +0 -29
  107. data/doc/ex/circle.rb +0 -33
  108. data/doc/ex/circle01.rb +0 -16
  109. data/doc/ex/clip_path.rb +0 -60
  110. data/doc/ex/coalesce.rb +0 -57
  111. data/doc/ex/color_fill_to_border.rb +0 -29
  112. data/doc/ex/color_floodfill.rb +0 -28
  113. data/doc/ex/color_histogram.rb +0 -47
  114. data/doc/ex/color_reset.rb +0 -11
  115. data/doc/ex/colorize.rb +0 -16
  116. data/doc/ex/colors.rb +0 -64
  117. data/doc/ex/compose_mask.rb +0 -22
  118. data/doc/ex/composite.rb +0 -133
  119. data/doc/ex/composite_layers.rb +0 -52
  120. data/doc/ex/composite_tiled.rb +0 -21
  121. data/doc/ex/contrast.rb +0 -36
  122. data/doc/ex/crop.rb +0 -31
  123. data/doc/ex/crop_with_gravity.rb +0 -42
  124. data/doc/ex/cubic01.rb +0 -43
  125. data/doc/ex/cubic02.rb +0 -91
  126. data/doc/ex/cycle_colormap.rb +0 -21
  127. data/doc/ex/dissolve.rb +0 -12
  128. data/doc/ex/drawcomp.rb +0 -41
  129. data/doc/ex/drop_shadow.rb +0 -60
  130. data/doc/ex/edge.rb +0 -11
  131. data/doc/ex/ellipse.rb +0 -45
  132. data/doc/ex/ellipse01.rb +0 -21
  133. data/doc/ex/emboss.rb +0 -11
  134. data/doc/ex/enhance.rb +0 -28
  135. data/doc/ex/equalize.rb +0 -11
  136. data/doc/ex/evenodd.rb +0 -42
  137. data/doc/ex/fill_pattern.rb +0 -23
  138. data/doc/ex/flatten_images.rb +0 -36
  139. data/doc/ex/flip.rb +0 -11
  140. data/doc/ex/flop.rb +0 -11
  141. data/doc/ex/font_styles.rb +0 -32
  142. data/doc/ex/fonts.rb +0 -16
  143. data/doc/ex/frame.rb +0 -12
  144. data/doc/ex/gaussian_blur.rb +0 -11
  145. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  146. data/doc/ex/get_pixels.rb +0 -45
  147. data/doc/ex/get_type_metrics.rb +0 -142
  148. data/doc/ex/gradientfill.rb +0 -27
  149. data/doc/ex/grav.rb +0 -45
  150. data/doc/ex/gravity.rb +0 -78
  151. data/doc/ex/group.rb +0 -26
  152. data/doc/ex/hatchfill.rb +0 -27
  153. data/doc/ex/image.rb +0 -44
  154. data/doc/ex/images/Apple.miff +0 -0
  155. data/doc/ex/images/Ballerina.jpg +0 -0
  156. data/doc/ex/images/Ballerina3.jpg +0 -0
  157. data/doc/ex/images/Button_0.gif +0 -0
  158. data/doc/ex/images/Button_1.gif +0 -0
  159. data/doc/ex/images/Button_2.gif +0 -0
  160. data/doc/ex/images/Button_3.gif +0 -0
  161. data/doc/ex/images/Button_4.gif +0 -0
  162. data/doc/ex/images/Button_5.gif +0 -0
  163. data/doc/ex/images/Button_6.gif +0 -0
  164. data/doc/ex/images/Button_7.gif +0 -0
  165. data/doc/ex/images/Button_8.gif +0 -0
  166. data/doc/ex/images/Button_9.gif +0 -0
  167. data/doc/ex/images/Button_A.gif +0 -0
  168. data/doc/ex/images/Button_B.gif +0 -0
  169. data/doc/ex/images/Button_C.gif +0 -0
  170. data/doc/ex/images/Button_D.gif +0 -0
  171. data/doc/ex/images/Button_E.gif +0 -0
  172. data/doc/ex/images/Button_F.gif +0 -0
  173. data/doc/ex/images/Button_G.gif +0 -0
  174. data/doc/ex/images/Button_H.gif +0 -0
  175. data/doc/ex/images/Button_I.gif +0 -0
  176. data/doc/ex/images/Button_J.gif +0 -0
  177. data/doc/ex/images/Button_K.gif +0 -0
  178. data/doc/ex/images/Button_L.gif +0 -0
  179. data/doc/ex/images/Button_M.gif +0 -0
  180. data/doc/ex/images/Button_N.gif +0 -0
  181. data/doc/ex/images/Button_O.gif +0 -0
  182. data/doc/ex/images/Button_P.gif +0 -0
  183. data/doc/ex/images/Button_Q.gif +0 -0
  184. data/doc/ex/images/Button_R.gif +0 -0
  185. data/doc/ex/images/Button_S.gif +0 -0
  186. data/doc/ex/images/Button_T.gif +0 -0
  187. data/doc/ex/images/Button_U.gif +0 -0
  188. data/doc/ex/images/Button_V.gif +0 -0
  189. data/doc/ex/images/Button_W.gif +0 -0
  190. data/doc/ex/images/Button_X.gif +0 -0
  191. data/doc/ex/images/Button_Y.gif +0 -0
  192. data/doc/ex/images/Button_Z.gif +0 -0
  193. data/doc/ex/images/Cheetah.jpg +0 -0
  194. data/doc/ex/images/Coffee.png +0 -0
  195. data/doc/ex/images/Flower_Hat.jpg +0 -0
  196. data/doc/ex/images/Gold_Statue.jpg +0 -0
  197. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  198. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  199. data/doc/ex/images/Leaf.miff +0 -0
  200. data/doc/ex/images/No.png +0 -0
  201. data/doc/ex/images/Polynesia.jpg +0 -0
  202. data/doc/ex/images/Red_Rocks.jpg +0 -0
  203. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  204. data/doc/ex/images/Shorts.jpg +0 -0
  205. data/doc/ex/images/Snake.png +0 -0
  206. data/doc/ex/images/Violin.jpg +0 -0
  207. data/doc/ex/images/Yellow_Rose.miff +0 -0
  208. data/doc/ex/images/big-duck.gif +0 -0
  209. data/doc/ex/images/duck.gif +0 -0
  210. data/doc/ex/images/duck0.gif +0 -0
  211. data/doc/ex/images/duck1.gif +0 -0
  212. data/doc/ex/images/duck10.gif +0 -0
  213. data/doc/ex/images/duck11.gif +0 -0
  214. data/doc/ex/images/duck12.gif +0 -0
  215. data/doc/ex/images/duck13.gif +0 -0
  216. data/doc/ex/images/duck14.gif +0 -0
  217. data/doc/ex/images/duck15.gif +0 -0
  218. data/doc/ex/images/duck2.gif +0 -0
  219. data/doc/ex/images/duck3.gif +0 -0
  220. data/doc/ex/images/duck4.gif +0 -0
  221. data/doc/ex/images/duck5.gif +0 -0
  222. data/doc/ex/images/duck6.gif +0 -0
  223. data/doc/ex/images/duck7.gif +0 -0
  224. data/doc/ex/images/duck8.gif +0 -0
  225. data/doc/ex/images/duck9.gif +0 -0
  226. data/doc/ex/images/graydient230x6.gif +0 -0
  227. data/doc/ex/images/image_with_profile.jpg +0 -0
  228. data/doc/ex/images/logo400x83.gif +0 -0
  229. data/doc/ex/images/model.miff +0 -0
  230. data/doc/ex/images/notimplemented.gif +0 -0
  231. data/doc/ex/images/smile.miff +0 -0
  232. data/doc/ex/images/spin.gif +0 -0
  233. data/doc/ex/implode.rb +0 -34
  234. data/doc/ex/level.rb +0 -11
  235. data/doc/ex/level_colors.rb +0 -11
  236. data/doc/ex/line.rb +0 -41
  237. data/doc/ex/line01.rb +0 -21
  238. data/doc/ex/mask.rb +0 -35
  239. data/doc/ex/matte_fill_to_border.rb +0 -39
  240. data/doc/ex/matte_floodfill.rb +0 -32
  241. data/doc/ex/matte_replace.rb +0 -39
  242. data/doc/ex/median_filter.rb +0 -28
  243. data/doc/ex/modulate.rb +0 -11
  244. data/doc/ex/mono.rb +0 -23
  245. data/doc/ex/morph.rb +0 -25
  246. data/doc/ex/mosaic.rb +0 -37
  247. data/doc/ex/motion_blur.rb +0 -11
  248. data/doc/ex/negate.rb +0 -11
  249. data/doc/ex/negate_channel.rb +0 -9
  250. data/doc/ex/nested_rvg.rb +0 -21
  251. data/doc/ex/nonzero.rb +0 -42
  252. data/doc/ex/normalize.rb +0 -11
  253. data/doc/ex/oil_paint.rb +0 -11
  254. data/doc/ex/opacity.rb +0 -37
  255. data/doc/ex/ordered_dither.rb +0 -11
  256. data/doc/ex/path.rb +0 -63
  257. data/doc/ex/pattern1.rb +0 -25
  258. data/doc/ex/pattern2.rb +0 -26
  259. data/doc/ex/polaroid.rb +0 -26
  260. data/doc/ex/polygon.rb +0 -23
  261. data/doc/ex/polygon01.rb +0 -21
  262. data/doc/ex/polyline.rb +0 -22
  263. data/doc/ex/polyline01.rb +0 -21
  264. data/doc/ex/posterize.rb +0 -8
  265. data/doc/ex/preview.rb +0 -8
  266. data/doc/ex/qbezierpath.rb +0 -52
  267. data/doc/ex/quad01.rb +0 -34
  268. data/doc/ex/quantize-m.rb +0 -25
  269. data/doc/ex/radial_blur.rb +0 -9
  270. data/doc/ex/raise.rb +0 -8
  271. data/doc/ex/random_threshold_channel.rb +0 -13
  272. data/doc/ex/rect01.rb +0 -14
  273. data/doc/ex/rect02.rb +0 -20
  274. data/doc/ex/rectangle.rb +0 -34
  275. data/doc/ex/reduce_noise.rb +0 -28
  276. data/doc/ex/remap.rb +0 -11
  277. data/doc/ex/remap_images.rb +0 -19
  278. data/doc/ex/resize_to_fill.rb +0 -8
  279. data/doc/ex/resize_to_fit.rb +0 -8
  280. data/doc/ex/roll.rb +0 -9
  281. data/doc/ex/rotate.rb +0 -44
  282. data/doc/ex/rotate_f.rb +0 -14
  283. data/doc/ex/roundrect.rb +0 -33
  284. data/doc/ex/rubyname.rb +0 -30
  285. data/doc/ex/rvg_clippath.rb +0 -12
  286. data/doc/ex/rvg_linecap.rb +0 -42
  287. data/doc/ex/rvg_linejoin.rb +0 -40
  288. data/doc/ex/rvg_opacity.rb +0 -18
  289. data/doc/ex/rvg_pattern.rb +0 -26
  290. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  291. data/doc/ex/segment.rb +0 -11
  292. data/doc/ex/sepiatone.rb +0 -7
  293. data/doc/ex/shade.rb +0 -11
  294. data/doc/ex/shadow.rb +0 -30
  295. data/doc/ex/shave.rb +0 -15
  296. data/doc/ex/shear.rb +0 -10
  297. data/doc/ex/sketch.rb +0 -17
  298. data/doc/ex/skewx.rb +0 -51
  299. data/doc/ex/skewy.rb +0 -47
  300. data/doc/ex/smile.rb +0 -126
  301. data/doc/ex/solarize.rb +0 -11
  302. data/doc/ex/sparse_color.rb +0 -55
  303. data/doc/ex/splice.rb +0 -8
  304. data/doc/ex/spread.rb +0 -11
  305. data/doc/ex/stegano.rb +0 -54
  306. data/doc/ex/stroke_dasharray.rb +0 -42
  307. data/doc/ex/stroke_fill.rb +0 -10
  308. data/doc/ex/stroke_linecap.rb +0 -44
  309. data/doc/ex/stroke_linejoin.rb +0 -48
  310. data/doc/ex/stroke_width.rb +0 -49
  311. data/doc/ex/swirl.rb +0 -17
  312. data/doc/ex/text.rb +0 -37
  313. data/doc/ex/text01.rb +0 -16
  314. data/doc/ex/text_align.rb +0 -36
  315. data/doc/ex/text_antialias.rb +0 -37
  316. data/doc/ex/text_styles.rb +0 -19
  317. data/doc/ex/text_undercolor.rb +0 -28
  318. data/doc/ex/texture_fill_to_border.rb +0 -34
  319. data/doc/ex/texture_floodfill.rb +0 -32
  320. data/doc/ex/texturefill.rb +0 -24
  321. data/doc/ex/threshold.rb +0 -13
  322. data/doc/ex/to_blob.rb +0 -13
  323. data/doc/ex/translate.rb +0 -39
  324. data/doc/ex/transparent.rb +0 -38
  325. data/doc/ex/transpose.rb +0 -9
  326. data/doc/ex/transverse.rb +0 -9
  327. data/doc/ex/tref01.rb +0 -24
  328. data/doc/ex/triangle01.rb +0 -15
  329. data/doc/ex/trim.rb +0 -23
  330. data/doc/ex/tspan01.rb +0 -17
  331. data/doc/ex/tspan02.rb +0 -17
  332. data/doc/ex/tspan03.rb +0 -19
  333. data/doc/ex/unsharp_mask.rb +0 -28
  334. data/doc/ex/viewex.rb +0 -33
  335. data/doc/ex/vignette.rb +0 -12
  336. data/doc/ex/watermark.rb +0 -27
  337. data/doc/ex/wave.rb +0 -9
  338. data/doc/ex/wet_floor.rb +0 -58
  339. data/doc/ex/writing_mode01.rb +0 -26
  340. data/doc/ex/writing_mode02.rb +0 -26
  341. data/doc/ilist.html +0 -2056
  342. data/doc/image1.html +0 -4680
  343. data/doc/image2.html +0 -3665
  344. data/doc/image3.html +0 -4522
  345. data/doc/imageattrs.html +0 -1638
  346. data/doc/imusage.html +0 -514
  347. data/doc/index.html +0 -416
  348. data/doc/info.html +0 -1499
  349. data/doc/magick.html +0 -570
  350. data/doc/optequiv.html +0 -2435
  351. data/doc/rvg.html +0 -975
  352. data/doc/rvgclip.html +0 -248
  353. data/doc/rvggroup.html +0 -305
  354. data/doc/rvgimage.html +0 -289
  355. data/doc/rvgpattern.html +0 -475
  356. data/doc/rvgshape.html +0 -406
  357. data/doc/rvgstyle.html +0 -270
  358. data/doc/rvgtext.html +0 -465
  359. data/doc/rvgtspan.html +0 -238
  360. data/doc/rvgtut.html +0 -530
  361. data/doc/rvguse.html +0 -145
  362. data/doc/rvgxform.html +0 -294
  363. data/doc/scripts/doc.js +0 -22
  364. data/doc/scripts/stripeTables.js +0 -23
  365. data/doc/struct.html +0 -1339
  366. data/doc/usage.html +0 -1621
  367. data/examples/constitute.rb +0 -7
  368. data/examples/crop_with_gravity.rb +0 -43
  369. data/examples/demo.rb +0 -323
  370. data/examples/describe.rb +0 -41
  371. data/examples/find_similar_region.rb +0 -34
  372. data/examples/histogram.rb +0 -312
  373. data/examples/identify.rb +0 -174
  374. data/examples/image_opacity.rb +0 -28
  375. data/examples/import_export.rb +0 -31
  376. data/examples/pattern_fill.rb +0 -37
  377. data/examples/rotating_text.rb +0 -45
  378. data/examples/spinner.rb +0 -49
  379. data/examples/thumbnail.rb +0 -64
  380. data/examples/vignette.rb +0 -78
  381. data/spec/rmagick/ImageList1_spec.rb +0 -24
  382. data/spec/rmagick/draw_spec.rb +0 -155
  383. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  384. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  385. data/spec/rmagick/image/composite_spec.rb +0 -72
  386. data/spec/rmagick/image/constitute_spec.rb +0 -13
  387. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  388. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  389. data/spec/rmagick/image/ping_spec.rb +0 -12
  390. data/spec/rmagick/image/properties_spec.rb +0 -27
  391. data/spec/rmagick/image/read_spec.rb +0 -28
  392. data/spec/spec_helper.rb +0 -10
  393. data/spec/support/issue_200/app.rb +0 -8
  394. data/test/Draw.rb +0 -351
  395. data/test/Enum.rb +0 -228
  396. data/test/Fill.rb +0 -93
  397. data/test/Image1.rb +0 -606
  398. data/test/Image2.rb +0 -1408
  399. data/test/Image3.rb +0 -1086
  400. data/test/ImageList1.rb +0 -858
  401. data/test/ImageList2.rb +0 -375
  402. data/test/Image_attributes.rb +0 -635
  403. data/test/Import_Export.rb +0 -111
  404. data/test/Info.rb +0 -436
  405. data/test/KernelInfo.rb +0 -59
  406. data/test/Magick.rb +0 -311
  407. data/test/Pixel.rb +0 -259
  408. data/test/PolaroidOptions.rb +0 -23
  409. data/test/Preview.rb +0 -26
  410. data/test/Struct.rb +0 -45
  411. data/test/appearance/Montage.rb +0 -26
  412. data/test/appearance/appearance_assertion.rb +0 -13
  413. data/test/appearance/expected/montage_border_color.jpg +0 -0
  414. data/test/cmyk.icm +0 -0
  415. data/test/lib/internal/Draw.rb +0 -811
  416. data/test/lib/internal/Geometry.rb +0 -98
  417. data/test/lib/internal/Magick.rb +0 -40
  418. data/test/srgb.icm +0 -0
  419. data/test/test_all_basic.rb +0 -49
  420. data/test/tmpnam_test.rb +0 -50
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Magick
2
- VERSION = '4.0.0'
4
+ VERSION = '5.3.0'
3
5
  MIN_RUBY_VERSION = '2.3.0'
4
6
  MIN_IM_VERSION = '6.7.7'
5
7
  end
data/lib/rmagick.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rmagick_internal.rb'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # $Id: RMagick.rb,v 1.84 2009/09/15 22:08:41 rmagick Exp $
2
4
  #==============================================================================
3
5
  # Copyright (C) 2009 by Timothy P. Hunter
@@ -12,42 +14,51 @@ if RUBY_PLATFORM =~ /mingw/i
12
14
  begin
13
15
  require 'ruby_installer'
14
16
  ENV['PATH'].split(File::PATH_SEPARATOR).grep(/ImageMagick/i).each do |path|
15
- RubyInstaller::Runtime.add_dll_directory(path)
17
+ RubyInstaller::Runtime.add_dll_directory(path) if File.exist?(File.join(path, 'CORE_RL_magick_.dll')) || File.exist?(File.join(path, 'CORE_RL_MagickCore_.dll'))
16
18
  end
17
19
  rescue LoadError
18
20
  end
19
21
  end
20
22
 
21
23
  require 'English'
24
+ require 'observer'
22
25
  require 'RMagick2.so'
23
26
 
24
27
  module Magick
25
- @formats = nil
26
- @trace_proc = nil
27
- @exit_block_set_up = nil
28
+ IMAGEMAGICK_VERSION = Magick::Magick_version.split[1].split('-').first
28
29
 
29
30
  class << self
31
+ # Describes the image formats supported by ImageMagick.
32
+ # If the optional block is present, calls the block once for each image format.
33
+ # The first argument, +k+, is the format name. The second argument, +v+, is the
34
+ # properties string described below.
35
+ #
36
+ # - +B+ is "*" if the format has native blob support, or " " otherwise.
37
+ # - +R+ is "r" if ImageMagick can read that format, or "-" otherwise.
38
+ # - +W+ is "w" if ImageMagick can write that format, or "-" otherwise.
39
+ # - +A+ is "+" if the format supports multi-image files, or "-" otherwise.
40
+ #
41
+ # @overload formats
42
+ # @return [Hash] the formats hash
43
+ #
44
+ # @overload formats
45
+ # @yield [k, v]
46
+ # @yieldparam k [String] the format name
47
+ # @yieldparam v [String] the properties string
48
+ # @return [Magick]
49
+ #
50
+ # @example
51
+ # p Magick.formats
52
+ # => {"3FR"=>" r-+", "3G2"=>" r-+", "3GP"=>" r-+", "A"=>"*rw+",
53
+ # ...
30
54
  def formats
31
- @formats ||= init_formats
55
+ formats = init_formats
32
56
 
33
57
  if block_given?
34
- @formats.each { |k, v| yield k, v }
58
+ formats.each { |k, v| yield k, v }
35
59
  self
36
60
  else
37
- @formats
38
- end
39
- end
40
-
41
- # remove reference to the proc at exit
42
- def trace_proc=(p)
43
- m = Mutex.new
44
- m.synchronize do
45
- if @trace_proc.nil? && !p.nil? && !@exit_block_set_up
46
- at_exit { @trace_proc = nil }
47
- @exit_block_set_up = true
48
- end
49
-
50
- @trace_proc = p
61
+ formats
51
62
  end
52
63
  end
53
64
  end
@@ -65,13 +76,15 @@ module Magick
65
76
  MinimumGeometry = GeometryValue.new(:MinimumGeometry, 6).freeze
66
77
 
67
78
  class Geometry
68
- FLAGS = ['', '%', '!', '<', '>', '@', '^']
69
- RFLAGS = { '%' => PercentGeometry,
70
- '!' => AspectGeometry,
71
- '<' => LessGeometry,
72
- '>' => GreaterGeometry,
73
- '@' => AreaGeometry,
74
- '^' => MinimumGeometry }
79
+ FLAGS = ['', '%', '!', '<', '>', '@', '^'].freeze
80
+ RFLAGS = {
81
+ '%' => PercentGeometry,
82
+ '!' => AspectGeometry,
83
+ '<' => LessGeometry,
84
+ '>' => GreaterGeometry,
85
+ '@' => AreaGeometry,
86
+ '^' => MinimumGeometry
87
+ }.freeze
75
88
 
76
89
  attr_accessor :width, :height, :x, :y, :flag
77
90
 
@@ -127,10 +140,10 @@ module Magick
127
140
 
128
141
  # Convert object to a geometry string
129
142
  def to_s
130
- str = ''
143
+ str = String.new
131
144
  if @width > 0
132
145
  fmt = @width.truncate == @width ? '%d' : '%.2f'
133
- str << format(fmt, @width)
146
+ str << sprintf(fmt, @width)
134
147
  str << '%' if @flag == PercentGeometry
135
148
  end
136
149
 
@@ -138,10 +151,10 @@ module Magick
138
151
 
139
152
  if @height > 0
140
153
  fmt = @height.truncate == @height ? '%d' : '%.2f'
141
- str << format(fmt, @height)
154
+ str << sprintf(fmt, @height)
142
155
  str << '%' if @flag == PercentGeometry
143
156
  end
144
- str << format('%+d%+d', @x, @y) if @x != 0 || @y != 0
157
+ str << sprintf('%+d%+d', @x, @y) if @x != 0 || @y != 0
145
158
  str << FLAGS[@flag.to_i] if @flag != PercentGeometry
146
159
  str
147
160
  end
@@ -232,20 +245,23 @@ module Magick
232
245
  # Apply coordinate transformations to support scaling (s), rotation (r),
233
246
  # and translation (t). Angles are specified in radians.
234
247
  def affine(sx, rx, ry, sy, tx, ty)
235
- primitive 'affine ' + format('%g,%g,%g,%g,%g,%g', sx, rx, ry, sy, tx, ty)
248
+ primitive 'affine ' + sprintf('%g,%g,%g,%g,%g,%g', sx, rx, ry, sy, tx, ty)
236
249
  end
237
250
 
238
251
  # Set alpha (make transparent) in image according to the specified
239
252
  # colorization rule
240
253
  def alpha(x, y, method)
241
254
  Kernel.raise ArgumentError, 'Unknown paint method' unless PAINT_METHOD_NAMES.key?(method.to_i)
242
- primitive 'matte ' + format('%g,%g, %s', x, y, PAINT_METHOD_NAMES[method.to_i])
255
+ name = Gem::Version.new(Magick::IMAGEMAGICK_VERSION) > Gem::Version.new('7.0.0') ? 'alpha ' : 'matte '
256
+ primitive name + sprintf('%g,%g, %s', x, y, PAINT_METHOD_NAMES[method.to_i])
243
257
  end
244
258
 
245
259
  # Draw an arc.
246
260
  def arc(start_x, start_y, end_x, end_y, start_degrees, end_degrees)
247
- primitive 'arc ' + format('%g,%g %g,%g %g,%g',
248
- start_x, start_y, end_x, end_y, start_degrees, end_degrees)
261
+ primitive 'arc ' + sprintf(
262
+ '%g,%g %g,%g %g,%g',
263
+ start_x, start_y, end_x, end_y, start_degrees, end_degrees
264
+ )
249
265
  end
250
266
 
251
267
  # Draw a bezier curve.
@@ -255,12 +271,12 @@ module Magick
255
271
  elsif points.length.odd?
256
272
  Kernel.raise ArgumentError, 'odd number of arguments specified'
257
273
  end
258
- primitive 'bezier ' + points.map! { |x| format('%g', x) }.join(',')
274
+ primitive 'bezier ' + points.map! { |x| sprintf('%g', x) }.join(',')
259
275
  end
260
276
 
261
277
  # Draw a circle
262
278
  def circle(origin_x, origin_y, perim_x, perim_y)
263
- primitive 'circle ' + format('%g,%g %g,%g', origin_x, origin_y, perim_x, perim_y)
279
+ primitive 'circle ' + sprintf('%g,%g %g,%g', origin_x, origin_y, perim_x, perim_y)
264
280
  end
265
281
 
266
282
  # Invoke a clip-path defined by def_clip_path.
@@ -284,7 +300,7 @@ module Magick
284
300
  # point, replace, floodfill, filltoborder,reset
285
301
  def color(x, y, method)
286
302
  Kernel.raise ArgumentError, "Unknown PaintMethod: #{method}" unless PAINT_METHOD_NAMES.key?(method.to_i)
287
- primitive 'color ' + format('%g,%g,%s', x, y, PAINT_METHOD_NAMES[method.to_i])
303
+ primitive 'color ' + sprintf('%g,%g,%s', x, y, PAINT_METHOD_NAMES[method.to_i])
288
304
  end
289
305
 
290
306
  # Specify EITHER the text decoration (none, underline, overline,
@@ -315,8 +331,10 @@ module Magick
315
331
 
316
332
  # Draw an ellipse
317
333
  def ellipse(origin_x, origin_y, width, height, arc_start, arc_end)
318
- primitive 'ellipse ' + format('%g,%g %g,%g %g,%g',
319
- origin_x, origin_y, width, height, arc_start, arc_end)
334
+ primitive 'ellipse ' + sprintf(
335
+ '%g,%g %g,%g %g,%g',
336
+ origin_x, origin_y, width, height, arc_start, arc_end
337
+ )
320
338
  end
321
339
 
322
340
  # Let anything through, but the only defined argument
@@ -382,7 +400,7 @@ module Magick
382
400
  def image(composite, x, y, width, height, image_file_path)
383
401
  Kernel.raise ArgumentError, 'Unknown composite' unless composite.is_a?(CompositeOperator)
384
402
  composite_name = composite.to_s.sub!('CompositeOp', '')
385
- primitive 'image ' + format('%s %g,%g %g,%g %s', composite_name, x, y, width, height, enquote(image_file_path))
403
+ primitive 'image ' + sprintf('%s %g,%g %g,%g %s', composite_name, x, y, width, height, enquote(image_file_path))
386
404
  end
387
405
 
388
406
  # IM 6.5.5-8 and later
@@ -423,7 +441,7 @@ module Magick
423
441
 
424
442
  # Draw a line
425
443
  def line(start_x, start_y, end_x, end_y)
426
- primitive 'line ' + format('%g,%g %g,%g', start_x, start_y, end_x, end_y)
444
+ primitive 'line ' + sprintf('%g,%g %g,%g', start_x, start_y, end_x, end_y)
427
445
  end
428
446
 
429
447
  # Specify drawing fill and stroke opacities. If the value is a string
@@ -445,7 +463,7 @@ module Magick
445
463
  # as the argument to the 'fill' or 'stroke' methods
446
464
  def pattern(name, x, y, width, height)
447
465
  push('defs')
448
- push("pattern #{name} " + format('%g %g %g %g', x, y, width, height))
466
+ push("pattern #{name} " + sprintf('%g %g %g %g', x, y, width, height))
449
467
  push('graphic-context')
450
468
  yield
451
469
  ensure
@@ -456,13 +474,13 @@ module Magick
456
474
 
457
475
  # Set point to fill color.
458
476
  def point(x, y)
459
- primitive 'point ' + format('%g,%g', x, y)
477
+ primitive 'point ' + sprintf('%g,%g', x, y)
460
478
  end
461
479
 
462
480
  # Specify the font size in points. Yes, the primitive is "font-size" but
463
481
  # in other places this value is called the "pointsize". Give it both names.
464
482
  def pointsize(points)
465
- primitive 'font-size ' + format('%g', points)
483
+ primitive 'font-size ' + sprintf('%g', points)
466
484
  end
467
485
  alias font_size pointsize
468
486
 
@@ -473,7 +491,7 @@ module Magick
473
491
  elsif points.length.odd?
474
492
  Kernel.raise ArgumentError, 'odd number of points specified'
475
493
  end
476
- primitive 'polygon ' + points.map! { |x| format('%g', x) }.join(',')
494
+ primitive 'polygon ' + points.map! { |x| sprintf('%g', x) }.join(',')
477
495
  end
478
496
 
479
497
  # Draw a polyline
@@ -483,7 +501,7 @@ module Magick
483
501
  elsif points.length.odd?
484
502
  Kernel.raise ArgumentError, 'odd number of points specified'
485
503
  end
486
- primitive 'polyline ' + points.map! { |x| format('%g', x) }.join(',')
504
+ primitive 'polyline ' + points.map! { |x| sprintf('%g', x) }.join(',')
487
505
  end
488
506
 
489
507
  # Return to the previously-saved set of whatever
@@ -517,32 +535,36 @@ module Magick
517
535
 
518
536
  # Draw a rectangle
519
537
  def rectangle(upper_left_x, upper_left_y, lower_right_x, lower_right_y)
520
- primitive 'rectangle ' + format('%g,%g %g,%g',
521
- upper_left_x, upper_left_y, lower_right_x, lower_right_y)
538
+ primitive 'rectangle ' + sprintf(
539
+ '%g,%g %g,%g',
540
+ upper_left_x, upper_left_y, lower_right_x, lower_right_y
541
+ )
522
542
  end
523
543
 
524
544
  # Specify coordinate space rotation. "angle" is measured in degrees
525
545
  def rotate(angle)
526
- primitive 'rotate ' + format('%g', angle)
546
+ primitive 'rotate ' + sprintf('%g', angle)
527
547
  end
528
548
 
529
549
  # Draw a rectangle with rounded corners
530
550
  def roundrectangle(center_x, center_y, width, height, corner_width, corner_height)
531
- primitive 'roundrectangle ' + format('%g,%g,%g,%g,%g,%g',
532
- center_x, center_y, width, height, corner_width, corner_height)
551
+ primitive 'roundrectangle ' + sprintf(
552
+ '%g,%g,%g,%g,%g,%g',
553
+ center_x, center_y, width, height, corner_width, corner_height
554
+ )
533
555
  end
534
556
 
535
557
  # Specify scaling to be applied to coordinate space on subsequent drawing commands.
536
558
  def scale(x, y)
537
- primitive 'scale ' + format('%g,%g', x, y)
559
+ primitive 'scale ' + sprintf('%g,%g', x, y)
538
560
  end
539
561
 
540
562
  def skewx(angle)
541
- primitive 'skewX ' + format('%g', angle)
563
+ primitive 'skewX ' + sprintf('%g', angle)
542
564
  end
543
565
 
544
566
  def skewy(angle)
545
- primitive 'skewY ' + format('%g', angle)
567
+ primitive 'skewY ' + sprintf('%g', angle)
546
568
  end
547
569
 
548
570
  # Specify the object stroke, a color name or pattern name.
@@ -572,7 +594,7 @@ module Magick
572
594
 
573
595
  # Specify the initial offset in the dash pattern
574
596
  def stroke_dashoffset(value = 0)
575
- primitive 'stroke-dashoffset ' + format('%g', value)
597
+ primitive 'stroke-dashoffset ' + sprintf('%g', value)
576
598
  end
577
599
 
578
600
  def stroke_linecap(value)
@@ -599,7 +621,7 @@ module Magick
599
621
 
600
622
  # Specify stroke (outline) width in pixels.
601
623
  def stroke_width(pixels)
602
- primitive 'stroke-width ' + format('%g', pixels)
624
+ primitive 'stroke-width ' + sprintf('%g', pixels)
603
625
  end
604
626
 
605
627
  # Draw text at position x,y. Add quotes to text that is not already quoted.
@@ -617,7 +639,7 @@ module Magick
617
639
  # escape existing braces, surround with braces
618
640
  text = '{' + text.gsub(/[}]/) { |b| '\\' + b } + '}'
619
641
  end
620
- primitive 'text ' + format('%g,%g %s', x, y, text)
642
+ primitive 'text ' + sprintf('%g,%g %s', x, y, text)
621
643
  end
622
644
 
623
645
  # Specify text alignment relative to a given point
@@ -646,7 +668,7 @@ module Magick
646
668
  # Specify center of coordinate space to use for subsequent drawing
647
669
  # commands.
648
670
  def translate(x, y)
649
- primitive 'translate ' + format('%g,%g', x, y)
671
+ primitive 'translate ' + sprintf('%g,%g', x, y)
650
672
  end
651
673
  end # class Magick::Draw
652
674
 
@@ -749,12 +771,6 @@ module Magick
749
771
  module Post_ObjectData_Descriptor
750
772
  Confirmed_ObjectData_Size = '9:10'
751
773
  end
752
-
753
- # Make all constants above immutable
754
- constants.each do |record|
755
- rec = const_get(record)
756
- rec.constants.each { |ds| rec.const_get(ds).freeze }
757
- end
758
774
  end # module Magick::IPTC
759
775
 
760
776
  # Ruby-level Magick::Image methods
@@ -854,7 +870,7 @@ module Magick
854
870
  else
855
871
  get_exif_by_number # ensure properties is populated with exif data
856
872
  tag.each do |num|
857
- rval = self[format('#%04X', num.to_i)]
873
+ rval = self[sprintf('#%04X', num.to_i)]
858
874
  hash[num] = rval == 'unknown' ? nil : rval
859
875
  end
860
876
  end
@@ -1062,7 +1078,7 @@ module Magick
1062
1078
 
1063
1079
  # Define a getter and a setter for each channel.
1064
1080
  %i[red green blue opacity].each do |c|
1065
- module_eval <<-END_EVAL
1081
+ module_eval <<-END_EVAL, __FILE__, __LINE__ + 1
1066
1082
  def #{c}
1067
1083
  return collect { |p| p.#{c} }
1068
1084
  end
@@ -1118,7 +1134,6 @@ module Magick
1118
1134
  each { |x| @view[x] = rv.dup }
1119
1135
  changed
1120
1136
  notify_observers(self)
1121
- nil
1122
1137
  end
1123
1138
 
1124
1139
  # A pixel has been modified. Tell the view.
@@ -1241,16 +1256,14 @@ module Magick
1241
1256
 
1242
1257
  protected
1243
1258
 
1244
- def is_an_image(obj)
1259
+ def assert_image(obj)
1245
1260
  Kernel.raise ArgumentError, "Magick::Image required (#{obj.class} given)" unless obj.is_a? Magick::Image
1246
- true
1247
1261
  end
1248
1262
 
1249
1263
  # Ensure array is always an array of Magick::Image objects
1250
- def is_an_image_array(ary)
1264
+ def assert_image_array(ary)
1251
1265
  Kernel.raise ArgumentError, "Magick::ImageList or array of Magick::Images required (#{ary.class} given)" unless ary.respond_to? :each
1252
- ary.each { |obj| is_an_image obj }
1253
- true
1266
+ ary.each { |obj| assert_image obj }
1254
1267
  end
1255
1268
 
1256
1269
  # Find old current image, update scene number
@@ -1282,7 +1295,7 @@ module Magick
1282
1295
  if n.nil?
1283
1296
  Kernel.raise IndexError, 'scene number out of bounds' unless @images.length.zero?
1284
1297
  @scene = nil
1285
- return @scene
1298
+ return
1286
1299
  elsif @images.length.zero?
1287
1300
  Kernel.raise IndexError, 'scene number out of bounds'
1288
1301
  end
@@ -1290,13 +1303,12 @@ module Magick
1290
1303
  n = Integer(n)
1291
1304
  Kernel.raise IndexError, 'scene number out of bounds' if n < 0 || n > length - 1
1292
1305
  @scene = n
1293
- @scene
1294
1306
  end
1295
1307
 
1296
1308
  # All the binary operators work the same way.
1297
1309
  # 'other' should be either an ImageList or an Array
1298
1310
  %w[& + - |].each do |op|
1299
- module_eval <<-END_BINOPS
1311
+ module_eval <<-END_BINOPS, __FILE__, __LINE__ + 1
1300
1312
  def #{op}(other)
1301
1313
  ilist = self.class.new
1302
1314
  begin
@@ -1306,7 +1318,7 @@ module Magick
1306
1318
  end
1307
1319
  current = get_current()
1308
1320
  a.each do |image|
1309
- is_an_image image
1321
+ assert_image image
1310
1322
  ilist << image
1311
1323
  end
1312
1324
  ilist.set_current current
@@ -1325,7 +1337,7 @@ module Magick
1325
1337
  end
1326
1338
 
1327
1339
  def <<(obj)
1328
- is_an_image obj
1340
+ assert_image obj
1329
1341
  @images << obj
1330
1342
  @scene = @images.length - 1
1331
1343
  self
@@ -1366,20 +1378,21 @@ module Magick
1366
1378
  def []=(*args)
1367
1379
  obj = @images.[]=(*args)
1368
1380
  if obj && obj.respond_to?(:each)
1369
- is_an_image_array(obj)
1381
+ assert_image_array(obj)
1370
1382
  set_current obj.last.__id__
1371
1383
  elsif obj
1372
- is_an_image(obj)
1384
+ assert_image(obj)
1373
1385
  set_current obj.__id__
1374
1386
  else
1375
1387
  set_current nil
1376
1388
  end
1377
- obj
1378
1389
  end
1379
1390
 
1380
- %i[at each each_index empty? fetch
1381
- first hash include? index length rindex sort!].each do |mth|
1382
- module_eval <<-END_SIMPLE_DELEGATES
1391
+ %i[
1392
+ at each each_index empty? fetch
1393
+ first hash include? index length rindex sort!
1394
+ ].each do |mth|
1395
+ module_eval <<-END_SIMPLE_DELEGATES, __FILE__, __LINE__ + 1
1383
1396
  def #{mth}(*args, &block)
1384
1397
  @images.#{mth}(*args, &block)
1385
1398
  end
@@ -1401,7 +1414,7 @@ module Magick
1401
1414
  # override Enumerable#collect
1402
1415
  def collect(&block)
1403
1416
  current = get_current
1404
- a = @images.collect(&block)
1417
+ a = @images.map(&block)
1405
1418
  ilist = self.class.new
1406
1419
  a.each { |image| ilist << image }
1407
1420
  ilist.set_current current
@@ -1409,8 +1422,8 @@ module Magick
1409
1422
  end
1410
1423
 
1411
1424
  def collect!(&block)
1412
- @images.collect!(&block)
1413
- is_an_image_array @images
1425
+ @images.map!(&block)
1426
+ assert_image_array @images
1414
1427
  self
1415
1428
  end
1416
1429
 
@@ -1419,7 +1432,6 @@ module Magick
1419
1432
  ditto = self.class.new
1420
1433
  @images.each { |f| ditto << f.copy }
1421
1434
  ditto.scene = @scene
1422
- ditto.taint if tainted?
1423
1435
  ditto
1424
1436
  end
1425
1437
 
@@ -1430,6 +1442,7 @@ module Magick
1430
1442
  end
1431
1443
 
1432
1444
  # ImageList#map took over the "map" name. Use alternatives.
1445
+ alias map collect
1433
1446
  alias __map__ collect
1434
1447
  alias map! collect!
1435
1448
  alias __map__! collect!
@@ -1454,7 +1467,7 @@ module Magick
1454
1467
  end
1455
1468
 
1456
1469
  def concat(other)
1457
- is_an_image_array other
1470
+ assert_image_array other
1458
1471
  other.each { |image| @images << image }
1459
1472
  @scene = length - 1
1460
1473
  self
@@ -1468,7 +1481,7 @@ module Magick
1468
1481
  end
1469
1482
 
1470
1483
  def delete(obj, &block)
1471
- is_an_image obj
1484
+ assert_image obj
1472
1485
  current = get_current
1473
1486
  a = @images.delete(obj, &block)
1474
1487
  set_current current
@@ -1493,12 +1506,11 @@ module Magick
1493
1506
  ditto = self.class.new
1494
1507
  @images.each { |img| ditto << img }
1495
1508
  ditto.scene = @scene
1496
- ditto.taint if tainted?
1497
1509
  ditto
1498
1510
  end
1499
1511
 
1500
1512
  def eql?(other)
1501
- is_an_image_array other
1513
+ assert_image_array other
1502
1514
  eql = other.eql?(@images)
1503
1515
  begin # "other" is another ImageList
1504
1516
  eql &&= @scene == other.scene
@@ -1509,10 +1521,10 @@ module Magick
1509
1521
  end
1510
1522
 
1511
1523
  def fill(*args, &block)
1512
- is_an_image args[0] unless block_given?
1524
+ assert_image args[0] unless block_given?
1513
1525
  current = get_current
1514
1526
  @images.fill(*args, &block)
1515
- is_an_image_array self
1527
+ assert_image_array self
1516
1528
  set_current current
1517
1529
  self
1518
1530
  end
@@ -1520,7 +1532,7 @@ module Magick
1520
1532
  # Override Enumerable's find_all
1521
1533
  def find_all(&block)
1522
1534
  current = get_current
1523
- a = @images.find_all(&block)
1535
+ a = @images.select(&block)
1524
1536
  ilist = self.class.new
1525
1537
  a.each { |image| ilist << image }
1526
1538
  ilist.set_current current
@@ -1544,14 +1556,12 @@ module Magick
1544
1556
  filenames.each do |f|
1545
1557
  Magick::Image.read(f, &block).each { |n| @images << n }
1546
1558
  end
1547
- if length > 0
1548
- @scene = length - 1 # last image in array
1549
- end
1550
- self
1559
+
1560
+ @scene = length - 1 if length > 0 # last image in array
1551
1561
  end
1552
1562
 
1553
1563
  def insert(index, *args)
1554
- args.each { |image| is_an_image image }
1564
+ args.each { |image| assert_image image }
1555
1565
  current = get_current
1556
1566
  @images.insert(index, *args)
1557
1567
  set_current current
@@ -1570,7 +1580,6 @@ module Magick
1570
1580
  n = Integer(n)
1571
1581
  Kernel.raise ArgumentError, 'iterations must be between 0 and 65535' if n < 0 || n > 65_535
1572
1582
  @images.each { |f| f.iterations = n }
1573
- self
1574
1583
  end
1575
1584
 
1576
1585
  def last(*args)
@@ -1651,7 +1660,7 @@ module Magick
1651
1660
 
1652
1661
  def push(*objs)
1653
1662
  objs.each do |image|
1654
- is_an_image image
1663
+ assert_image image
1655
1664
  @images << image
1656
1665
  end
1657
1666
  @scene = length - 1
@@ -1687,7 +1696,7 @@ module Magick
1687
1696
  end
1688
1697
 
1689
1698
  def replace(other)
1690
- is_an_image_array other
1699
+ assert_image_array other
1691
1700
  current = get_current
1692
1701
  @images.clear
1693
1702
  other.each { |image| @images << image }
@@ -1785,7 +1794,7 @@ module Magick
1785
1794
 
1786
1795
  # @scene -> new object
1787
1796
  def unshift(obj)
1788
- is_an_image obj
1797
+ assert_image obj
1789
1798
  @images.unshift(obj)
1790
1799
  @scene = 0
1791
1800
  self
@@ -1802,6 +1811,11 @@ module Magick
1802
1811
  alias indices values_at
1803
1812
  end # Magick::ImageList
1804
1813
 
1814
+ class Pixel
1815
+ # include Observable for Image::View class
1816
+ include Observable
1817
+ end
1818
+
1805
1819
  # Collects non-specific optional method arguments
1806
1820
  class OptionalMethodArguments
1807
1821
  def initialize(img)
data/lib/rvg/clippath.rb CHANGED
@@ -30,7 +30,8 @@ module Magick
30
30
  yield(self) if block_given?
31
31
  end
32
32
 
33
- def add_primitives(gc, _style) #:nodoc:
33
+ # @private
34
+ def add_primitives(gc, _style)
34
35
  name = __id__.to_s
35
36
  gc.define_clip_path(name) do
36
37
  gc.clip_units(@clip_path_units)
data/lib/rvg/container.rb CHANGED
@@ -6,7 +6,8 @@ module Magick
6
6
  class RVG
7
7
  # Content is simply an Array with a deep_copy method.
8
8
  # When unit-testing, it also has a deep_equal method.
9
- class Content < Array #:nodoc:
9
+ # @private
10
+ class Content < Array
10
11
  def deep_copy(h = {})
11
12
  me = __id__
12
13
  copy = h[me]
@@ -64,7 +65,8 @@ module Magick
64
65
  yield(self) if block_given?
65
66
  end
66
67
 
67
- def add_primitives(gc) #:nodoc:
68
+ # @private
69
+ def add_primitives(gc)
68
70
  gc.push
69
71
  add_transform_primitives(gc)
70
72
  add_style_primitives(gc)
@@ -73,13 +75,15 @@ module Magick
73
75
  end
74
76
 
75
77
  # Translate container according to #use arguments
76
- def ref(x, y, _width, _height) #:nodoc:
78
+ # @private
79
+ def ref(x, y, _width, _height)
77
80
  translate(x, y) if x != 0 || y != 0
78
81
  end
79
82
 
80
83
  # Append an arbitrary object to the group's content. Called
81
84
  # by #use to insert a non-container object into a group.
82
- def <<(obj) #:nodoc:
85
+ # @private
86
+ def <<(obj)
83
87
  @content << obj
84
88
  end
85
89
  end # class Group
@@ -113,7 +117,8 @@ module Magick
113
117
  @element.ref(x, y, width, height)
114
118
  end
115
119
 
116
- def add_primitives(gc) #:nodoc:
120
+ # @private
121
+ def add_primitives(gc)
117
122
  gc.push
118
123
  add_transform_primitives(gc)
119
124
  add_style_primitives(gc)
@@ -11,7 +11,7 @@ module Magick
11
11
  module Describable
12
12
  private
13
13
 
14
- def initialize(*args, &block) #:nodoc:
14
+ def initialize(*args, &block)
15
15
  super
16
16
  @title, @desc, @metadata = nil
17
17
  end