rmagick 2.13.2 → 4.2.2

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

Potentially problematic release.


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

Files changed (380) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +17 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +107 -0
  6. data/.gitignore +25 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +37 -0
  9. data/.rubocop_todo.yml +449 -0
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +1277 -0
  12. data/CODE_OF_CONDUCT.md +128 -0
  13. data/CONTRIBUTING.md +81 -0
  14. data/Gemfile +4 -0
  15. data/LICENSE +20 -0
  16. data/README.md +324 -0
  17. data/Rakefile +190 -0
  18. data/before_install_linux.sh +69 -0
  19. data/before_install_osx.sh +57 -0
  20. data/deprecated/RMagick.rb +6 -0
  21. data/ext/RMagick/extconf.rb +334 -333
  22. data/ext/RMagick/rmagick.c +129 -127
  23. data/ext/RMagick/rmagick.h +221 -320
  24. data/ext/RMagick/rmdraw.c +458 -767
  25. data/ext/RMagick/rmenum.c +305 -752
  26. data/ext/RMagick/rmfill.c +231 -199
  27. data/ext/RMagick/rmilist.c +437 -478
  28. data/ext/RMagick/rmimage.c +6130 -5342
  29. data/ext/RMagick/rminfo.c +695 -833
  30. data/ext/RMagick/rmkinfo.c +198 -0
  31. data/ext/RMagick/rmmain.c +752 -506
  32. data/ext/RMagick/rmmontage.c +94 -152
  33. data/ext/RMagick/rmpixel.c +619 -425
  34. data/ext/RMagick/rmstruct.c +206 -309
  35. data/ext/RMagick/rmutil.c +514 -344
  36. data/lib/rmagick/version.rb +5 -0
  37. data/lib/rmagick.rb +1 -0
  38. data/lib/rmagick_internal.rb +1922 -0
  39. data/lib/rvg/clippath.rb +35 -39
  40. data/lib/rvg/container.rb +123 -124
  41. data/lib/rvg/deep_equal.rb +45 -49
  42. data/lib/rvg/describable.rb +41 -47
  43. data/lib/rvg/embellishable.rb +380 -411
  44. data/lib/rvg/misc.rb +691 -711
  45. data/lib/rvg/paint.rb +43 -47
  46. data/lib/rvg/pathdata.rb +119 -125
  47. data/lib/rvg/rvg.rb +214 -213
  48. data/lib/rvg/stretchable.rb +153 -162
  49. data/lib/rvg/stylable.rb +111 -117
  50. data/lib/rvg/text.rb +169 -180
  51. data/lib/rvg/transformable.rb +121 -127
  52. data/lib/rvg/units.rb +58 -61
  53. data/rmagick.gemspec +36 -16
  54. metadata +188 -365
  55. data/ChangeLog +0 -773
  56. data/Doxyfile +0 -1514
  57. data/README-Mac-OSX.txt +0 -1
  58. data/README.html +0 -10
  59. data/build_tarball.rake +0 -215
  60. data/doc/comtasks.html +0 -287
  61. data/doc/constants.html +0 -1581
  62. data/doc/css/doc.css +0 -299
  63. data/doc/css/popup.css +0 -34
  64. data/doc/css/ref.css +0 -67
  65. data/doc/draw.html +0 -3269
  66. data/doc/ex/InitialCoords.rb +0 -23
  67. data/doc/ex/NewCoordSys.rb +0 -32
  68. data/doc/ex/OrigCoordSys.rb +0 -18
  69. data/doc/ex/PreserveAspectRatio.rb +0 -205
  70. data/doc/ex/RotateScale.rb +0 -37
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -16
  73. data/doc/ex/Use02.rb +0 -21
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -33
  76. data/doc/ex/adaptive_threshold.rb +0 -10
  77. data/doc/ex/add_noise.rb +0 -17
  78. data/doc/ex/affine.rb +0 -48
  79. data/doc/ex/affine_transform.rb +0 -20
  80. data/doc/ex/arc.rb +0 -49
  81. data/doc/ex/arcpath.rb +0 -33
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -61
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -18
  87. data/doc/ex/bilevel_channel.rb +0 -9
  88. data/doc/ex/blur_image.rb +0 -12
  89. data/doc/ex/border.rb +0 -10
  90. data/doc/ex/bounding_box.rb +0 -44
  91. data/doc/ex/cbezier1.rb +0 -42
  92. data/doc/ex/cbezier2.rb +0 -42
  93. data/doc/ex/cbezier3.rb +0 -42
  94. data/doc/ex/cbezier4.rb +0 -43
  95. data/doc/ex/cbezier5.rb +0 -43
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -26
  98. data/doc/ex/charcoal.rb +0 -12
  99. data/doc/ex/chop.rb +0 -29
  100. data/doc/ex/circle.rb +0 -33
  101. data/doc/ex/circle01.rb +0 -17
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -60
  104. data/doc/ex/color_fill_to_border.rb +0 -29
  105. data/doc/ex/color_floodfill.rb +0 -28
  106. data/doc/ex/color_histogram.rb +0 -48
  107. data/doc/ex/color_reset.rb +0 -11
  108. data/doc/ex/colorize.rb +0 -16
  109. data/doc/ex/colors.rb +0 -64
  110. data/doc/ex/compose_mask.rb +0 -23
  111. data/doc/ex/composite.rb +0 -135
  112. data/doc/ex/composite_layers.rb +0 -53
  113. data/doc/ex/composite_tiled.rb +0 -23
  114. data/doc/ex/contrast.rb +0 -36
  115. data/doc/ex/crop.rb +0 -31
  116. data/doc/ex/crop_with_gravity.rb +0 -46
  117. data/doc/ex/cubic01.rb +0 -45
  118. data/doc/ex/cubic02.rb +0 -94
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -13
  121. data/doc/ex/drawcomp.rb +0 -42
  122. data/doc/ex/drop_shadow.rb +0 -60
  123. data/doc/ex/edge.rb +0 -11
  124. data/doc/ex/ellipse.rb +0 -45
  125. data/doc/ex/ellipse01.rb +0 -22
  126. data/doc/ex/emboss.rb +0 -11
  127. data/doc/ex/enhance.rb +0 -28
  128. data/doc/ex/equalize.rb +0 -11
  129. data/doc/ex/evenodd.rb +0 -43
  130. data/doc/ex/fill_pattern.rb +0 -26
  131. data/doc/ex/flatten_images.rb +0 -36
  132. data/doc/ex/flip.rb +0 -11
  133. data/doc/ex/flop.rb +0 -11
  134. data/doc/ex/font_styles.rb +0 -34
  135. data/doc/ex/fonts.rb +0 -20
  136. data/doc/ex/frame.rb +0 -12
  137. data/doc/ex/gaussian_blur.rb +0 -11
  138. data/doc/ex/get_multiline_type_metrics.rb +0 -42
  139. data/doc/ex/get_pixels.rb +0 -48
  140. data/doc/ex/get_type_metrics.rb +0 -146
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -46
  143. data/doc/ex/gravity.rb +0 -79
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -46
  147. data/doc/ex/images/Apple.miff +0 -0
  148. data/doc/ex/images/Ballerina.jpg +0 -0
  149. data/doc/ex/images/Ballerina3.jpg +0 -0
  150. data/doc/ex/images/Button_0.gif +0 -0
  151. data/doc/ex/images/Button_1.gif +0 -0
  152. data/doc/ex/images/Button_2.gif +0 -0
  153. data/doc/ex/images/Button_3.gif +0 -0
  154. data/doc/ex/images/Button_4.gif +0 -0
  155. data/doc/ex/images/Button_5.gif +0 -0
  156. data/doc/ex/images/Button_6.gif +0 -0
  157. data/doc/ex/images/Button_7.gif +0 -0
  158. data/doc/ex/images/Button_8.gif +0 -0
  159. data/doc/ex/images/Button_9.gif +0 -0
  160. data/doc/ex/images/Button_A.gif +0 -0
  161. data/doc/ex/images/Button_B.gif +0 -0
  162. data/doc/ex/images/Button_C.gif +0 -0
  163. data/doc/ex/images/Button_D.gif +0 -0
  164. data/doc/ex/images/Button_E.gif +0 -0
  165. data/doc/ex/images/Button_F.gif +0 -0
  166. data/doc/ex/images/Button_G.gif +0 -0
  167. data/doc/ex/images/Button_H.gif +0 -0
  168. data/doc/ex/images/Button_I.gif +0 -0
  169. data/doc/ex/images/Button_J.gif +0 -0
  170. data/doc/ex/images/Button_K.gif +0 -0
  171. data/doc/ex/images/Button_L.gif +0 -0
  172. data/doc/ex/images/Button_M.gif +0 -0
  173. data/doc/ex/images/Button_N.gif +0 -0
  174. data/doc/ex/images/Button_O.gif +0 -0
  175. data/doc/ex/images/Button_P.gif +0 -0
  176. data/doc/ex/images/Button_Q.gif +0 -0
  177. data/doc/ex/images/Button_R.gif +0 -0
  178. data/doc/ex/images/Button_S.gif +0 -0
  179. data/doc/ex/images/Button_T.gif +0 -0
  180. data/doc/ex/images/Button_U.gif +0 -0
  181. data/doc/ex/images/Button_V.gif +0 -0
  182. data/doc/ex/images/Button_W.gif +0 -0
  183. data/doc/ex/images/Button_X.gif +0 -0
  184. data/doc/ex/images/Button_Y.gif +0 -0
  185. data/doc/ex/images/Button_Z.gif +0 -0
  186. data/doc/ex/images/Cheetah.jpg +0 -0
  187. data/doc/ex/images/Coffee.wmf +0 -0
  188. data/doc/ex/images/Flower_Hat.jpg +0 -0
  189. data/doc/ex/images/Gold_Statue.jpg +0 -0
  190. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  191. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  192. data/doc/ex/images/Leaf.miff +0 -0
  193. data/doc/ex/images/No.wmf +0 -0
  194. data/doc/ex/images/Polynesia.jpg +0 -0
  195. data/doc/ex/images/Red_Rocks.jpg +0 -0
  196. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  197. data/doc/ex/images/Shorts.jpg +0 -0
  198. data/doc/ex/images/Snake.wmf +0 -0
  199. data/doc/ex/images/Violin.jpg +0 -0
  200. data/doc/ex/images/Yellow_Rose.miff +0 -0
  201. data/doc/ex/images/big-duck.gif +0 -0
  202. data/doc/ex/images/duck.gif +0 -0
  203. data/doc/ex/images/duck0.gif +0 -0
  204. data/doc/ex/images/duck1.gif +0 -0
  205. data/doc/ex/images/duck10.gif +0 -0
  206. data/doc/ex/images/duck11.gif +0 -0
  207. data/doc/ex/images/duck12.gif +0 -0
  208. data/doc/ex/images/duck13.gif +0 -0
  209. data/doc/ex/images/duck14.gif +0 -0
  210. data/doc/ex/images/duck15.gif +0 -0
  211. data/doc/ex/images/duck2.gif +0 -0
  212. data/doc/ex/images/duck3.gif +0 -0
  213. data/doc/ex/images/duck4.gif +0 -0
  214. data/doc/ex/images/duck5.gif +0 -0
  215. data/doc/ex/images/duck6.gif +0 -0
  216. data/doc/ex/images/duck7.gif +0 -0
  217. data/doc/ex/images/duck8.gif +0 -0
  218. data/doc/ex/images/duck9.gif +0 -0
  219. data/doc/ex/images/graydient230x6.gif +0 -0
  220. data/doc/ex/images/logo400x83.gif +0 -0
  221. data/doc/ex/images/model.miff +0 -0
  222. data/doc/ex/images/notimplemented.gif +0 -0
  223. data/doc/ex/images/smile.miff +0 -0
  224. data/doc/ex/images/spin.gif +0 -0
  225. data/doc/ex/implode.rb +0 -34
  226. data/doc/ex/level.rb +0 -11
  227. data/doc/ex/level_colors.rb +0 -11
  228. data/doc/ex/line.rb +0 -42
  229. data/doc/ex/line01.rb +0 -23
  230. data/doc/ex/mask.rb +0 -36
  231. data/doc/ex/matte_fill_to_border.rb +0 -40
  232. data/doc/ex/matte_floodfill.rb +0 -33
  233. data/doc/ex/matte_replace.rb +0 -40
  234. data/doc/ex/median_filter.rb +0 -28
  235. data/doc/ex/modulate.rb +0 -11
  236. data/doc/ex/mono.rb +0 -23
  237. data/doc/ex/morph.rb +0 -26
  238. data/doc/ex/mosaic.rb +0 -35
  239. data/doc/ex/motion_blur.rb +0 -11
  240. data/doc/ex/negate.rb +0 -11
  241. data/doc/ex/negate_channel.rb +0 -9
  242. data/doc/ex/nested_rvg.rb +0 -21
  243. data/doc/ex/nonzero.rb +0 -43
  244. data/doc/ex/normalize.rb +0 -11
  245. data/doc/ex/oil_paint.rb +0 -11
  246. data/doc/ex/opacity.rb +0 -37
  247. data/doc/ex/ordered_dither.rb +0 -11
  248. data/doc/ex/path.rb +0 -64
  249. data/doc/ex/pattern1.rb +0 -25
  250. data/doc/ex/pattern2.rb +0 -26
  251. data/doc/ex/polaroid.rb +0 -28
  252. data/doc/ex/polygon.rb +0 -24
  253. data/doc/ex/polygon01.rb +0 -23
  254. data/doc/ex/polyline.rb +0 -23
  255. data/doc/ex/polyline01.rb +0 -23
  256. data/doc/ex/posterize.rb +0 -8
  257. data/doc/ex/preview.rb +0 -9
  258. data/doc/ex/qbezierpath.rb +0 -52
  259. data/doc/ex/quad01.rb +0 -36
  260. data/doc/ex/quantize-m.rb +0 -25
  261. data/doc/ex/radial_blur.rb +0 -9
  262. data/doc/ex/raise.rb +0 -8
  263. data/doc/ex/random_threshold_channel.rb +0 -13
  264. data/doc/ex/rect01.rb +0 -15
  265. data/doc/ex/rect02.rb +0 -22
  266. data/doc/ex/rectangle.rb +0 -35
  267. data/doc/ex/reduce_noise.rb +0 -28
  268. data/doc/ex/remap.rb +0 -12
  269. data/doc/ex/remap_images.rb +0 -21
  270. data/doc/ex/resize_to_fill.rb +0 -10
  271. data/doc/ex/resize_to_fit.rb +0 -10
  272. data/doc/ex/roll.rb +0 -9
  273. data/doc/ex/rotate.rb +0 -45
  274. data/doc/ex/rotate_f.rb +0 -14
  275. data/doc/ex/roundrect.rb +0 -34
  276. data/doc/ex/rubyname.rb +0 -30
  277. data/doc/ex/rvg_clippath.rb +0 -14
  278. data/doc/ex/rvg_linecap.rb +0 -43
  279. data/doc/ex/rvg_linejoin.rb +0 -41
  280. data/doc/ex/rvg_opacity.rb +0 -19
  281. data/doc/ex/rvg_pattern.rb +0 -26
  282. data/doc/ex/rvg_stroke_dasharray.rb +0 -12
  283. data/doc/ex/segment.rb +0 -11
  284. data/doc/ex/sepiatone.rb +0 -8
  285. data/doc/ex/shade.rb +0 -11
  286. data/doc/ex/shadow.rb +0 -31
  287. data/doc/ex/shave.rb +0 -15
  288. data/doc/ex/shear.rb +0 -10
  289. data/doc/ex/sketch.rb +0 -18
  290. data/doc/ex/skewx.rb +0 -52
  291. data/doc/ex/skewy.rb +0 -47
  292. data/doc/ex/smile.rb +0 -125
  293. data/doc/ex/solarize.rb +0 -11
  294. data/doc/ex/sparse_color.rb +0 -55
  295. data/doc/ex/splice.rb +0 -9
  296. data/doc/ex/spread.rb +0 -11
  297. data/doc/ex/stegano.rb +0 -55
  298. data/doc/ex/stroke_dasharray.rb +0 -43
  299. data/doc/ex/stroke_fill.rb +0 -11
  300. data/doc/ex/stroke_linecap.rb +0 -44
  301. data/doc/ex/stroke_linejoin.rb +0 -48
  302. data/doc/ex/stroke_width.rb +0 -49
  303. data/doc/ex/swirl.rb +0 -17
  304. data/doc/ex/text.rb +0 -37
  305. data/doc/ex/text01.rb +0 -17
  306. data/doc/ex/text_align.rb +0 -36
  307. data/doc/ex/text_antialias.rb +0 -38
  308. data/doc/ex/text_styles.rb +0 -21
  309. data/doc/ex/text_undercolor.rb +0 -28
  310. data/doc/ex/texture_fill_to_border.rb +0 -34
  311. data/doc/ex/texture_floodfill.rb +0 -32
  312. data/doc/ex/texturefill.rb +0 -25
  313. data/doc/ex/threshold.rb +0 -13
  314. data/doc/ex/to_blob.rb +0 -14
  315. data/doc/ex/translate.rb +0 -39
  316. data/doc/ex/transparent.rb +0 -38
  317. data/doc/ex/transpose.rb +0 -9
  318. data/doc/ex/transverse.rb +0 -9
  319. data/doc/ex/tref01.rb +0 -25
  320. data/doc/ex/triangle01.rb +0 -16
  321. data/doc/ex/trim.rb +0 -24
  322. data/doc/ex/tspan01.rb +0 -18
  323. data/doc/ex/tspan02.rb +0 -19
  324. data/doc/ex/tspan03.rb +0 -21
  325. data/doc/ex/unsharp_mask.rb +0 -28
  326. data/doc/ex/viewex.rb +0 -35
  327. data/doc/ex/vignette.rb +0 -12
  328. data/doc/ex/watermark.rb +0 -28
  329. data/doc/ex/wave.rb +0 -9
  330. data/doc/ex/wet_floor.rb +0 -59
  331. data/doc/ex/writing_mode01.rb +0 -27
  332. data/doc/ex/writing_mode02.rb +0 -26
  333. data/doc/ilist.html +0 -2056
  334. data/doc/image1.html +0 -4680
  335. data/doc/image2.html +0 -3665
  336. data/doc/image3.html +0 -4522
  337. data/doc/imageattrs.html +0 -1638
  338. data/doc/imusage.html +0 -514
  339. data/doc/index.html +0 -416
  340. data/doc/info.html +0 -1499
  341. data/doc/magick.html +0 -565
  342. data/doc/optequiv.html +0 -2435
  343. data/doc/rvg.html +0 -975
  344. data/doc/rvgclip.html +0 -248
  345. data/doc/rvggroup.html +0 -305
  346. data/doc/rvgimage.html +0 -289
  347. data/doc/rvgpattern.html +0 -475
  348. data/doc/rvgshape.html +0 -406
  349. data/doc/rvgstyle.html +0 -270
  350. data/doc/rvgtext.html +0 -465
  351. data/doc/rvgtspan.html +0 -238
  352. data/doc/rvgtut.html +0 -530
  353. data/doc/rvguse.html +0 -145
  354. data/doc/rvgxform.html +0 -294
  355. data/doc/scripts/doc.js +0 -22
  356. data/doc/scripts/stripeTables.js +0 -23
  357. data/doc/struct.html +0 -1339
  358. data/doc/usage.html +0 -1621
  359. data/examples/constitute.rb +0 -7
  360. data/examples/crop_with_gravity.rb +0 -46
  361. data/examples/demo.rb +0 -324
  362. data/examples/describe.rb +0 -44
  363. data/examples/find_similar_region.rb +0 -34
  364. data/examples/histogram.rb +0 -325
  365. data/examples/identify.rb +0 -187
  366. data/examples/image_opacity.rb +0 -29
  367. data/examples/import_export.rb +0 -31
  368. data/examples/pattern_fill.rb +0 -38
  369. data/examples/rotating_text.rb +0 -45
  370. data/examples/spinner.rb +0 -50
  371. data/examples/thumbnail.rb +0 -65
  372. data/examples/vignette.rb +0 -79
  373. data/ext/RMagick/MANIFEST +0 -358
  374. data/lib/RMagick.rb +0 -1962
  375. data/metaconfig +0 -7
  376. data/post-clean.rb +0 -12
  377. data/post-install.rb +0 -50
  378. data/post-setup.rb +0 -254
  379. data/setup.rb +0 -1585
  380. data/uninstall.rb +0 -76
