rmagick 2.16.0 → 5.1.0

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 (405) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +63 -0
  3. data/.devcontainer/Dockerfile +14 -0
  4. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  5. data/.devcontainer/devcontainer.json +11 -0
  6. data/.devcontainer/setup-repo.sh +10 -0
  7. data/.devcontainer/setup-user.sh +45 -0
  8. data/.editorconfig +3 -0
  9. data/.github/ISSUE_TEMPLATE.md +17 -0
  10. data/.github/workflows/ci.yml +79 -0
  11. data/.gitignore +5 -1
  12. data/.rspec +1 -0
  13. data/.rubocop.yml +37 -340
  14. data/.rubocop_todo.yml +448 -0
  15. data/.yardopts +5 -0
  16. data/CHANGELOG.md +435 -0
  17. data/CODE_OF_CONDUCT.md +122 -7
  18. data/CONTRIBUTING.md +37 -6
  19. data/Gemfile +0 -6
  20. data/README.md +317 -0
  21. data/Rakefile +37 -35
  22. data/before_install_linux.sh +65 -28
  23. data/before_install_osx.sh +58 -2
  24. data/ext/RMagick/extconf.rb +286 -393
  25. data/ext/RMagick/rmagick.c +106 -111
  26. data/ext/RMagick/rmagick.h +235 -331
  27. data/ext/RMagick/rmagick_gvl.h +224 -0
  28. data/ext/RMagick/rmdraw.c +484 -842
  29. data/ext/RMagick/rmenum.c +316 -755
  30. data/ext/RMagick/rmfill.c +281 -191
  31. data/ext/RMagick/rmilist.c +450 -455
  32. data/ext/RMagick/rmimage.c +6247 -5289
  33. data/ext/RMagick/rminfo.c +721 -894
  34. data/ext/RMagick/rmkinfo.c +228 -0
  35. data/ext/RMagick/rmmain.c +727 -519
  36. data/ext/RMagick/rmmontage.c +127 -172
  37. data/ext/RMagick/rmpixel.c +638 -431
  38. data/ext/RMagick/rmstruct.c +102 -282
  39. data/ext/RMagick/rmutil.c +450 -363
  40. data/lib/rmagick/version.rb +5 -4
  41. data/lib/rmagick.rb +2 -0
  42. data/lib/rmagick_internal.rb +349 -413
  43. data/lib/rvg/clippath.rb +3 -4
  44. data/lib/rvg/container.rb +30 -22
  45. data/lib/rvg/deep_equal.rb +11 -11
  46. data/lib/rvg/describable.rb +2 -2
  47. data/lib/rvg/embellishable.rb +63 -68
  48. data/lib/rvg/misc.rb +136 -139
  49. data/lib/rvg/paint.rb +2 -1
  50. data/lib/rvg/pathdata.rb +7 -8
  51. data/lib/rvg/rvg.rb +47 -46
  52. data/lib/rvg/stretchable.rb +22 -28
  53. data/lib/rvg/stylable.rb +12 -10
  54. data/lib/rvg/text.rb +169 -165
  55. data/lib/rvg/transformable.rb +17 -16
  56. data/lib/rvg/units.rb +5 -5
  57. data/rmagick.gemspec +16 -39
  58. metadata +118 -395
  59. data/.hound.yml +0 -2
  60. data/.simplecov +0 -27
  61. data/.travis.yml +0 -74
  62. data/Doxyfile +0 -1514
  63. data/README.textile +0 -251
  64. data/deprecated/RMagick.rb +0 -6
  65. data/doc/.cvsignore +0 -1
  66. data/doc/comtasks.html +0 -287
  67. data/doc/constants.html +0 -1581
  68. data/doc/css/doc.css +0 -299
  69. data/doc/css/popup.css +0 -34
  70. data/doc/css/ref.css +0 -67
  71. data/doc/draw.html +0 -3272
  72. data/doc/ex/InitialCoords.rb +0 -22
  73. data/doc/ex/NewCoordSys.rb +0 -30
  74. data/doc/ex/OrigCoordSys.rb +0 -16
  75. data/doc/ex/PreserveAspectRatio.rb +0 -204
  76. data/doc/ex/RotateScale.rb +0 -36
  77. data/doc/ex/Skew.rb +0 -38
  78. data/doc/ex/Use01.rb +0 -15
  79. data/doc/ex/Use02.rb +0 -20
  80. data/doc/ex/Use03.rb +0 -16
  81. data/doc/ex/ViewBox.rb +0 -31
  82. data/doc/ex/adaptive_threshold.rb +0 -9
  83. data/doc/ex/add_noise.rb +0 -16
  84. data/doc/ex/affine.rb +0 -48
  85. data/doc/ex/affine_transform.rb +0 -20
  86. data/doc/ex/arc.rb +0 -49
  87. data/doc/ex/arcpath.rb +0 -32
  88. data/doc/ex/arcs01.rb +0 -28
  89. data/doc/ex/arcs02.rb +0 -59
  90. data/doc/ex/average.rb +0 -15
  91. data/doc/ex/axes.rb +0 -64
  92. data/doc/ex/baseline_shift01.rb +0 -17
  93. data/doc/ex/bilevel_channel.rb +0 -8
  94. data/doc/ex/blur_image.rb +0 -12
  95. data/doc/ex/border.rb +0 -10
  96. data/doc/ex/bounding_box.rb +0 -42
  97. data/doc/ex/cbezier1.rb +0 -41
  98. data/doc/ex/cbezier2.rb +0 -41
  99. data/doc/ex/cbezier3.rb +0 -41
  100. data/doc/ex/cbezier4.rb +0 -42
  101. data/doc/ex/cbezier5.rb +0 -42
  102. data/doc/ex/cbezier6.rb +0 -53
  103. data/doc/ex/channel.rb +0 -25
  104. data/doc/ex/charcoal.rb +0 -12
  105. data/doc/ex/chop.rb +0 -29
  106. data/doc/ex/circle.rb +0 -33
  107. data/doc/ex/circle01.rb +0 -16
  108. data/doc/ex/clip_path.rb +0 -60
  109. data/doc/ex/coalesce.rb +0 -57
  110. data/doc/ex/color_fill_to_border.rb +0 -29
  111. data/doc/ex/color_floodfill.rb +0 -28
  112. data/doc/ex/color_histogram.rb +0 -47
  113. data/doc/ex/color_reset.rb +0 -11
  114. data/doc/ex/colorize.rb +0 -16
  115. data/doc/ex/colors.rb +0 -64
  116. data/doc/ex/compose_mask.rb +0 -22
  117. data/doc/ex/composite.rb +0 -133
  118. data/doc/ex/composite_layers.rb +0 -53
  119. data/doc/ex/composite_tiled.rb +0 -21
  120. data/doc/ex/contrast.rb +0 -36
  121. data/doc/ex/crop.rb +0 -31
  122. data/doc/ex/crop_with_gravity.rb +0 -42
  123. data/doc/ex/cubic01.rb +0 -43
  124. data/doc/ex/cubic02.rb +0 -91
  125. data/doc/ex/cycle_colormap.rb +0 -21
  126. data/doc/ex/dissolve.rb +0 -12
  127. data/doc/ex/drawcomp.rb +0 -42
  128. data/doc/ex/drop_shadow.rb +0 -60
  129. data/doc/ex/edge.rb +0 -11
  130. data/doc/ex/ellipse.rb +0 -45
  131. data/doc/ex/ellipse01.rb +0 -21
  132. data/doc/ex/emboss.rb +0 -11
  133. data/doc/ex/enhance.rb +0 -28
  134. data/doc/ex/equalize.rb +0 -11
  135. data/doc/ex/evenodd.rb +0 -42
  136. data/doc/ex/fill_pattern.rb +0 -23
  137. data/doc/ex/flatten_images.rb +0 -36
  138. data/doc/ex/flip.rb +0 -11
  139. data/doc/ex/flop.rb +0 -11
  140. data/doc/ex/font_styles.rb +0 -32
  141. data/doc/ex/fonts.rb +0 -20
  142. data/doc/ex/frame.rb +0 -12
  143. data/doc/ex/gaussian_blur.rb +0 -11
  144. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  145. data/doc/ex/get_pixels.rb +0 -47
  146. data/doc/ex/get_type_metrics.rb +0 -141
  147. data/doc/ex/gradientfill.rb +0 -27
  148. data/doc/ex/grav.rb +0 -45
  149. data/doc/ex/gravity.rb +0 -80
  150. data/doc/ex/group.rb +0 -26
  151. data/doc/ex/hatchfill.rb +0 -27
  152. data/doc/ex/image.rb +0 -44
  153. data/doc/ex/images/Apple.miff +0 -0
  154. data/doc/ex/images/Ballerina.jpg +0 -0
  155. data/doc/ex/images/Ballerina3.jpg +0 -0
  156. data/doc/ex/images/Button_0.gif +0 -0
  157. data/doc/ex/images/Button_1.gif +0 -0
  158. data/doc/ex/images/Button_2.gif +0 -0
  159. data/doc/ex/images/Button_3.gif +0 -0
  160. data/doc/ex/images/Button_4.gif +0 -0
  161. data/doc/ex/images/Button_5.gif +0 -0
  162. data/doc/ex/images/Button_6.gif +0 -0
  163. data/doc/ex/images/Button_7.gif +0 -0
  164. data/doc/ex/images/Button_8.gif +0 -0
  165. data/doc/ex/images/Button_9.gif +0 -0
  166. data/doc/ex/images/Button_A.gif +0 -0
  167. data/doc/ex/images/Button_B.gif +0 -0
  168. data/doc/ex/images/Button_C.gif +0 -0
  169. data/doc/ex/images/Button_D.gif +0 -0
  170. data/doc/ex/images/Button_E.gif +0 -0
  171. data/doc/ex/images/Button_F.gif +0 -0
  172. data/doc/ex/images/Button_G.gif +0 -0
  173. data/doc/ex/images/Button_H.gif +0 -0
  174. data/doc/ex/images/Button_I.gif +0 -0
  175. data/doc/ex/images/Button_J.gif +0 -0
  176. data/doc/ex/images/Button_K.gif +0 -0
  177. data/doc/ex/images/Button_L.gif +0 -0
  178. data/doc/ex/images/Button_M.gif +0 -0
  179. data/doc/ex/images/Button_N.gif +0 -0
  180. data/doc/ex/images/Button_O.gif +0 -0
  181. data/doc/ex/images/Button_P.gif +0 -0
  182. data/doc/ex/images/Button_Q.gif +0 -0
  183. data/doc/ex/images/Button_R.gif +0 -0
  184. data/doc/ex/images/Button_S.gif +0 -0
  185. data/doc/ex/images/Button_T.gif +0 -0
  186. data/doc/ex/images/Button_U.gif +0 -0
  187. data/doc/ex/images/Button_V.gif +0 -0
  188. data/doc/ex/images/Button_W.gif +0 -0
  189. data/doc/ex/images/Button_X.gif +0 -0
  190. data/doc/ex/images/Button_Y.gif +0 -0
  191. data/doc/ex/images/Button_Z.gif +0 -0
  192. data/doc/ex/images/Cheetah.jpg +0 -0
  193. data/doc/ex/images/Coffee.wmf +0 -0
  194. data/doc/ex/images/Flower_Hat.jpg +0 -0
  195. data/doc/ex/images/Gold_Statue.jpg +0 -0
  196. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  197. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  198. data/doc/ex/images/Leaf.miff +0 -0
  199. data/doc/ex/images/No.wmf +0 -0
  200. data/doc/ex/images/Polynesia.jpg +0 -0
  201. data/doc/ex/images/Red_Rocks.jpg +0 -0
  202. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  203. data/doc/ex/images/Shorts.jpg +0 -0
  204. data/doc/ex/images/Snake.wmf +0 -0
  205. data/doc/ex/images/Violin.jpg +0 -0
  206. data/doc/ex/images/Yellow_Rose.miff +0 -0
  207. data/doc/ex/images/big-duck.gif +0 -0
  208. data/doc/ex/images/duck.gif +0 -0
  209. data/doc/ex/images/duck0.gif +0 -0
  210. data/doc/ex/images/duck1.gif +0 -0
  211. data/doc/ex/images/duck10.gif +0 -0
  212. data/doc/ex/images/duck11.gif +0 -0
  213. data/doc/ex/images/duck12.gif +0 -0
  214. data/doc/ex/images/duck13.gif +0 -0
  215. data/doc/ex/images/duck14.gif +0 -0
  216. data/doc/ex/images/duck15.gif +0 -0
  217. data/doc/ex/images/duck2.gif +0 -0
  218. data/doc/ex/images/duck3.gif +0 -0
  219. data/doc/ex/images/duck4.gif +0 -0
  220. data/doc/ex/images/duck5.gif +0 -0
  221. data/doc/ex/images/duck6.gif +0 -0
  222. data/doc/ex/images/duck7.gif +0 -0
  223. data/doc/ex/images/duck8.gif +0 -0
  224. data/doc/ex/images/duck9.gif +0 -0
  225. data/doc/ex/images/graydient230x6.gif +0 -0
  226. data/doc/ex/images/image_with_profile.jpg +0 -0
  227. data/doc/ex/images/logo400x83.gif +0 -0
  228. data/doc/ex/images/model.miff +0 -0
  229. data/doc/ex/images/notimplemented.gif +0 -0
  230. data/doc/ex/images/smile.miff +0 -0
  231. data/doc/ex/images/spin.gif +0 -0
  232. data/doc/ex/implode.rb +0 -34
  233. data/doc/ex/level.rb +0 -11
  234. data/doc/ex/level_colors.rb +0 -11
  235. data/doc/ex/line.rb +0 -41
  236. data/doc/ex/line01.rb +0 -21
  237. data/doc/ex/mask.rb +0 -35
  238. data/doc/ex/matte_fill_to_border.rb +0 -39
  239. data/doc/ex/matte_floodfill.rb +0 -32
  240. data/doc/ex/matte_replace.rb +0 -39
  241. data/doc/ex/median_filter.rb +0 -28
  242. data/doc/ex/modulate.rb +0 -11
  243. data/doc/ex/mono.rb +0 -23
  244. data/doc/ex/morph.rb +0 -25
  245. data/doc/ex/mosaic.rb +0 -35
  246. data/doc/ex/motion_blur.rb +0 -11
  247. data/doc/ex/negate.rb +0 -11
  248. data/doc/ex/negate_channel.rb +0 -9
  249. data/doc/ex/nested_rvg.rb +0 -21
  250. data/doc/ex/nonzero.rb +0 -42
  251. data/doc/ex/normalize.rb +0 -11
  252. data/doc/ex/oil_paint.rb +0 -11
  253. data/doc/ex/opacity.rb +0 -37
  254. data/doc/ex/ordered_dither.rb +0 -11
  255. data/doc/ex/path.rb +0 -63
  256. data/doc/ex/pattern1.rb +0 -25
  257. data/doc/ex/pattern2.rb +0 -26
  258. data/doc/ex/polaroid.rb +0 -27
  259. data/doc/ex/polygon.rb +0 -23
  260. data/doc/ex/polygon01.rb +0 -21
  261. data/doc/ex/polyline.rb +0 -22
  262. data/doc/ex/polyline01.rb +0 -21
  263. data/doc/ex/posterize.rb +0 -8
  264. data/doc/ex/preview.rb +0 -8
  265. data/doc/ex/qbezierpath.rb +0 -52
  266. data/doc/ex/quad01.rb +0 -34
  267. data/doc/ex/quantize-m.rb +0 -25
  268. data/doc/ex/radial_blur.rb +0 -9
  269. data/doc/ex/raise.rb +0 -8
  270. data/doc/ex/random_threshold_channel.rb +0 -13
  271. data/doc/ex/rect01.rb +0 -14
  272. data/doc/ex/rect02.rb +0 -20
  273. data/doc/ex/rectangle.rb +0 -34
  274. data/doc/ex/reduce_noise.rb +0 -28
  275. data/doc/ex/remap.rb +0 -11
  276. data/doc/ex/remap_images.rb +0 -19
  277. data/doc/ex/resize_to_fill.rb +0 -8
  278. data/doc/ex/resize_to_fit.rb +0 -8
  279. data/doc/ex/roll.rb +0 -9
  280. data/doc/ex/rotate.rb +0 -44
  281. data/doc/ex/rotate_f.rb +0 -14
  282. data/doc/ex/roundrect.rb +0 -33
  283. data/doc/ex/rubyname.rb +0 -30
  284. data/doc/ex/rvg_clippath.rb +0 -12
  285. data/doc/ex/rvg_linecap.rb +0 -42
  286. data/doc/ex/rvg_linejoin.rb +0 -40
  287. data/doc/ex/rvg_opacity.rb +0 -18
  288. data/doc/ex/rvg_pattern.rb +0 -26
  289. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  290. data/doc/ex/segment.rb +0 -11
  291. data/doc/ex/sepiatone.rb +0 -7
  292. data/doc/ex/shade.rb +0 -11
  293. data/doc/ex/shadow.rb +0 -30
  294. data/doc/ex/shave.rb +0 -15
  295. data/doc/ex/shear.rb +0 -10
  296. data/doc/ex/sketch.rb +0 -17
  297. data/doc/ex/skewx.rb +0 -51
  298. data/doc/ex/skewy.rb +0 -47
  299. data/doc/ex/smile.rb +0 -125
  300. data/doc/ex/solarize.rb +0 -11
  301. data/doc/ex/sparse_color.rb +0 -54
  302. data/doc/ex/splice.rb +0 -8
  303. data/doc/ex/spread.rb +0 -11
  304. data/doc/ex/stegano.rb +0 -55
  305. data/doc/ex/stroke_dasharray.rb +0 -42
  306. data/doc/ex/stroke_fill.rb +0 -10
  307. data/doc/ex/stroke_linecap.rb +0 -44
  308. data/doc/ex/stroke_linejoin.rb +0 -48
  309. data/doc/ex/stroke_width.rb +0 -49
  310. data/doc/ex/swirl.rb +0 -17
  311. data/doc/ex/text.rb +0 -37
  312. data/doc/ex/text01.rb +0 -16
  313. data/doc/ex/text_align.rb +0 -36
  314. data/doc/ex/text_antialias.rb +0 -37
  315. data/doc/ex/text_styles.rb +0 -19
  316. data/doc/ex/text_undercolor.rb +0 -28
  317. data/doc/ex/texture_fill_to_border.rb +0 -34
  318. data/doc/ex/texture_floodfill.rb +0 -32
  319. data/doc/ex/texturefill.rb +0 -24
  320. data/doc/ex/threshold.rb +0 -13
  321. data/doc/ex/to_blob.rb +0 -13
  322. data/doc/ex/translate.rb +0 -39
  323. data/doc/ex/transparent.rb +0 -38
  324. data/doc/ex/transpose.rb +0 -9
  325. data/doc/ex/transverse.rb +0 -9
  326. data/doc/ex/tref01.rb +0 -24
  327. data/doc/ex/triangle01.rb +0 -15
  328. data/doc/ex/trim.rb +0 -23
  329. data/doc/ex/tspan01.rb +0 -17
  330. data/doc/ex/tspan02.rb +0 -17
  331. data/doc/ex/tspan03.rb +0 -19
  332. data/doc/ex/unsharp_mask.rb +0 -28
  333. data/doc/ex/viewex.rb +0 -33
  334. data/doc/ex/vignette.rb +0 -12
  335. data/doc/ex/watermark.rb +0 -27
  336. data/doc/ex/wave.rb +0 -9
  337. data/doc/ex/wet_floor.rb +0 -58
  338. data/doc/ex/writing_mode01.rb +0 -26
  339. data/doc/ex/writing_mode02.rb +0 -26
  340. data/doc/ilist.html +0 -2056
  341. data/doc/image1.html +0 -4680
  342. data/doc/image2.html +0 -3665
  343. data/doc/image3.html +0 -4522
  344. data/doc/imageattrs.html +0 -1638
  345. data/doc/imusage.html +0 -514
  346. data/doc/index.html +0 -416
  347. data/doc/info.html +0 -1499
  348. data/doc/magick.html +0 -565
  349. data/doc/optequiv.html +0 -2435
  350. data/doc/rvg.html +0 -975
  351. data/doc/rvgclip.html +0 -248
  352. data/doc/rvggroup.html +0 -305
  353. data/doc/rvgimage.html +0 -289
  354. data/doc/rvgpattern.html +0 -475
  355. data/doc/rvgshape.html +0 -406
  356. data/doc/rvgstyle.html +0 -270
  357. data/doc/rvgtext.html +0 -465
  358. data/doc/rvgtspan.html +0 -238
  359. data/doc/rvgtut.html +0 -530
  360. data/doc/rvguse.html +0 -145
  361. data/doc/rvgxform.html +0 -294
  362. data/doc/scripts/doc.js +0 -22
  363. data/doc/scripts/stripeTables.js +0 -23
  364. data/doc/struct.html +0 -1339
  365. data/doc/usage.html +0 -1621
  366. data/examples/constitute.rb +0 -7
  367. data/examples/crop_with_gravity.rb +0 -42
  368. data/examples/demo.rb +0 -324
  369. data/examples/describe.rb +0 -43
  370. data/examples/find_similar_region.rb +0 -34
  371. data/examples/histogram.rb +0 -321
  372. data/examples/identify.rb +0 -185
  373. data/examples/image_opacity.rb +0 -29
  374. data/examples/import_export.rb +0 -31
  375. data/examples/pattern_fill.rb +0 -38
  376. data/examples/rotating_text.rb +0 -44
  377. data/examples/spinner.rb +0 -49
  378. data/examples/thumbnail.rb +0 -64
  379. data/examples/vignette.rb +0 -78
  380. data/spec/rmagick/ImageList1_spec.rb +0 -24
  381. data/spec/rmagick/draw_spec.rb +0 -156
  382. data/spec/rmagick/image/blue_shift_spec.rb +0 -16
  383. data/spec/rmagick/image/composite_spec.rb +0 -140
  384. data/spec/rmagick/image/constitute_spec.rb +0 -15
  385. data/spec/rmagick/image/dispatch_spec.rb +0 -18
  386. data/spec/rmagick/image/from_blob_spec.rb +0 -14
  387. data/spec/rmagick/image/ping_spec.rb +0 -14
  388. data/spec/rmagick/image/properties_spec.rb +0 -29
  389. data/spec/spec_helper.rb +0 -4
  390. data/test/Image1.rb +0 -565
  391. data/test/Image2.rb +0 -1304
  392. data/test/Image3.rb +0 -1030
  393. data/test/ImageList1.rb +0 -806
  394. data/test/ImageList2.rb +0 -385
  395. data/test/Image_attributes.rb +0 -697
  396. data/test/Import_Export.rb +0 -121
  397. data/test/Info.rb +0 -345
  398. data/test/Magick.rb +0 -321
  399. data/test/Pixel.rb +0 -116
  400. data/test/Preview.rb +0 -57
  401. data/test/cmyk.icm +0 -0
  402. data/test/srgb.icm +0 -0
  403. data/test/test_all_basic.rb +0 -38
  404. data/test/tmpnam_test.rb +0 -50
  405. data/wercker.yml +0 -10
