rmagick 3.2.0 → 4.3.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 (420) hide show
  1. checksums.yaml +4 -4
  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 +3 -1
  12. data/.rspec +1 -0
  13. data/.rubocop.yml +24 -0
  14. data/.rubocop_todo.yml +151 -297
  15. data/.yardopts +5 -0
  16. data/CHANGELOG.md +233 -0
  17. data/CODE_OF_CONDUCT.md +122 -7
  18. data/CONTRIBUTING.md +14 -10
  19. data/README.md +326 -0
  20. data/Rakefile +16 -22
  21. data/before_install_linux.sh +22 -28
  22. data/before_install_osx.sh +57 -2
  23. data/ext/RMagick/extconf.rb +149 -105
  24. data/ext/RMagick/rmagick.c +77 -104
  25. data/ext/RMagick/rmagick.h +121 -103
  26. data/ext/RMagick/rmdraw.c +364 -436
  27. data/ext/RMagick/rmenum.c +106 -114
  28. data/ext/RMagick/rmfill.c +149 -70
  29. data/ext/RMagick/rmilist.c +225 -367
  30. data/ext/RMagick/rmimage.c +4751 -4405
  31. data/ext/RMagick/rminfo.c +574 -787
  32. data/ext/RMagick/rmkinfo.c +51 -121
  33. data/ext/RMagick/rmmain.c +454 -286
  34. data/ext/RMagick/rmmontage.c +64 -130
  35. data/ext/RMagick/rmpixel.c +488 -437
  36. data/ext/RMagick/rmstruct.c +83 -96
  37. data/ext/RMagick/rmutil.c +302 -214
  38. data/lib/rmagick/version.rb +1 -1
  39. data/lib/rmagick_internal.rb +138 -93
  40. data/lib/rvg/clippath.rb +2 -1
  41. data/lib/rvg/container.rb +10 -5
  42. data/lib/rvg/describable.rb +1 -1
  43. data/lib/rvg/embellishable.rb +5 -4
  44. data/lib/rvg/misc.rb +15 -12
  45. data/lib/rvg/paint.rb +2 -1
  46. data/lib/rvg/pathdata.rb +12 -11
  47. data/lib/rvg/rvg.rb +12 -8
  48. data/lib/rvg/stylable.rb +9 -7
  49. data/lib/rvg/text.rb +11 -6
  50. data/lib/rvg/transformable.rb +3 -2
  51. data/lib/rvg/units.rb +1 -1
  52. data/rmagick.gemspec +10 -11
  53. metadata +52 -423
  54. data/.appveyor.yml +0 -45
  55. data/.circleci/config.yml +0 -56
  56. data/.ruby-version +0 -1
  57. data/.simplecov +0 -27
  58. data/.travis.yml +0 -62
  59. data/Doxyfile +0 -1514
  60. data/README.textile +0 -259
  61. data/benchmarks/memory/README.md +0 -50
  62. data/benchmarks/memory/image_new.rb +0 -8
  63. data/benchmarks/memory/rmagick.gnuplot +0 -16
  64. data/doc/.cvsignore +0 -1
  65. data/doc/comtasks.html +0 -287
  66. data/doc/constants.html +0 -1581
  67. data/doc/css/doc.css +0 -299
  68. data/doc/css/popup.css +0 -34
  69. data/doc/css/ref.css +0 -67
  70. data/doc/draw.html +0 -3272
  71. data/doc/ex/InitialCoords.rb +0 -22
  72. data/doc/ex/NewCoordSys.rb +0 -30
  73. data/doc/ex/OrigCoordSys.rb +0 -16
  74. data/doc/ex/PreserveAspectRatio.rb +0 -204
  75. data/doc/ex/RotateScale.rb +0 -36
  76. data/doc/ex/Skew.rb +0 -38
  77. data/doc/ex/Use01.rb +0 -15
  78. data/doc/ex/Use02.rb +0 -20
  79. data/doc/ex/Use03.rb +0 -16
  80. data/doc/ex/ViewBox.rb +0 -31
  81. data/doc/ex/adaptive_threshold.rb +0 -9
  82. data/doc/ex/add_noise.rb +0 -16
  83. data/doc/ex/affine.rb +0 -48
  84. data/doc/ex/affine_transform.rb +0 -20
  85. data/doc/ex/arc.rb +0 -49
  86. data/doc/ex/arcpath.rb +0 -32
  87. data/doc/ex/arcs01.rb +0 -28
  88. data/doc/ex/arcs02.rb +0 -59
  89. data/doc/ex/average.rb +0 -15
  90. data/doc/ex/axes.rb +0 -64
  91. data/doc/ex/baseline_shift01.rb +0 -17
  92. data/doc/ex/bilevel_channel.rb +0 -8
  93. data/doc/ex/blur_image.rb +0 -12
  94. data/doc/ex/border.rb +0 -10
  95. data/doc/ex/bounding_box.rb +0 -42
  96. data/doc/ex/cbezier1.rb +0 -41
  97. data/doc/ex/cbezier2.rb +0 -41
  98. data/doc/ex/cbezier3.rb +0 -41
  99. data/doc/ex/cbezier4.rb +0 -42
  100. data/doc/ex/cbezier5.rb +0 -42
  101. data/doc/ex/cbezier6.rb +0 -53
  102. data/doc/ex/channel.rb +0 -25
  103. data/doc/ex/charcoal.rb +0 -12
  104. data/doc/ex/chop.rb +0 -29
  105. data/doc/ex/circle.rb +0 -33
  106. data/doc/ex/circle01.rb +0 -16
  107. data/doc/ex/clip_path.rb +0 -60
  108. data/doc/ex/coalesce.rb +0 -57
  109. data/doc/ex/color_fill_to_border.rb +0 -29
  110. data/doc/ex/color_floodfill.rb +0 -28
  111. data/doc/ex/color_histogram.rb +0 -47
  112. data/doc/ex/color_reset.rb +0 -11
  113. data/doc/ex/colorize.rb +0 -16
  114. data/doc/ex/colors.rb +0 -64
  115. data/doc/ex/compose_mask.rb +0 -22
  116. data/doc/ex/composite.rb +0 -133
  117. data/doc/ex/composite_layers.rb +0 -52
  118. data/doc/ex/composite_tiled.rb +0 -21
  119. data/doc/ex/contrast.rb +0 -36
  120. data/doc/ex/crop.rb +0 -31
  121. data/doc/ex/crop_with_gravity.rb +0 -42
  122. data/doc/ex/cubic01.rb +0 -43
  123. data/doc/ex/cubic02.rb +0 -91
  124. data/doc/ex/cycle_colormap.rb +0 -21
  125. data/doc/ex/dissolve.rb +0 -12
  126. data/doc/ex/drawcomp.rb +0 -41
  127. data/doc/ex/drop_shadow.rb +0 -60
  128. data/doc/ex/edge.rb +0 -11
  129. data/doc/ex/ellipse.rb +0 -45
  130. data/doc/ex/ellipse01.rb +0 -21
  131. data/doc/ex/emboss.rb +0 -11
  132. data/doc/ex/enhance.rb +0 -28
  133. data/doc/ex/equalize.rb +0 -11
  134. data/doc/ex/evenodd.rb +0 -42
  135. data/doc/ex/fill_pattern.rb +0 -23
  136. data/doc/ex/flatten_images.rb +0 -36
  137. data/doc/ex/flip.rb +0 -11
  138. data/doc/ex/flop.rb +0 -11
  139. data/doc/ex/font_styles.rb +0 -32
  140. data/doc/ex/fonts.rb +0 -16
  141. data/doc/ex/frame.rb +0 -12
  142. data/doc/ex/gaussian_blur.rb +0 -11
  143. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  144. data/doc/ex/get_pixels.rb +0 -45
  145. data/doc/ex/get_type_metrics.rb +0 -142
  146. data/doc/ex/gradientfill.rb +0 -27
  147. data/doc/ex/grav.rb +0 -45
  148. data/doc/ex/gravity.rb +0 -78
  149. data/doc/ex/group.rb +0 -26
  150. data/doc/ex/hatchfill.rb +0 -27
  151. data/doc/ex/image.rb +0 -44
  152. data/doc/ex/images/Apple.miff +0 -0
  153. data/doc/ex/images/Ballerina.jpg +0 -0
  154. data/doc/ex/images/Ballerina3.jpg +0 -0
  155. data/doc/ex/images/Button_0.gif +0 -0
  156. data/doc/ex/images/Button_1.gif +0 -0
  157. data/doc/ex/images/Button_2.gif +0 -0
  158. data/doc/ex/images/Button_3.gif +0 -0
  159. data/doc/ex/images/Button_4.gif +0 -0
  160. data/doc/ex/images/Button_5.gif +0 -0
  161. data/doc/ex/images/Button_6.gif +0 -0
  162. data/doc/ex/images/Button_7.gif +0 -0
  163. data/doc/ex/images/Button_8.gif +0 -0
  164. data/doc/ex/images/Button_9.gif +0 -0
  165. data/doc/ex/images/Button_A.gif +0 -0
  166. data/doc/ex/images/Button_B.gif +0 -0
  167. data/doc/ex/images/Button_C.gif +0 -0
  168. data/doc/ex/images/Button_D.gif +0 -0
  169. data/doc/ex/images/Button_E.gif +0 -0
  170. data/doc/ex/images/Button_F.gif +0 -0
  171. data/doc/ex/images/Button_G.gif +0 -0
  172. data/doc/ex/images/Button_H.gif +0 -0
  173. data/doc/ex/images/Button_I.gif +0 -0
  174. data/doc/ex/images/Button_J.gif +0 -0
  175. data/doc/ex/images/Button_K.gif +0 -0
  176. data/doc/ex/images/Button_L.gif +0 -0
  177. data/doc/ex/images/Button_M.gif +0 -0
  178. data/doc/ex/images/Button_N.gif +0 -0
  179. data/doc/ex/images/Button_O.gif +0 -0
  180. data/doc/ex/images/Button_P.gif +0 -0
  181. data/doc/ex/images/Button_Q.gif +0 -0
  182. data/doc/ex/images/Button_R.gif +0 -0
  183. data/doc/ex/images/Button_S.gif +0 -0
  184. data/doc/ex/images/Button_T.gif +0 -0
  185. data/doc/ex/images/Button_U.gif +0 -0
  186. data/doc/ex/images/Button_V.gif +0 -0
  187. data/doc/ex/images/Button_W.gif +0 -0
  188. data/doc/ex/images/Button_X.gif +0 -0
  189. data/doc/ex/images/Button_Y.gif +0 -0
  190. data/doc/ex/images/Button_Z.gif +0 -0
  191. data/doc/ex/images/Cheetah.jpg +0 -0
  192. data/doc/ex/images/Coffee.png +0 -0
  193. data/doc/ex/images/Flower_Hat.jpg +0 -0
  194. data/doc/ex/images/Gold_Statue.jpg +0 -0
  195. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  196. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  197. data/doc/ex/images/Leaf.miff +0 -0
  198. data/doc/ex/images/No.png +0 -0
  199. data/doc/ex/images/Polynesia.jpg +0 -0
  200. data/doc/ex/images/Red_Rocks.jpg +0 -0
  201. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  202. data/doc/ex/images/Shorts.jpg +0 -0
  203. data/doc/ex/images/Snake.png +0 -0
  204. data/doc/ex/images/Violin.jpg +0 -0
  205. data/doc/ex/images/Yellow_Rose.miff +0 -0
  206. data/doc/ex/images/big-duck.gif +0 -0
  207. data/doc/ex/images/duck.gif +0 -0
  208. data/doc/ex/images/duck0.gif +0 -0
  209. data/doc/ex/images/duck1.gif +0 -0
  210. data/doc/ex/images/duck10.gif +0 -0
  211. data/doc/ex/images/duck11.gif +0 -0
  212. data/doc/ex/images/duck12.gif +0 -0
  213. data/doc/ex/images/duck13.gif +0 -0
  214. data/doc/ex/images/duck14.gif +0 -0
  215. data/doc/ex/images/duck15.gif +0 -0
  216. data/doc/ex/images/duck2.gif +0 -0
  217. data/doc/ex/images/duck3.gif +0 -0
  218. data/doc/ex/images/duck4.gif +0 -0
  219. data/doc/ex/images/duck5.gif +0 -0
  220. data/doc/ex/images/duck6.gif +0 -0
  221. data/doc/ex/images/duck7.gif +0 -0
  222. data/doc/ex/images/duck8.gif +0 -0
  223. data/doc/ex/images/duck9.gif +0 -0
  224. data/doc/ex/images/graydient230x6.gif +0 -0
  225. data/doc/ex/images/image_with_profile.jpg +0 -0
  226. data/doc/ex/images/logo400x83.gif +0 -0
  227. data/doc/ex/images/model.miff +0 -0
  228. data/doc/ex/images/notimplemented.gif +0 -0
  229. data/doc/ex/images/smile.miff +0 -0
  230. data/doc/ex/images/spin.gif +0 -0
  231. data/doc/ex/implode.rb +0 -34
  232. data/doc/ex/level.rb +0 -11
  233. data/doc/ex/level_colors.rb +0 -11
  234. data/doc/ex/line.rb +0 -41
  235. data/doc/ex/line01.rb +0 -21
  236. data/doc/ex/mask.rb +0 -35
  237. data/doc/ex/matte_fill_to_border.rb +0 -39
  238. data/doc/ex/matte_floodfill.rb +0 -32
  239. data/doc/ex/matte_replace.rb +0 -39
  240. data/doc/ex/median_filter.rb +0 -28
  241. data/doc/ex/modulate.rb +0 -11
  242. data/doc/ex/mono.rb +0 -23
  243. data/doc/ex/morph.rb +0 -25
  244. data/doc/ex/mosaic.rb +0 -37
  245. data/doc/ex/motion_blur.rb +0 -11
  246. data/doc/ex/negate.rb +0 -11
  247. data/doc/ex/negate_channel.rb +0 -9
  248. data/doc/ex/nested_rvg.rb +0 -21
  249. data/doc/ex/nonzero.rb +0 -42
  250. data/doc/ex/normalize.rb +0 -11
  251. data/doc/ex/oil_paint.rb +0 -11
  252. data/doc/ex/opacity.rb +0 -37
  253. data/doc/ex/ordered_dither.rb +0 -11
  254. data/doc/ex/path.rb +0 -63
  255. data/doc/ex/pattern1.rb +0 -25
  256. data/doc/ex/pattern2.rb +0 -26
  257. data/doc/ex/polaroid.rb +0 -26
  258. data/doc/ex/polygon.rb +0 -23
  259. data/doc/ex/polygon01.rb +0 -21
  260. data/doc/ex/polyline.rb +0 -22
  261. data/doc/ex/polyline01.rb +0 -21
  262. data/doc/ex/posterize.rb +0 -8
  263. data/doc/ex/preview.rb +0 -8
  264. data/doc/ex/qbezierpath.rb +0 -52
  265. data/doc/ex/quad01.rb +0 -34
  266. data/doc/ex/quantize-m.rb +0 -25
  267. data/doc/ex/radial_blur.rb +0 -9
  268. data/doc/ex/raise.rb +0 -8
  269. data/doc/ex/random_threshold_channel.rb +0 -13
  270. data/doc/ex/rect01.rb +0 -14
  271. data/doc/ex/rect02.rb +0 -20
  272. data/doc/ex/rectangle.rb +0 -34
  273. data/doc/ex/reduce_noise.rb +0 -28
  274. data/doc/ex/remap.rb +0 -11
  275. data/doc/ex/remap_images.rb +0 -19
  276. data/doc/ex/resize_to_fill.rb +0 -8
  277. data/doc/ex/resize_to_fit.rb +0 -8
  278. data/doc/ex/roll.rb +0 -9
  279. data/doc/ex/rotate.rb +0 -44
  280. data/doc/ex/rotate_f.rb +0 -14
  281. data/doc/ex/roundrect.rb +0 -33
  282. data/doc/ex/rubyname.rb +0 -30
  283. data/doc/ex/rvg_clippath.rb +0 -12
  284. data/doc/ex/rvg_linecap.rb +0 -42
  285. data/doc/ex/rvg_linejoin.rb +0 -40
  286. data/doc/ex/rvg_opacity.rb +0 -18
  287. data/doc/ex/rvg_pattern.rb +0 -26
  288. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  289. data/doc/ex/segment.rb +0 -11
  290. data/doc/ex/sepiatone.rb +0 -7
  291. data/doc/ex/shade.rb +0 -11
  292. data/doc/ex/shadow.rb +0 -30
  293. data/doc/ex/shave.rb +0 -15
  294. data/doc/ex/shear.rb +0 -10
  295. data/doc/ex/sketch.rb +0 -17
  296. data/doc/ex/skewx.rb +0 -51
  297. data/doc/ex/skewy.rb +0 -47
  298. data/doc/ex/smile.rb +0 -126
  299. data/doc/ex/solarize.rb +0 -11
  300. data/doc/ex/sparse_color.rb +0 -55
  301. data/doc/ex/splice.rb +0 -8
  302. data/doc/ex/spread.rb +0 -11
  303. data/doc/ex/stegano.rb +0 -54
  304. data/doc/ex/stroke_dasharray.rb +0 -42
  305. data/doc/ex/stroke_fill.rb +0 -10
  306. data/doc/ex/stroke_linecap.rb +0 -44
  307. data/doc/ex/stroke_linejoin.rb +0 -48
  308. data/doc/ex/stroke_width.rb +0 -49
  309. data/doc/ex/swirl.rb +0 -17
  310. data/doc/ex/text.rb +0 -37
  311. data/doc/ex/text01.rb +0 -16
  312. data/doc/ex/text_align.rb +0 -36
  313. data/doc/ex/text_antialias.rb +0 -37
  314. data/doc/ex/text_styles.rb +0 -19
  315. data/doc/ex/text_undercolor.rb +0 -28
  316. data/doc/ex/texture_fill_to_border.rb +0 -34
  317. data/doc/ex/texture_floodfill.rb +0 -32
  318. data/doc/ex/texturefill.rb +0 -24
  319. data/doc/ex/threshold.rb +0 -13
  320. data/doc/ex/to_blob.rb +0 -13
  321. data/doc/ex/translate.rb +0 -39
  322. data/doc/ex/transparent.rb +0 -38
  323. data/doc/ex/transpose.rb +0 -9
  324. data/doc/ex/transverse.rb +0 -9
  325. data/doc/ex/tref01.rb +0 -24
  326. data/doc/ex/triangle01.rb +0 -15
  327. data/doc/ex/trim.rb +0 -23
  328. data/doc/ex/tspan01.rb +0 -17
  329. data/doc/ex/tspan02.rb +0 -17
  330. data/doc/ex/tspan03.rb +0 -19
  331. data/doc/ex/unsharp_mask.rb +0 -28
  332. data/doc/ex/viewex.rb +0 -33
  333. data/doc/ex/vignette.rb +0 -12
  334. data/doc/ex/watermark.rb +0 -27
  335. data/doc/ex/wave.rb +0 -9
  336. data/doc/ex/wet_floor.rb +0 -58
  337. data/doc/ex/writing_mode01.rb +0 -26
  338. data/doc/ex/writing_mode02.rb +0 -26
  339. data/doc/ilist.html +0 -2056
  340. data/doc/image1.html +0 -4680
  341. data/doc/image2.html +0 -3665
  342. data/doc/image3.html +0 -4522
  343. data/doc/imageattrs.html +0 -1638
  344. data/doc/imusage.html +0 -514
  345. data/doc/index.html +0 -416
  346. data/doc/info.html +0 -1499
  347. data/doc/magick.html +0 -570
  348. data/doc/optequiv.html +0 -2435
  349. data/doc/rvg.html +0 -975
  350. data/doc/rvgclip.html +0 -248
  351. data/doc/rvggroup.html +0 -305
  352. data/doc/rvgimage.html +0 -289
  353. data/doc/rvgpattern.html +0 -475
  354. data/doc/rvgshape.html +0 -406
  355. data/doc/rvgstyle.html +0 -270
  356. data/doc/rvgtext.html +0 -465
  357. data/doc/rvgtspan.html +0 -238
  358. data/doc/rvgtut.html +0 -530
  359. data/doc/rvguse.html +0 -145
  360. data/doc/rvgxform.html +0 -294
  361. data/doc/scripts/doc.js +0 -22
  362. data/doc/scripts/stripeTables.js +0 -23
  363. data/doc/struct.html +0 -1339
  364. data/doc/usage.html +0 -1621
  365. data/examples/constitute.rb +0 -7
  366. data/examples/crop_with_gravity.rb +0 -42
  367. data/examples/demo.rb +0 -323
  368. data/examples/describe.rb +0 -41
  369. data/examples/find_similar_region.rb +0 -34
  370. data/examples/histogram.rb +0 -312
  371. data/examples/identify.rb +0 -174
  372. data/examples/image_opacity.rb +0 -28
  373. data/examples/import_export.rb +0 -31
  374. data/examples/pattern_fill.rb +0 -37
  375. data/examples/rotating_text.rb +0 -45
  376. data/examples/spinner.rb +0 -49
  377. data/examples/thumbnail.rb +0 -64
  378. data/examples/vignette.rb +0 -78
  379. data/lib/obsolete.rb +0 -66
  380. data/spec/rmagick/ImageList1_spec.rb +0 -24
  381. data/spec/rmagick/draw_spec.rb +0 -155
  382. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  383. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  384. data/spec/rmagick/image/composite_spec.rb +0 -72
  385. data/spec/rmagick/image/constitute_spec.rb +0 -13
  386. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  387. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  388. data/spec/rmagick/image/ping_spec.rb +0 -12
  389. data/spec/rmagick/image/properties_spec.rb +0 -27
  390. data/spec/rmagick/image/read_spec.rb +0 -28
  391. data/spec/spec_helper.rb +0 -10
  392. data/spec/support/issue_200/app.rb +0 -8
  393. data/test/Draw.rb +0 -351
  394. data/test/Enum.rb +0 -228
  395. data/test/Fill.rb +0 -93
  396. data/test/Image1.rb +0 -627
  397. data/test/Image2.rb +0 -1426
  398. data/test/Image3.rb +0 -1091
  399. data/test/ImageList1.rb +0 -858
  400. data/test/ImageList2.rb +0 -406
  401. data/test/Image_attributes.rb +0 -666
  402. data/test/Import_Export.rb +0 -115
  403. data/test/Info.rb +0 -444
  404. data/test/KernelInfo.rb +0 -67
  405. data/test/Magick.rb +0 -311
  406. data/test/Pixel.rb +0 -285
  407. data/test/PolaroidOptions.rb +0 -23
  408. data/test/Preview.rb +0 -26
  409. data/test/Struct.rb +0 -45
  410. data/test/appearance/Montage.rb +0 -26
  411. data/test/appearance/appearance_assertion.rb +0 -13
  412. data/test/appearance/expected/montage_border_color.jpg +0 -0
  413. data/test/cmyk.icm +0 -0
  414. data/test/lib/Obsolete.rb +0 -30
  415. data/test/lib/internal/Draw.rb +0 -823
  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