data/Rakefile ADDED
@@ -0,0 +1,190 @@
1
+ require 'simplecov'
2
+ require './lib/rmagick/version'
3
+ require 'fileutils'
4
+ require 'English'
5
+
6
+ desc "Open an irb session preloaded with this library"
7
+ task :console do
8
+ sh "irb -r ./ext/RMagick/extconf.rb -r ./lib/rmagick.rb"
9
+ end
10
+
11
+ task :config do
12
+ def version
13
+ Magick::VERSION
14
+ end
15
+
16
+ # e.g. 2.13.3 becomes RMagick_2-13-3
17
+ def version_tag
18
+ "RMagick_#{version.tr('.', '-')}"
19
+ end
20
+
21
+ # e.g. 2.13.3 becomes rmagick-2.13.3.gem
22
+ def gem_name
23
+ "rmagick-#{version}.gem"
24
+ end
25
+
26
+ def base
27
+ File.expand_path(__dir__)
28
+ end
29
+ end
30
+
31
+ desc 'abort when repo is not clean or has uncommited code'
32
+ task :assert_clean_repo do
33
+ sh('git diff --exit-code')
34
+ abort 'Git repo not clean' unless $CHILD_STATUS.success?
35
+ sh('git diff-index --quiet --cached HEAD')
36
+ abort 'Git repo not commited' unless $CHILD_STATUS.success?
37
+ end
38
+
39
+ desc 'build gem'
40
+ task build: [:config] do
41
+ sh 'gem build -V rmagick.gemspec'
42
+ if $CHILD_STATUS.success?
43
+ FileUtils.mkdir_p(File.join(base, 'pkg'))
44
+ FileUtils.mv(File.join(base, gem_name), 'pkg')
45
+ else
46
+ warn 'Could not build gem'
47
+ exit $CHILD_STATUS.exitstatus
48
+ end
49
+ end
50
+
51
+ task push_and_tag: [:build] do
52
+ sh "gem push #{File.join(base, 'pkg', gem_name)}"
53
+ if $CHILD_STATUS.success?
54
+ sh "git tag -a -m \"Version #{version}\" #{version_tag}"
55
+ STDOUT.puts "Tagged #{version_tag}."
56
+ sh 'git push'
57
+ sh 'git push --tags'
58
+ else
59
+ abort 'tagging aborted pushing gem failed'
60
+ end
61
+ end
62
+
63
+ desc 'Release'
64
+ task release: %i[assert_clean_repo push_and_tag]
65
+
66
+ desc 'Release and build the legacy way'
67
+ task legacy_release: ['legacy:README.html', 'legacy:extconf', 'legacy:doc', 'legacy:manifest', 'release']
68
+
69
+ namespace :legacy do
70
+ require 'find'
71
+
72
+ task :redcloth do
73
+ require 'redcloth'
74
+ end
75
+
76
+ README = 'README.html'
77
+ MANIFEST = 'ext/RMagick/MANIFEST'
78
+
79
+ # Change the version number placeholders in a file.
80
+ # Returns an array of lines from the file.
81
+ def reversion(name)
82
+ now = Time.new
83
+ now = now.strftime('%m/%d/%y')
84
+
85
+ lines = File.readlines name
86
+ lines.each do |line|
87
+ line.gsub!(/0\.0\.0/, Magick::VERSION)
88
+ line.gsub!(%r{YY/MM/DD}, now)
89
+ end
90
+ lines
91
+ end
92
+
93
+ # Rewrite a file containing embedded version number placeholders.
94
+ def reversion_file(name)
95
+ lines = reversion(name)
96
+ tmp_name = name + '_tmp'
97
+ mv name, tmp_name
98
+ begin
99
+ File.open(name, 'w') { |f| lines.each { |line| f.write line } }
100
+ rescue StandardError
101
+ mv tmp_name, name
102
+ ensure
103
+ rm tmp_name
104
+ end
105
+ end
106
+
107
+ desc 'Update version in extconf'
108
+ task :extconf do
109
+ reversion_file 'ext/RMagick/extconf.rb'
110
+ end
111
+
112
+ desc 'Build README.txt from README.textile using RedCloth'
113
+ task 'README.txt' => [:redcloth] do
114
+ reversion_file 'README.textile'
115
+ body = File.readlines 'README.textile'
116
+ body = RedCloth.new(body.join).to_html + "\n"
117
+ File.open('README.txt', 'w') { |f| f.write body }
118
+ end
119
+
120
+ desc 'Build README.html from README.txt'
121
+ task README => 'README.txt' do
122
+ puts "writing #{README}"
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
134
+ html.write File.readlines('README.txt')
135
+ html.write <<~END_HTML_TAIL
136
+ </body>
137
+ </html>
138
+ END_HTML_TAIL
139
+ end
140
+ end
141
+
142
+ desc 'Update versions in html files'
143
+ task :doc do
144
+ Dir.chdir('doc') do
145
+ FileList['*.html'].each { |d| reversion_file(d) }
146
+ end
147
+ end
148
+
149
+ # Remove files we don't want in the tarball.
150
+ # Ensure files are not executable. (ref: bug #10080)
151
+ desc "Remove files we don't want in the .gem; ensure files are not executable"
152
+ task :fix_files do
153
+ rm 'README.txt', verbose: true
154
+ chmod 0o644, FileList['doc/*.html', 'doc/ex/*.rb', 'doc/ex/images/*', 'examples/*.rb']
155
+ end
156
+
157
+ desc 'Build manifest'
158
+ task :manifest do
159
+ now = Time.new
160
+ now = now.strftime('%H:%M:%S %m/%d/%y')
161
+ puts "generating #{MANIFEST}"
162
+
163
+ File.open(MANIFEST, 'w') do |f|
164
+ f.puts "MANIFEST for #{Magick::VERSION} - #{now}\n\n"
165
+ Find.find('.') do |name|
166
+ next if File.directory? name
167
+
168
+ f.puts name[2..-1] # remove leading "./"
169
+ end
170
+ end
171
+ end
172
+ end
173
+
174
+ require 'rake/extensiontask'
175
+ require 'rspec/core/rake_task'
176
+ RSpec::Core::RakeTask.new(:spec)
177
+
178
+ Rake::ExtensionTask.new('RMagick2') do |ext|
179
+ ext.ext_dir = 'ext/RMagick'
180
+ end
181
+
182
+ task spec: :compile
183
+
184
+ if ENV['STYLE_CHECKS']
185
+ require 'rubocop/rake_task'
186
+ RuboCop::RakeTask.new
187
+ task default: %i[rubocop]
188
+ else
189
+ task default: %i[spec]
190
+ end
@@ -0,0 +1,69 @@
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_linux.sh'"
15
+ exit 1
16
+ fi
17
+
18
+ sudo apt-get clean
19
+ sudo apt-get update
20
+
21
+ # remove all existing imagemagick related packages
22
+ sudo apt-get autoremove -y imagemagick* libmagick* --purge
23
+
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
28
+
29
+ if [ ! -d /usr/include/freetype ]; then
30
+ # If `/usr/include/freetype` is not existed, ImageMagick 6.7 configuration fails about Freetype.
31
+ sudo ln -sf /usr/include/freetype2 /usr/include/freetype
32
+ fi
33
+
34
+ project_dir=$(pwd)
35
+ build_dir="${project_dir}/build-ImageMagick/ImageMagick-${IMAGEMAGICK_VERSION}"
36
+ if [ -v CONFIGURE_OPTIONS ]; then
37
+ build_dir="${build_dir}-${CONFIGURE_OPTIONS}"
38
+ fi
39
+
40
+ build_imagemagick() {
41
+ mkdir -p build-ImageMagick
42
+
43
+ version=(${IMAGEMAGICK_VERSION//./ })
44
+ wget "https://imagemagick.org/download/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}"
48
+
49
+ options="--with-magick-plus-plus=no --disable-docs"
50
+ if [ -v CONFIGURE_OPTIONS ]; then
51
+ options="${CONFIGURE_OPTIONS} ${options}"
52
+ fi
53
+
54
+ cd "${build_dir}"
55
+ CC="ccache cc" CXX="ccache c++" ./configure --prefix=/usr "${options}"
56
+ make -j
57
+ }
58
+
59
+ if [ ! -d "${build_dir}" ]; then
60
+ build_imagemagick
61
+ fi
62
+
63
+ cd "${build_dir}"
64
+ sudo make install -j
65
+ cd "${project_dir}"
66
+
67
+ sudo ldconfig
68
+
69
+ set +ux
@@ -0,0 +1,57 @@
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 libxml2 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/libxml2 -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/download/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
@@ -0,0 +1,6 @@
1
+ # This file is added to the require_paths in rmagick.gemspec
2
+ # That should be removed as well when this file is removed
3
+
4
+ warn '[DEPRECATION] requiring "RMagick" is deprecated. Use "rmagick" instead'
5
+
6
+ require 'rmagick_internal'