data/lib/rvg/clippath.rb CHANGED
@@ -23,16 +23,15 @@ module Magick
23
23
  # Attach the clipping path to an object with the :clip_path style.
24
24
  def initialize(clip_path_units = 'userSpaceOnUse')
25
25
  super()
26
- unless ['userSpaceOnUse', 'objectBoundingBox'].include?(clip_path_units)
27
- fail ArgumentError, "undefined value for clip path units: #{clip_path_units}"
28
- end
26
+ raise ArgumentError, "undefined value for clip path units: #{clip_path_units}" unless %w[userSpaceOnUse objectBoundingBox].include?(clip_path_units)
29
27
 
30
28
  @clip_path_units = clip_path_units
31
29
  @content = Content.new
32
30
  yield(self) if block_given?
33
31
  end
34
32
 
35
- def add_primitives(gc, style) #:nodoc:
33
+ # @private
34
+ def add_primitives(gc, _style)
36
35
  name = __id__.to_s
37
36
  gc.define_clip_path(name) do
38
37
  gc.clip_units(@clip_path_units)
data/lib/rvg/container.rb CHANGED
@@ -6,30 +6,34 @@ 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]
13
14
  unless copy
14
15
  copy = self.class.new
15
16
  each do |c|
16
- copy << case
17
- when c.nil?
18
- nil
19
- when c.respond_to?(:deep_copy)
20
- c.deep_copy(h)
21
- when c.respond_to?(:dup)
22
- c.dup rescue c
23
- else
24
- c
25
- end
17
+ copy << if c.nil?
18
+ nil
19
+ elsif c.respond_to?(:deep_copy)
20
+ c.deep_copy(h)
21
+ elsif c.respond_to?(:dup)
22
+ begin
23
+ c.dup
24
+ rescue StandardError
25
+ c
26
+ end
27
+ else
28
+ c
29
+ end
26
30
  end