data/README.md ADDED
@@ -0,0 +1,326 @@
1
+ RMagick
2
+ =======
3
+
4
+ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/901780ea1a244a8584b18033b2e03866)](https://app.codacy.com/gh/rmagick/rmagick?utm_source=github.com&utm_medium=referral&utm_content=rmagick/rmagick&utm_campaign=Badge_Grade_Settings)
5
+ [![GemVersion](https://img.shields.io/gem/v/rmagick.svg?style=flat)](https://rubygems.org/gems/rmagick)
6
+ ![CI](https://github.com/rmagick/rmagick/workflows/CI/badge.svg)
7
+
8
+ Table of Contents
9
+ -----------------
10
+
11
+ - [Introduction](#introduction)
12
+ - [Prerequisites](#prerequisites)
13
+ - [Installing RMagick](#installing-rmagick)
14
+ - [Using RMagick](#using-rmagick)
15
+ - [Things that can go wrong](#things-that-can-go-wrong)
16
+ - [Upgrading](#upgrading)
17
+ - [More samples](#more-samples)
18
+ - [Reporting Bugs](#reporting-bugs)
19
+ - [Development Setup](#development-setup)
20
+ - [Credits](#credits)
21
+ - [License](#mit-license)
22
+ - [Releasing](#releasing)
23
+
24
+ Introduction
25
+ ------------
26
+
27
+ RMagick is an interface between the Ruby programming language and the
28
+ ImageMagick image processing library.
29
+
30
+ Prerequisites
31
+ -------------
32
+
33
+ These prerequisites are required for the latest version of RMagick.
34
+
35
+ **OS**
36
+ - Linux
37
+ - \*BSD
38
+ - macOS
39
+ - Windows
40
+ - Other \*nix-like systems
41
+
42
+ **Ruby**
43
+ - Version 2.3 or later.
44
+
45
+ You can get Ruby from <https://www.ruby-lang.org>.
46
+
47
+ Ruby must be able to build C-Extensions (e.g. MRI, Rubinius, not JRuby)
48
+
49
+ **ImageMagick**
50
+ - Version 6.7.7 or later (6.x.x).
51
+ - Version 7.0.8 or later (7.x.x). Require RMagick 4.1.0 or later.
52
+
53
+ You can get ImageMagick from <https://imagemagick.org>.
54
+
55
+ ### Linux
56
+ #### Ubuntu
57
+ On Ubuntu, you can run:
58
+
59
+ ```sh
60
+ sudo apt-get install libmagickwand-dev
61
+ ```
62
+
63
+ #### Centos
64
+ On Centos, you can run:
65
+
66
+ ```sh
67
+ sudo yum install gcc ImageMagick-devel make which
68
+ ```
69
+
70
+ #### Arch Linux
71
+ On Arch Linux, you can run:
72
+
73
+ ```sh
74
+ pacman -Syy pkg-config imagemagick
75
+ ```
76
+
77
+ #### Alpine Linux
78
+ On Alpine Linux, you can run:
79
+
80
+ ```
81
+ apk add pkgconfig imagemagick imagemagick-dev imagemagick-libs
82
+ ```
83
+
84
+ or you can run if you would like to use ImageMagick 6:
85
+
86
+ ```
87
+ apk add pkgconfig imagemagick6 imagemagick6-dev imagemagick6-libs
88
+ ```
89
+
90
+ ### macOS
91
+ On macOS, you can run:
92
+
93
+ ```sh
94
+ brew install pkg-config imagemagick
95
+ ```
96
+
97
+ or you can run if you would like to use ImageMagick 6:
98
+
99
+ ```sh
100
+ brew install pkg-config imagemagick@6
101
+ ```
102
+
103
+ ### Windows
104
+ 1. Install latest Ruby+Devkit package which you can get from [RubyInstaller for Windows](https://rubyinstaller.org).
105
+ 2. You might need to configure `PATH` environment variable to where the compiler is located.
106
+ (Ex: `set PATH=C:\Ruby27-x64\msys64\usr\bin;C:\Ruby27-x64\msys64\mingw64\bin;%PATH%`)
107
+ 3. Download `ImageMagick-7.XXXX-Q16-x64-dll.exe` (not, `ImageMagick-7.XXXX-Q16-x64-static.exe`) binary from [Windows Binary Release](https://imagemagick.org/script/download.php#windows), or you can download ImageMagick 6 from [Windows Binary Release](https://legacy.imagemagick.org/script/download.php#windows).
108
+ 4. Install ImageMagick. You need to turn on checkboxes `Add application directory to your system path` and `Install development headers and librarries for C and C++` in an installer for RMagick.
109
+ <img width="50%" src="https://user-images.githubusercontent.com/199156/77183472-b72cbd00-6b11-11ea-8b9a-247bc1f9d8b1.png" />
110
+
111
+ Installing RMagick
112
+ ------------------
113
+
114
+ ### Installing via Bundler
115
+
116
+ Add to your `Gemfile`:
117
+
118
+ ```rb
119
+ gem 'rmagick'
120
+ ```
121
+
122
+ Then run:
123
+
124
+ ```sh
125
+ bundle install
126
+ ```
127
+
128
+ ### Installing via RubyGems
129
+
130
+ Run:
131
+
132
+ ```sh
133
+ gem install rmagick
134
+ ```
135
+
136
+ ### Versioning
137
+
138
+ RMagick is versioned according to Semantic Versioning. For stable version
139
+ compatible with Ruby 1.8+, use `~> 2.0`. Versions >= 3 work on Ruby >= 2.x
140
+ only.
141
+
142
+ Using RMagick
143
+ -------------
144
+
145
+ Require RMagick in your project as follows:
146
+
147
+ ```rb
148
+ require 'rmagick'
149
+ ```
150
+
151
+ See <https://rmagick.github.io/usage.html> for links to more information.
152
+
153
+ Things that can go wrong
154
+ ------------------------
155
+
156
+ The [RMagick installation FAQ][faq] has answers to the most commonly reported
157
+ problems, though may be out of date.
158
+
159
+ ### Can't install RMagick. Can't find libMagick or one of the dependent libraries. Check the mkmf.log file for more detailed information
160
+
161
+ Typically this message means that one or more of the libraries that ImageMagick
162
+ depends on hasn't been installed. Examine the mkmf.log file in the ext/RMagick
163
+ subdirectory of the installation directory for any error messages. These
164
+ messages typically contain enough additional information for you to be able to
165
+ diagnose the problem. Also see [this FAQ][libmagick-faq].
166
+
167
+ On OS X with Homebrew, try (re)installing pkg-config:
168
+
169
+ ```sh
170
+ brew uninstall pkg-config
171
+ brew install pkg-config
172
+ brew unlink pkg-config
173
+ brew link pkg-config
174
+ ```
175
+
176
+ ### Cannot open shared object file
177
+
178
+ If you get a message like this:
179
+
180
+ ```sh
181
+ $DIR/RMagick.rb:11:in `require': libMagick.so.0:
182
+ cannot open shared object file: No such file or directory -
183
+ $DIR/RMagick2.so (LoadError)
184
+ ```
185
+
186
+ you probably do not have the directory in which the ImageMagick library
187
+ is installed in your load path. An easy way to fix this is to define
188
+ the directory in the `LD_LIBRARY_PATH` environment variable. For
189
+ example, suppose you installed the ImageMagick library `libMagick.so` in
190
+ `/usr/local/lib`. (By default this is where it is installed.) Create the
191
+ `LD_LIBRARY_PATH` variable like this:
192
+
193
+ ```sh
194
+ export LD_LIBRARY_PATH=/usr/local/lib
195
+ ```
196
+
197
+ On Linux, see `ld(1)` and `ld.so(8)` for more information. On other operating
198
+ systems, see the documentation for the dynamic loading facility.
199
+
200
+ This operation might not be required when you can use 4.2.5 or later.
201
+
202
+ ### Segmentation fault
203
+
204
+ Default stack size of your operating system might be too small. Try removing
205
+ the limit with this command:
206
+
207
+ ```sh
208
+ ulimit -s unlimited
209
+ ```
210
+
211
+ Upgrading
212
+ ---------
213
+
214
+ If you upgrade to a newer release of ImageMagick, make sure you're using a
215
+ release of RMagick that supports that release. It's safe to install a new
216
+ release of RMagick over an earlier release.
217
+
218
+ More samples
219
+ ------------
220
+
221
+ You can find more sample RMagick programs in the `/examples` directory. These
222
+ programs are not installed in the RMagick documentation tree.
223
+
224
+ Reporting bugs
225
+ --------------
226
+
227
+ Please report bugs in RMagick, its documentation, or its installation programs
228
+ via the bug tracker on the [RMagick issues page][issues].
229
+
230
+ However, We can't help with Ruby installation and configuration or ImageMagick
231
+ installation and configuration. Information about reporting problems and
232
+ getting help for ImageMagick is available at the [ImageMagick
233
+ website][imagemagick] or the [ImageMagick Forum][imagemagick-forum].
234
+
235
+ Development Setup
236
+ -----------------
237
+
238
+ In order to minimize issues on your local machine, we recommend that you make
239
+ use of a [Vagrant installation][dev-box].
240
+
241
+ Steps to get up and running with a passing build are as follows:
242
+
243
+ ### 1) set up the Vagrant environment
244
+
245
+ If you don't already have Vagrant installed, you can download and install it
246
+ from [here][vagrant]. Once installed, we can set up a pre-built environment:
247
+
248
+ ```sh
249
+ git clone https://github.com/tjschuck/rake-compiler-dev-box.git
250
+ cd rake-compiler-dev-box
251
+ vagrant up
252
+ ```
253
+
254
+ This last part will probably take a while as it has to download an Ubuntu image
255
+ and configure it. If there is an error during this process, you may need to
256
+ reboot your computer and enable virtualization in your BIOS settings.
257
+
258
+ ### 2) clone RMagick and log in to the vagrant box
259
+
260
+ Within the `rake-compiler-dev-box` directory:
261
+
262
+ ```sh
263
+ git clone https://github.com/rmagick/rmagick.git # or your fork
264
+ vagrant ssh
265
+ ```
266
+
267
+ ### 3) install ImageMagick and additional environment stuff
268
+
269
+ ```sh
270
+ cd /vagrant/rmagick
271
+ export IMAGEMAGICK_VERSION=6.8.9-10
272
+ bash ./before_install_linux.sh
273
+ ```
274
+
275
+ This will take just a few minutes to build ImageMagick
276
+
277
+ ### 4) build RMagick
278
+
279
+ ```sh
280
+ rake
281
+ ```
282
+
283
+ This compiles the RMagick extensions and runs the tests. If all goes well
284
+ you'll see a lot of output, eventually ending in something like:
285
+
286
+ ```sh
287
+ Finished tests in 35.865734s, 11.3758 tests/s, 6560.3007 assertions/s.
288
+
289
+ 408 tests, 235290 assertions, 0 failures, 0 errors, 0 skips
290
+ ```
291
+
292
+ And you're all set! The copy of RMagick within `/vagrant/rmagick` inside your
293
+ Vagrant session is the same as the one in the `rake-compiler-dev-box` directory
294
+ on your machine. You can make changes locally and run tests within your `ssh`
295
+ session.
296
+
297
+ Credits
298
+ -------
299
+
300
+ **Authors:** Tim Hunter, Omer Bar-or, Benjamin Thomas
301
+
302
+ Thanks to [ImageMagick Studio LLC][imagemagick] for ImageMagick and for hosting
303
+ the RMagick documentation.
304
+
305
+ License
306
+ -----------
307
+
308
+ [MIT License](LICENSE)
309
+
310
+ Releasing
311
+ ---------
312
+
313
+ See <https://github.com/rmagick/rmagick/wiki/Release-Process>
314
+
315
+ 1. Update ChangeLog
316
+ 2. Edit `lib/rmagick/version.rb`
317
+ 3. Are the tests passing? Run `rake` again just to be sure.
318
+ 4. `rake release`
319
+
320
+ [issues]: https://github.com/rmagick/rmagick/issues
321
+ [libmagick-faq]: https://web.archive.org/web/20140512193354/https://rmagick.rubyforge.org/install-faq.html#libmagick
322
+ [faq]: https://web.archive.org/web/20140512193354/https://rmagick.rubyforge.org/install-faq.html
323
+ [imagemagick]: https://imagemagick.org
324
+ [imagemagick-forum]: https://imagemagick.org/discourse-server
325
+ [dev-box]: https://github.com/tjschuck/rake-compiler-dev-box
326
+ [vagrant]: https://www.vagrantup.com/
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ task build: [:config] do
43
43
  FileUtils.mkdir_p(File.join(base, 'pkg'))
44
44
  FileUtils.mv(File.join(base, gem_name), 'pkg')
45
45
  else
46
- STDERR.puts 'Could not build gem'
46
+ warn 'Could not build gem'
47
47
  exit $CHILD_STATUS.exitstatus
48
48
  end
49
49
  end
@@ -121,21 +121,21 @@ namespace :legacy do
121
121
  task README => 'README.txt' do
122
122
  puts "writing #{README}"
123
123
  File.open(README, 'w') do |html|
124
- html.write <<END_HTML_HEAD
125
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
126
- <html>
127
- <head>
128
- <title>RMagick #{Magick::VERSION} README</title>
129
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
130
- <meta name="GENERATOR" content="RedCloth">
131
- </head>
132
- <body>
133
- END_HTML_HEAD
124
+ html.write <<~END_HTML_HEAD
125
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
126
+ <html>
127
+ <head>
128
+ <title>RMagick #{Magick::VERSION} README</title>
129
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
130
+ <meta name="GENERATOR" content="RedCloth">
131
+ </head>
132
+ <body>
133
+ END_HTML_HEAD
134
134
  html.write File.readlines('README.txt')
135
- html.write <<END_HTML_TAIL
136
- </body>
137
- </html>
138
- END_HTML_TAIL
135
+ html.write <<~END_HTML_TAIL
136
+ </body>
137
+ </html>
138
+ END_HTML_TAIL
139
139
  end
140
140
  end
141
141
 
@@ -172,7 +172,6 @@ END_HTML_TAIL
172
172
  end
173
173
 
174
174
  require 'rake/extensiontask'
175
- require 'rake/testtask'
176
175
  require 'rspec/core/rake_task'
177
176
  RSpec::Core::RakeTask.new(:spec)
178
177
 
@@ -180,11 +179,6 @@ Rake::ExtensionTask.new('RMagick2') do |ext|
180
179
  ext.ext_dir = 'ext/RMagick'
181
180
  end
182
181
 
183
- Rake::TestTask.new(:test) do |t|
184
- t.libs << 'test'
185
- end
186
-
187
- task test: :compile
188
182
  task spec: :compile
189
183
 
190
184
  if ENV['STYLE_CHECKS']
@@ -192,5 +186,5 @@ if ENV['STYLE_CHECKS']
192
186
  RuboCop::RakeTask.new
193
187
  task default: %i[rubocop]
194
188
  else
195
- task default: %i[spec test]
189
+ task default: %i[spec]
196
190
  end
@@ -1,3 +1,5 @@
1
+ #!/usr/bin/env bash
2
+
1
3
  set -euox pipefail
2
4
 
3
5
  gem install bundler
@@ -13,62 +15,54 @@ if [ ! -v IMAGEMAGICK_VERSION ]; then
13
15
  exit 1
14
16
  fi
15
17
 
18
+ sudo apt-get clean
19
+ sudo apt-get update
20
+
16
21
  # remove all existing imagemagick related packages
17
22
  sudo apt-get autoremove -y imagemagick* libmagick* --purge
18
23
 
19
- if [ ! -v TRAVIS ]; then
20
- sudo apt-get update
21
-
22
- # install build tools, ImageMagick delegates
23
- sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
24
- liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
25
- libtiff5-dev libwebp-dev vim ghostscript ccache
26
- fi
24
+ # install build tools, ImageMagick delegates
25
+ sudo apt-get install -y build-essential libx11-dev libxext-dev zlib1g-dev \
26
+ liblcms2-dev libpng-dev libjpeg-dev libfreetype6-dev libxml2-dev \
27
+ libtiff5-dev libwebp-dev liblqr-1-0-dev vim gsfonts ghostscript ccache
27
28
 
28
29
  if [ ! -d /usr/include/freetype ]; then
29
30
  # If `/usr/include/freetype` is not existed, ImageMagick 6.7 configuration fails about Freetype.
30
31
  sudo ln -sf /usr/include/freetype2 /usr/include/freetype
31
32
  fi
32
33
 
33
- project_dir=`pwd`
34
- build_dir=${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}
34
+ project_dir=$(pwd)
35
+ build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
35
36
  if [ -v CONFIGURE_OPTIONS ]; then
36
- build_dir=${build_dir}-${CONFIGURE_OPTIONS}
37
+ build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
37
38
  fi
38
39
 
39
40
  build_imagemagick() {
40
41
  mkdir -p build-ImageMagick
41
42
 
42
43
  version=(${IMAGEMAGICK_VERSION//./ })
43
- if (( "${version[0]}${version[1]}" >= 69 )); then
44
- wget https://github.com/ImageMagick/ImageMagick6/archive/${IMAGEMAGICK_VERSION}.tar.gz
45
- tar -xf ${IMAGEMAGICK_VERSION}.tar.gz
46
- rm ${IMAGEMAGICK_VERSION}.tar.gz
47
- mv ImageMagick6-${IMAGEMAGICK_VERSION} $build_dir
48
- else
49
- wget https://www.imagemagick.org/download/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
50
- tar -xf ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
51
- rm ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz
52
- mv ImageMagick-${IMAGEMAGICK_VERSION} $build_dir
53
- fi
44
+ wget "https://imagemagick.org/archive/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
45
+ tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
46
+ rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
47
+ mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
54
48
 
55
49
  options="--with-magick-plus-plus=no --disable-docs"
56
50
  if [ -v CONFIGURE_OPTIONS ]; then
57
- options="${CONFIGURE_OPTIONS} $options"
51
+ options="${CONFIGURE_OPTIONS} ${options}"
58
52
  fi
59
53
 
60
- cd $build_dir
61
- CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr $options
54
+ cd "${build_dir}"
55
+ CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr "${options}"
62
56
  make -j
63
57
  }
64
58
 
65
- if [ ! -d $build_dir ]; then
59
+ if [ ! -d "${build_dir}" ]; then
66
60
  build_imagemagick
67
61
  fi
68
62
 
69
- cd $build_dir
63
+ cd "${build_dir}"
70
64
  sudo make install -j
71
- cd $project_dir
65
+ cd "${project_dir}"
72
66
 
73
67
  sudo ldconfig
74
68
 
@@ -1,2 +1,57 @@
1
- brew update
2
- brew install imagemagick
1
+ #!/usr/bin/env bash
2
+
3
+ set -euox pipefail
4
+
5
+ gem install bundler
6
+
7
+ if [ -v STYLE_CHECKS ]; then
8
+ set +ux
9
+ exit 0
10
+ fi
11
+
12
+ if [ ! -v IMAGEMAGICK_VERSION ]; then
13
+ echo "you must specify an ImageMagick version."
14
+ echo "example: 'IMAGEMAGICK_VERSION=6.8.9-10 bash ./before_install_osx.sh'"
15
+ exit 1
16
+ fi
17
+
18
+ export HOMEBREW_NO_AUTO_UPDATE=true
19
+ brew install wget pkg-config ghostscript freetype jpeg little-cms2 libomp libpng libtiff liblqr libtool zlib webp
20
+
21
+ export LDFLAGS="-L/usr/local/opt/libxml2/lib -L/usr/local/opt/zlib/lib"
22
+ export CPPFLAGS="-I/usr/local/opt/libxml2/include -I/usr/local/opt/zlib/include"
23
+
24
+ project_dir=$(pwd)
25
+ build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
26
+ if [ -v CONFIGURE_OPTIONS ]; then
27
+ build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
28
+ fi
29
+
30
+ build_imagemagick() {
31
+ mkdir -p build-ImageMagick
32
+
33
+ version=(${IMAGEMAGICK_VERSION//./ })
34
+ wget "https://imagemagick.org/archive/releases/ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
35
+ tar -xf "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
36
+ rm "ImageMagick-${IMAGEMAGICK_VERSION}.tar.xz"
37
+ mv "ImageMagick-${IMAGEMAGICK_VERSION}" "${build_dir}"
38
+
39
+ options="--with-magick-plus-plus=no --disable-docs"
40
+ if [ -v CONFIGURE_OPTIONS ]; then
41
+ options="${CONFIGURE_OPTIONS} ${options}"
42
+ fi
43
+
44
+ cd "${build_dir}"
45
+ ./configure --prefix=/usr/local "${options}"
46
+ make -j
47
+ }
48
+
49
+ if [ ! -d "${build_dir}" ]; then
50
+ build_imagemagick
51
+ fi
52
+
53
+ cd "${build_dir}"
54
+ make install -j
55
+ cd "${project_dir}"
56
+
57
+ set +ux