27
31
  copy.freeze if frozen?
28
32
  h[me] = copy
29
33
  end
30
34
  copy
31
35
  end
32
- end # class Content
36
+ end # class Content
33
37
 
34
38
  # Define a collection of shapes, text, etc. that can be reused.
35
39
  # Group objects are _containers_. That is, styles and transforms defined
@@ -49,11 +53,11 @@ module Magick
49
53
  # grp.circle(10, 20, 20).styles(:stroke=>'blue')
50
54
  # end
51
55
  class Group
52
- include Stylable
53
- include Transformable
54
- include Embellishable
55
- include Describable
56
- include Duplicatable
56
+ include Stylable
57
+ include Transformable
58
+ include Embellishable
59
+ include Describable
60
+ include Duplicatable
57
61
 
58
62
  def initialize
59
63
  super
@@ -61,7 +65,8 @@ module Magick
61
65
  yield(self) if block_given?
62
66
  end
63
67
 
64
- def add_primitives(gc) #:nodoc:
68
+ # @private
69
+ def add_primitives(gc)
65
70
  gc.push
66
71
  add_transform_primitives(gc)
67
72
  add_style_primitives(gc)
@@ -70,16 +75,18 @@ module Magick
70
75
  end
71
76
 
72
77
  # Translate container according to #use arguments
73
- def ref(x, y, width, height) #:nodoc:
78
+ # @private
79
+ def ref(x, y, _width, _height)
74
80
  translate(x, y) if x != 0 || y != 0
75
81
  end
76
82
 
77
83
  # Append an arbitrary object to the group's content. Called
78
84
  # by #use to insert a non-container object into a group.
79
- def <<(obj) #:nodoc:
85
+ # @private
86
+ def <<(obj)
80
87
  @content << obj
81
88
  end
82
- end # class Group
89
+ end # class Group
83
90
 
84
91
  # A Use object allows the re-use of RVG and RVG::Group
85
92
  # objects within a container. Create a Use object with the
@@ -110,7 +117,8 @@ module Magick
110
117
  @element.ref(x, y, width, height)
111
118
  end
112
119
 
113
- def add_primitives(gc) #:nodoc:
120
+ # @private
121
+ def add_primitives(gc)
114
122
  gc.push
115
123
  add_transform_primitives(gc)
116
124
  add_style_primitives(gc)
@@ -30,17 +30,17 @@ module Magick
30
30
  end
31
31
  else
32
32
  case itv
33
- when Float, Symbol, TrueClass, FalseClass, Fixnum, NilClass
34
- return false if itv != otv
35
- else
36
- if itv.equal?(otv)
37
- puts "#{iv} is dup-able but self.#{iv} and other.#{iv} are the same object."
38
- return false
39
- end
40
- if itv != otv
41
- puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
42
- return false
43
- end
33
+ when Float, Symbol, TrueClass, FalseClass, Integer, NilClass
34
+ return false if itv != otv
35
+ else
36
+ if itv.equal?(otv)
37
+ puts "#{iv} is dup-able but self.#{iv} and other.#{iv} are the same object."
38
+ return false
39
+ end
40
+ if itv != otv
41
+ puts "Not equal.\nself.#{iv}=#{itv.inspect}\nother.#{iv}=#{otv.inspect}"
42
+ return false
43
+ end
44
44
  end
45
45
  end
46
46
  end
@@ -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
@@ -42,6 +42,6 @@ module Magick
42
42
  def metadata
43
43
  @metadata.to_s
44
44
  end
45
- end # module Describable
45
+ end # module Describable
46
46
  end # class RVG
47
47
  end # module Magick
@@ -5,7 +5,8 @@
5
5
  module Magick
6
6
  class RVG
7
7
  # Parent class of Circle, Ellipse, Text, etc.
8
- class Shape #:nodoc:
8
+ # @private
9
+ class Shape
9
10
  include Stylable
10
11
  include Transformable
11
12
  include Duplicatable
@@ -18,7 +19,7 @@ module Magick
18
19
  gc.__send__(@primitive, *@args)
19
20
  gc.pop
20
21
  end
21
- end # class Shape
22
+ end # class Shape
22
23
 
23
24
  class Circle < Shape
24
25
  # Define a circle with radius +r+ and centered at [<tt>cx</tt>, <tt>cy</tt>].
@@ -26,14 +27,12 @@ module Magick
26
27
  def initialize(r, cx = 0, cy = 0)
27
28
  super()
28
29
  r, cx, cy = Magick::RVG.convert_to_float(r, cx, cy)
29
- if r < 0
30
- fail ArgumentError, "radius must be >= 0 (#{r} given)"
31
- end
30
+ raise ArgumentError, "radius must be >= 0 (#{r} given)" if r < 0
31
+
32
32
  @primitive = :circle
33
- @args = [cx, cy, cx+r, cy]
34
- self
33
+ @args = [cx, cy, cx + r, cy]
35
34
  end
36
- end # class Circle
35
+ end # class Circle
37
36
 
38
37
  class Ellipse < Shape
39
38
  # Define an ellipse with a center at [<tt>cx</tt>, <tt>cy</tt>], a horizontal radius +rx+
@@ -42,14 +41,13 @@ module Magick
42
41
  def initialize(rx, ry, cx = 0, cy = 0)
43
42
  super()
44
43
  rx, ry, cx, cy = Magick::RVG.convert_to_float(rx, ry, cx, cy)
45
- if rx < 0 || ry < 0
46
- fail ArgumentError, "radii must be >= 0 (#{rx}, #{ry} given)"
47
- end
44
+ raise ArgumentError, "radii must be >= 0 (#{rx}, #{ry} given)" if rx < 0 || ry < 0
45
+
48
46
  @primitive = :ellipse
49
47
  # Ellipses are always complete.
50
48
  @args = [cx, cy, rx, ry, 0, 360]
51
49
  end
52
- end # class Ellipse
50
+ end # class Ellipse
53
51
 
54
52
  class Line < Shape
55
53
  # Define a line from [<tt>x1</tt>, <tt>y1</tt>] to [<tt>x2</tt>, <tt>y2</tt>].
@@ -59,7 +57,7 @@ module Magick
59
57
  @primitive = :line
60
58
  @args = [x1, y1, x2, y2]
61
59
  end
62
- end # class Line
60
+ end # class Line
63
61
 
64
62
  class Path < Shape
65
63
  # Define an SVG path. The argument can be either a path string
@@ -70,7 +68,7 @@ module Magick
70
68
  @primitive = :path
71
69
  @args = [path.to_s]
72
70
  end
73
- end # class Path
71
+ end # class Path
74
72
 
75
73
  class Rect < Shape
76
74
  # Define a width x height rectangle. The upper-left corner is at [<tt>x</tt>, <tt>y</tt>].
@@ -79,10 +77,9 @@ module Magick
79
77
  def initialize(width, height, x = 0, y = 0)
80
78
  super()
81
79
  width, height, x, y = Magick::RVG.convert_to_float(width, height, x, y)
82
- if width < 0 || height < 0
83
- fail ArgumentError, "width, height must be >= 0 (#{width}, #{height} given)"
84
- end
85
- @args = [x, y, x+width, y+height]
80
+ raise ArgumentError, "width, height must be >= 0 (#{width}, #{height} given)" if width < 0 || height < 0
81
+
82
+ @args = [x, y, x + width, y + height]
86
83
  @primitive = :rectangle
87
84
  end
88
85
 
@@ -90,9 +87,8 @@ module Magick
90
87
  # are the x- and y-axis radii. If y is omitted it defaults to x.
91
88
  def round(rx, ry = nil)
92
89
  rx, ry = Magick::RVG.convert_to_float(rx, ry || rx)
93
- if rx < 0 || ry < 0
94
- fail ArgumentError, "rx, ry must be >= 0 (#{rx}, #{ry} given)"
95
- end
90
+ raise ArgumentError, "rx, ry must be >= 0 (#{rx}, #{ry} given)" if rx < 0 || ry < 0
91
+
96
92
  @args << rx << ry
97
93
  @primitive = :roundrectangle
98
94
  self
@@ -102,24 +98,22 @@ module Magick
102
98
  class PolyShape < Shape
103
99
  def polypoints(points)
104
100
  case points.length
105
- when 1
106
- points = Array(points[0])
107
- when 2
108
- x_coords = Array(points[0])
109
- y_coords = Array(points[1])
110
- unless x_coords.length > 0 && y_coords.length > 0
111
- fail ArgumentError, 'array arguments must contain at least one point'
112
- end
113
- n = x_coords.length - y_coords.length
114
- short = n > 0 ? y_coords : x_coords
115
- olen = short.length
116
- n.abs.times {|x| short << short[x % olen]}
117
- points = x_coords.zip(y_coords).flatten
101
+ when 1
102
+ points = Array(points[0])
103
+ when 2
104
+ x_coords = Array(points[0])
105
+ y_coords = Array(points[1])
106
+ raise ArgumentError, 'array arguments must contain at least one point' unless !x_coords.empty? && !y_coords.empty?
107
+
108
+ n = x_coords.length - y_coords.length
109
+ short = n > 0 ? y_coords : x_coords
110
+ olen = short.length
111
+ n.abs.times { |x| short << short[x % olen] }
112
+ points = x_coords.zip(y_coords).flatten
118
113
  end
119
114
  n = points.length
120
- if n < 4 || n.odd?
121
- fail ArgumentError, "insufficient/odd number of points specified: #{n}"
122
- end
115
+ raise ArgumentError, "insufficient/odd number of points specified: #{n}" if n < 4 || n.odd?
116
+
123
117
  Magick::RVG.convert_to_float(*points)
124
118
  end
125
119
  end # class PolyShape
@@ -136,7 +130,7 @@ module Magick
136
130
  @primitive = :polygon
137
131
  @args = polypoints(points)
138
132
  end
139
- end # class Polygon
133
+ end # class Polygon
140
134
 
141
135
  class Polyline < PolyShape
142
136
  # Draws a polyline. The arguments are [<tt>x</tt>, <tt>y</tt>] pairs that
@@ -149,7 +143,7 @@ module Magick
149
143
  @primitive = :polyline
150
144
  @args = Magick::RVG.convert_to_float(*points)
151
145
  end
152
- end # class Polyline
146
+ end # class Polyline
153
147
 
154
148
  class Image
155
149
  include Stylable
@@ -162,22 +156,22 @@ module Magick
162
156
 
163
157
  def align_to_viewport(scale)
164
158
  tx = case @align
165
- when 'none', /\AxMin/
166
- 0
167
- when NilClass, /\AxMid/
168
- (@width - @image.columns*scale) / 2.0
169
- when /\AxMax/
170
- @width - @image.columns*scale
171
- end
159
+ when 'none', /\AxMin/
160
+ 0
161
+ when NilClass, /\AxMid/
162
+ (@width - @image.columns * scale) / 2.0
163
+ when /\AxMax/
164
+ @width - @image.columns * scale
165
+ end
172
166
 
173
167
  ty = case @align
174
- when 'none', /YMin\z/
175
- 0
176
- when NilClass, /YMid\z/
177
- (@height - @image.rows*scale) / 2.0
178
- when /YMax\z/
179
- @height - @image.rows*scale
180
- end
168
+ when 'none', /YMin\z/
169
+ 0
170
+ when NilClass, /YMid\z/
171
+ (@height - @image.rows * scale) / 2.0
172
+ when /YMax\z/
173
+ @height - @image.rows * scale
174
+ end
181
175
  [tx, ty]
182
176
  end
183
177
 
@@ -188,7 +182,7 @@ module Magick
188
182
  width = @width
189
183
  height = @height
190
184
  elsif @meet_or_slice == 'meet'
191
- scale = [@width/@image.columns, @height/@image.rows].min
185
+ scale = [@width / @image.columns, @height / @image.rows].min
192
186
  width = @image.columns
193
187
  height = @image.rows
194
188
  else
@@ -199,12 +193,12 @@ module Magick
199
193
  end
200
194
 
201
195
  gc.clip_path(name)
202
- scale = [@width/@image.columns, @height/@image.rows].max
196
+ scale = [@width / @image.columns, @height / @image.rows].max
203
197
  width = @image.columns
204
198
  height = @image.rows
205
199
  end
206
200
  tx, ty = align_to_viewport(scale)
207
- gc.composite(@x+tx, @y+ty, width*scale, height*scale, @image)
201
+ gc.composite(@x + tx, @y + ty, width * scale, height * scale, @image)
208
202
  end
209
203
 
210
204
  def init_viewbox
@@ -223,22 +217,23 @@ module Magick
223
217
  super() # run module initializers
224
218
  @image = image.copy # use a copy of the image in case app. re-uses the argument
225
219
  @x, @y, @width, @height = Magick::RVG.convert_to_float(x, y, width || @image.columns, height || @image.rows)
226
- if @width < 0 || @height < 0
227
- fail ArgumentError, 'width, height must be >= 0'
228
- end
220
+ raise ArgumentError, 'width, height must be >= 0' if @width < 0 || @height < 0
221
+
229
222
  init_viewbox
230
223
  end
231
224
 
232
- def add_primitives(gc) #:nodoc:
225
+ # @private
226
+ def add_primitives(gc)
233
227
  # Do not render if width or height is 0
234
- return if @width == 0 || @height == 0
228
+ return if @width.zero? || @height.zero?
229
+
235
230
  gc.push
236
231
  add_transform_primitives(gc)
237
232
  add_style_primitives(gc)
238
233
  add_composite_primitive(gc)
239
234
  gc.pop
240
235
  end
241
- end # class Image
236
+ end # class Image
242
237
 
243
238
  # Methods that construct basic shapes within a container
244
239
  module ShapeConstructors
@@ -307,7 +302,7 @@ module Magick
307
302
  @content << polyline
308
303
  polyline
309
304
  end
310
- end # module ShapeContent
305
+ end # module ShapeContent
311
306
 
312
307
  # Methods that reference ("use") other drawable objects within a container
313
308
  module UseConstructors
@@ -321,7 +316,7 @@ module Magick
321
316
  @content << use
322
317
  use
323
318
  end
324
- end # module UseConstructors
319
+ end # module UseConstructors
325
320
 
326
321
  # Methods that construct container objects within a container
327
322
  module StructureConstructors
@@ -338,7 +333,7 @@ module Magick
338
333
  y = Float(y)
339
334
  rescue ArgumentError
340
335
  args = [cols, rows, x, y]
341
- raise ArgumentError, "at least one argument is not convertable to Float (got #{args.collect {|a| a.class}.join(', ')})"
336
+ raise ArgumentError, "at least one argument is not convertable to Float (got #{args.map(&:class).join(', ')})"
342
337
  end
343
338
  rvg.corner(x, y)
344
339
  @content << rvg
@@ -359,7 +354,7 @@ module Magick
359
354
  @content << group
360
355
  group
361
356
  end
362
- end # module StructureConstructors
357
+ end # module StructureConstructors
363
358
 
364
359
  # Methods that construct raster image objects within a container
365
360
  module ImageConstructors
@@ -375,7 +370,7 @@ module Magick
375
370
  @content << img
376
371
  img
377
372
  end
378
- end # module ImageConstructors
373
+ end # module ImageConstructors
379
374
 
380
375
  # Methods that create shapes, text, and other drawable objects
381
376
  # within container objects such as ::Magick::RVG and
@@ -386,6 +381,6 @@ module Magick
386
381
  include TextConstructors
387
382
  include UseConstructors
388
383
  include ImageConstructors
389
- end # module Embellishable
384
+ end # module Embellishable
390
385
  end # class RVG
391
386
  end # module Magick