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
@@ -25,6 +25,33 @@
25
25
  #include "ruby.h"
26
26
  #include "ruby/io.h"
27
27
 
28
+ #if defined(__MINGW32__)
29
+ // Ruby defines wrong format specifiers for MinGW. So this defines original macro in here.
30
+ #if SIZEOF_SIZE_T == SIZEOF_LONG
31
+ #define RMIuSIZE "lu"
32
+ #define RMIdSIZE "ld"
33
+ #define RMIsVALUE "li\v"
34
+ #elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
35
+ #define RMIuSIZE "I64u"
36
+ #define RMIdSIZE "I64d"
37
+ #define RMIsVALUE "I64i\v"
38
+ #endif
39
+ #else
40
+ // Use constants defined in Ruby
41
+ #define RMIuSIZE PRIuSIZE
42
+ #define RMIdSIZE PRIdSIZE
43
+ #define RMIsVALUE PRIsVALUE
44
+ #endif
45
+
46
+ #if defined(__GNUC__)
47
+ #pragma GCC diagnostic push
48
+ #pragma GCC diagnostic ignored "-Wdeclaration-after-statement"
49
+ #pragma GCC diagnostic ignored "-Wunknown-pragmas"
50
+
51
+ #if __GNUC__ > 6
52
+ #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
53
+ #endif
54
+ #endif
28
55
 
29
56
  // Undef Ruby's versions of these symbols
30
57
  #undef PACKAGE_VERSION
@@ -34,25 +61,31 @@
34
61
  #undef PACKAGE_TARNAME
35
62
  #undef WORDS_BIGENDIAN
36
63
 
37
- #include "magick/MagickCore.h"
38
- #include "magick/magick-config.h"
64
+ #include "extconf.h"
65
+
66
+ #if defined(IMAGEMAGICK_7)
67
+ #include "MagickCore/MagickCore.h"
68
+ #include "MagickCore/magick-config.h"
69
+ #else
70
+ #include "magick/MagickCore.h"
71
+ #include "magick/magick-config.h"
72
+ #endif
39
73
 
40
74
  // Undef ImageMagick's versions of these symbols
41
75
  #undef PACKAGE_STRING
42
76
 
43
77
 
44
- #include "extconf.h"
45
-
46
-
47
78
  //! For quoting preprocessor symbols
48
79
  #define Q2(q) #q
49
80
  //! For quoting preprocessor symbols
50
81
  #define Q(q) Q2(q)
51
82
 
52
83
  #ifdef __GNUC__
53
- #define ATTRIBUTE_UNUSED __attribute__((unused))
84
+ #define ATTRIBUTE_UNUSED __attribute__((unused))
85
+ #define ATTRIBUTE_NORETURN __attribute__((__noreturn__))
54
86
  #else
55
87
  #define ATTRIBUTE_UNUSED
88
+ #define ATTRIBUTE_NORETURN
56
89
  #endif
57
90
 
58
91
  //! Trace new image creation in bang methods
@@ -86,11 +119,11 @@
86
119
  #define PIXEL_INTENSITY(q) ((Quantum)(0.299*(q)->red + 0.587*(q)->green + 0.114*(q)->blue + 0.5))
87
120
 
88
121
  //! find maximum of longs
89
- #define LMAX(a,b) ((((long)(a))>((long)(b)))?((long)(a)):((long)(b)))
122
+ #define LMAX(a, b) ((((long)(a))>((long)(b)))?((long)(a)):((long)(b)))
90
123
  //! find maximum of floats
91
- #define FMAX(a,b) ((((double)(a))>((double)(b)))?((double)(a)):((double)(b)))
124
+ #define FMAX(a, b) ((((double)(a))>((double)(b)))?((double)(a)):((double)(b)))
92
125
  //! find minimum of floats
93
- #define FMIN(a,b) ((((double)(a))<=((double)(b)))?((double)(a)):((double)(b)))
126
+ #define FMIN(a, b) ((((double)(a))<=((double)(b)))?((double)(a)):((double)(b)))
94
127
 
95
128
  #define RMAGICK_PI 3.14159265358979 /**< pi */
96
129
 
@@ -107,24 +140,52 @@
107
140
  */
108
141
  #define OBJ_TO_MAGICK_STRING(f, obj) \
109
142
  if ((obj) != Qnil)\
110
- magick_clone_string(&f, RSTRING_PTR(obj));\
143
+ {\
144
+ VALUE str = rb_String(obj);\
145
+ magick_clone_string(&f, StringValueCStr(str));\
146
+ }\
111
147
  else\
112
148
  f = NULL;
113
149
 
114
150
 
115
151
  #define MagickLibSubversion MagickLibAddendum
116
152
 
117
-
118
153
  typedef ImageInfo Info; /**< Make type name match class name */
119
- typedef PixelPacket Pixel; /**< Make type name match class name */
120
- typedef MagickPixelPacket MagickPixel;
121
- typedef PixelPacket PixelColor;
122
- typedef AlphaChannelType AlphaChannelOption;
123
- typedef DistortImageMethod DistortMethod;
124
- typedef FilterTypes FilterType;
125
- typedef InterpolatePixelMethod PixelInterpolateMethod;
126
- typedef ImageLayerMethod LayerMethod;
127
- #define TransparentAlpha 0
154
+ #if defined(IMAGEMAGICK_7)
155
+ typedef struct _QuantumPixelPacket
156
+ {
157
+ Quantum
158
+ red,
159
+ green,
160
+ blue,
161
+ alpha,
162
+ black;
163
+ } QuantumPixelPacket;
164
+
165
+ typedef QuantumPixelPacket Pixel;
166
+ typedef PixelInfo MagickPixel;
167
+ typedef PixelInfo PixelColor;
168
+ #else
169
+ typedef struct _RMagickPixelPacket
170
+ {
171
+ Quantum
172
+ red,
173
+ green,
174
+ blue,
175
+ opacity,
176
+ black;
177
+ } RMagickPixelPacket;
178
+ typedef RMagickPixelPacket Pixel;
179
+ typedef MagickPixelPacket MagickPixel;
180
+ typedef PixelPacket PixelColor;
181
+ typedef AlphaChannelType AlphaChannelOption;
182
+ typedef DistortImageMethod DistortMethod;
183
+ typedef FilterTypes FilterType;
184
+ typedef InterpolatePixelMethod PixelInterpolateMethod;
185
+ typedef ImageLayerMethod LayerMethod;
186
+ #define TransparentAlpha 0
187
+ #define IMAGEMAGICK_6 1
188
+ #endif
128
189
 
129
190
  //! Montage
130
191
  typedef struct
@@ -234,6 +295,7 @@ typedef enum _QuantumExpressionOperator
234
295
  PoissonNoiseQuantumOperator, /**< poisson noise */
235
296
  UniformNoiseQuantumOperator, /**< uniform noise */
236
297
  CosineQuantumOperator, /**< cosine */
298
+ SetQuantumOperator, /**< set */
237
299
  SineQuantumOperator, /**< sine */
238
300
  AddModulusQuantumOperator, /**< add modulus */
239
301
  MeanQuantumOperator, /**< mean */
@@ -340,100 +402,72 @@ EXTERN ID rm_ID_changed; /**< "changed" */
340
402
  EXTERN ID rm_ID_cur_image; /**< "cur_image" */
341
403
  EXTERN ID rm_ID_dup; /**< "dup" */
342
404
  EXTERN ID rm_ID_fill; /**< "fill" */
343
- EXTERN ID rm_ID_flag; /**< "flag" */
344
- EXTERN ID rm_ID_from_s; /**< "from_s" */
345
405
  EXTERN ID rm_ID_Geometry; /**< "Geometry" */
346
- EXTERN ID rm_ID_GeometryValue; /**< "GeometryValue" */
347
- EXTERN ID rm_ID_has_key_q; /**< "has_key?" */
348
406
  EXTERN ID rm_ID_height; /**< "height" */
349
407
  EXTERN ID rm_ID_initialize_copy; /**< "initialize_copy" */
350
- EXTERN ID rm_ID_length; /**< "length" */
351
408
  EXTERN ID rm_ID_notify_observers; /**< "notify_observers" */
352
409
  EXTERN ID rm_ID_new; /**< "new" */
353
410
  EXTERN ID rm_ID_push; /**< "push" */
354
- EXTERN ID rm_ID_spaceship; /**< "<=>" */
355
- EXTERN ID rm_ID_to_i; /**< "to_i" */
356
- EXTERN ID rm_ID_to_s; /**< "to_s" */
357
411
  EXTERN ID rm_ID_values; /**< "values" */
358
412
  EXTERN ID rm_ID_width; /**< "width" */
359
- EXTERN ID rm_ID_x; /**< "x" */
360
- EXTERN ID rm_ID_y; /**< "y" */
413
+
414
+ EXTERN unsigned long long rm_main_thread_id;
361
415
 
362
416
  #if !defined(min)
363
- #define min(a,b) ((a)<(b)?(a):(b)) /**< min of two values */
417
+ #define min(a, b) ((a)<(b)?(a):(b)) /**< min of two values */
364
418
  #endif
365
419
  #if !defined(max)
366
- #define max(a,b) ((a)>(b)?(a):(b)) /**< max of two values */
420
+ #define max(a, b) ((a)>(b)?(a):(b)) /**< max of two values */
367
421
  #endif
368
422
 
369
423
  /**
370
424
  Handle warnings & errors
371
425
  */
372
426
  //! Handle warnings & errors
373
- #define CHECK_EXCEPTION() rm_check_exception(exception, NULL, RetainOnError);
427
+ #define CHECK_EXCEPTION() rm_check_exception(exception, NULL, RetainOnError)
374
428
 
375
429
 
376
- /*
377
- Call rb_define_method for an attribute accessor method
378
- */
379
- //! attribute reader
380
- #define DCL_ATTR_READER(class, attr) \
381
- rb_define_method(Class_##class, #attr, class##_##attr, 0);
382
- //! attribute writer
383
- #define DCL_ATTR_WRITER(class, attr) \
384
- rb_define_method(Class_##class, #attr "=", class##_##attr##_eq, 1);
385
- //! attribute accessor
386
- #define DCL_ATTR_ACCESSOR(class, attr) \
387
- DCL_ATTR_READER(class, attr) \
388
- DCL_ATTR_WRITER(class, attr)
389
- //! Borrow another class' attribute writer definition
390
- #define SHARE_ATTR_WRITER(to, from, attr) \
391
- rb_define_method(Class_##to, #attr "=", from##_##attr##_eq, 1);
392
-
393
430
  /*
394
431
  Define simple attribute accessor methods (boolean, int, string, and double types)
395
432
  */
396
- #define C_bool_to_R_bool(attr) (attr) ? Qtrue : Qfalse /**< C boolean -> Ruby boolean */
397
- #define R_bool_to_C_bool(attr) RTEST(attr) /**< C boolean <- Ruby boolean */
433
+ #define C_boolean_to_R_boolean(attr) (attr) ? Qtrue : Qfalse /**< C boolean -> Ruby boolean */
434
+ #define R_boolean_to_C_boolean(attr) RTEST(attr) /**< C boolean <- Ruby boolean */
398
435
  #define C_int_to_R_int(attr) INT2FIX(attr) /**< C int -> Ruby int */
399
436
  #define R_int_to_C_int(attr) NUM2INT(attr) /**< C int <- Ruby int */
400
- #define C_long_to_R_long(attr) INT2NUM(attr) /**< C long -> Ruby long */
437
+ #define C_long_to_R_long(attr) LONG2NUM(attr) /**< C long -> Ruby long */
401
438
  #define R_long_to_C_long(attr) NUM2LONG(attr) /**< C long <- Ruby long */
402
- #define C_ulong_to_R_ulong(attr) UINT2NUM(attr) /**< C unsigned long -> Ruby unsigned long */
439
+ #define C_ulong_to_R_ulong(attr) ULONG2NUM(attr) /**< C unsigned long -> Ruby unsigned long */
403
440
  #define R_ulong_to_C_ulong(attr) NUM2ULONG(attr) /**< C unsigned long <- Ruby unsigned long */
404
441
  #define C_str_to_R_str(attr) attr ? rb_str_new2(attr) : Qnil /**< C string -> Ruby string */
405
442
  #define C_dbl_to_R_dbl(attr) rb_float_new(attr) /**< C double -> Ruby double */
406
443
  #define R_dbl_to_C_dbl(attr) NUM2DBL(attr) /**< C double <- Ruby double */
407
444
 
408
445
  //! define attribute reader
409
- #define DEF_ATTR_READER(class, attr, type) \
410
- VALUE class##_##attr(VALUE self)\
446
+ #define IMPLEMENT_ATTR_READER(class, attr, type) \
411
447
  {\
412
448
  class *ptr;\
413
449
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
414
- (void) rm_check_destroyed(self); \
450
+ rm_check_destroyed(self); \
415
451
  }\
416
452
  Data_Get_Struct(self, class, ptr);\
417
453
  return C_##type##_to_R_##type(ptr->attr);\
418
454
  }
419
455
 
420
456
  //! define attribute reader when attribute name is different from the field name
421
- #define DEF_ATTR_READERF(class, attr, field, type) \
422
- VALUE class##_##attr(VALUE self)\
457
+ #define IMPLEMENT_ATTR_READERF(class, attr, field, type) \
423
458
  {\
424
459
  class *ptr;\
425
- (void) rm_check_destroyed(self); \
460
+ rm_check_destroyed(self); \
426
461
  Data_Get_Struct(self, class, ptr);\
427
462
  return C_##type##_to_R_##type(ptr->field);\
428
463
  }
429
464
 
430
465
  //! define attribute writer
431
- #define DEF_ATTR_WRITER(class, attr, type) \
432
- VALUE class##_##attr##_eq(VALUE self, VALUE val)\
466
+ #define IMPLEMENT_ATTR_WRITER(class, attr, type) \
433
467
  {\
434
468
  class *ptr;\
435
469
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
436
- (void) rm_check_destroyed(self); \
470
+ rm_check_destroyed(self); \
437
471
  }\
438
472
  rb_check_frozen(self);\
439
473
  Data_Get_Struct(self, class, ptr);\
@@ -442,12 +476,11 @@ EXTERN ID rm_ID_y; /**< "y" */
442
476
  }
443
477
 
444
478
  //! define attribute writer when attribute name is different from the field name
445
- #define DEF_ATTR_WRITERF(class, attr, field, type) \
446
- VALUE class##_##attr##_eq(VALUE self, VALUE val)\
479
+ #define IMPLEMENT_ATTR_WRITERF(class, attr, field, type) \
447
480
  {\
448
481
  class *ptr;\
449
482
  if (rb_obj_is_kind_of(self, Class_Image) == Qtrue) {\
450
- (void) rm_check_destroyed(self); \
483
+ rm_check_destroyed(self); \
451
484
  }\
452
485
  rb_check_frozen(self);\
453
486
  Data_Get_Struct(self, class, ptr);\
@@ -455,15 +488,6 @@ EXTERN ID rm_ID_y; /**< "y" */
455
488
  return self;\
456
489
  }
457
490
 
458
- //! define attribute accessor
459
- #define DEF_ATTR_ACCESSOR(class, attr, type)\
460
- DEF_ATTR_READER(class, attr, type)\
461
- DEF_ATTR_WRITER(class, attr, type)
462
-
463
- //! define attribute accessor when attribute name is different from the field name
464
- #define DEF_ATTR_ACCESSORF(class, attr, field, type)\
465
- DEF_ATTR_READERF(class, attr, field, type)\
466
- DEF_ATTR_WRITERF(class, attr, field, type)
467
491
 
468
492
  /*
469
493
  * Declare attribute accessors
@@ -495,8 +519,8 @@ EXTERN ID rm_ID_y; /**< "y" */
495
519
  do {\
496
520
  MagickEnum *magick_enum;\
497
521
  if (CLASS_OF(value) != Class_##type)\
498
- rb_raise(rb_eTypeError, "wrong enumeration type - expected %s, got %s"\
499
- , rb_class2name(Class_##type),rb_class2name(CLASS_OF(value)));\
522
+ rb_raise(rb_eTypeError, "wrong enumeration type - expected %s, got %s", \
523
+ rb_class2name(Class_##type), rb_class2name(CLASS_OF(value)));\
500
524
  Data_Get_Struct(value, MagickEnum, magick_enum);\
501
525
  e = (type)(magick_enum->val);\
502
526
  } while(0)
@@ -607,8 +631,6 @@ extern VALUE ImageList_composite_layers(int, VALUE *, VALUE);
607
631
  extern VALUE ImageList_deconstruct(VALUE);
608
632
  extern VALUE ImageList_display(VALUE);
609
633
  extern VALUE ImageList_flatten_images(VALUE);
610
- extern VALUE ImageList_fx(int, VALUE *, VALUE);
611
- extern VALUE ImageList_map(int, VALUE *, VALUE);
612
634
  extern VALUE ImageList_montage(VALUE);
613
635
  extern VALUE ImageList_morph(VALUE, VALUE);
614
636
  extern VALUE ImageList_mosaic(VALUE);
@@ -645,7 +667,6 @@ ATTR_ACCESSOR(Info, font)
645
667
  ATTR_ACCESSOR(Info, format)
646
668
  ATTR_ACCESSOR(Info, fuzz)
647
669
  ATTR_ACCESSOR(Info, gravity)
648
- ATTR_ACCESSOR(Info, group)
649
670
  ATTR_ACCESSOR(Info, image_type)
650
671
  ATTR_ACCESSOR(Info, interlace)
651
672
  ATTR_ACCESSOR(Info, label)
@@ -689,9 +710,7 @@ extern GravityType rm_gravity_to_enum(const char *);
689
710
  extern VALUE KernelInfo_alloc(VALUE);
690
711
 
691
712
  extern VALUE KernelInfo_initialize(VALUE, VALUE);
692
- extern VALUE KernelInfo_zero_nans(VALUE);
693
713
  extern VALUE KernelInfo_unity_add(VALUE, VALUE);
694
- extern VALUE KernelInfo_show(VALUE);
695
714
  extern VALUE KernelInfo_scale(VALUE, VALUE, VALUE);
696
715
  extern VALUE KernelInfo_scale_geometry(VALUE, VALUE);
697
716
  extern VALUE KernelInfo_clone(VALUE);
@@ -700,14 +719,12 @@ extern VALUE KernelInfo_builtin(VALUE, VALUE, VALUE);
700
719
 
701
720
 
702
721
  // rmimage.c
703
- ATTR_WRITER(Image, alpha)
704
722
  ATTR_ACCESSOR(Image, background_color)
705
723
  ATTR_READER(Image, base_columns)
706
724
  ATTR_READER(Image, base_filename)
707
725
  ATTR_READER(Image, base_rows)
708
726
  ATTR_ACCESSOR(Image, bias)
709
727
  ATTR_ACCESSOR(Image, black_point_compensation)
710
- ATTR_ACCESSOR(Image, blur)
711
728
  ATTR_ACCESSOR(Image, border_color)
712
729
  ATTR_READER(Image, bounding_box)
713
730
  ATTR_ACCESSOR(Image, chromaticity)
@@ -737,8 +754,6 @@ ATTR_ACCESSOR(Image, image_type)
737
754
  ATTR_ACCESSOR(Image, interlace)
738
755
  ATTR_ACCESSOR(Image, iptc_profile)
739
756
  ATTR_ACCESSOR(Image, iterations)
740
- ATTR_WRITER(Image, mask)
741
- ATTR_ACCESSOR(Image, matte)
742
757
  ATTR_ACCESSOR(Image, matte_color)
743
758
  ATTR_READER(Image, mean_error_per_pixel)
744
759
  ATTR_READER(Image, mime_type)
@@ -748,7 +763,6 @@ ATTR_READER(Image, normalized_mean_error)
748
763
  ATTR_READER(Image, normalized_maximum_error)
749
764
  ATTR_READER(Image, number_colors)
750
765
  ATTR_ACCESSOR(Image, offset)
751
- ATTR_WRITER(Image, opacity)
752
766
  ATTR_ACCESSOR(Image, orientation)
753
767
  ATTR_ACCESSOR(Image, page)
754
768
  ATTR_ACCESSOR(Image, pixel_interpolation_method)
@@ -768,7 +782,7 @@ ATTR_ACCESSOR(Image, x_resolution)
768
782
  ATTR_ACCESSOR(Image, y_resolution)
769
783
 
770
784
  extern ChannelType extract_channels(int *, VALUE *);
771
- extern void raise_ChannelType_error(VALUE);
785
+ extern void raise_ChannelType_error(VALUE) ATTRIBUTE_NORETURN;
772
786
  extern void add_format_prefix(Info *, VALUE);
773
787
 
774
788
  extern VALUE Image_alloc(VALUE);
@@ -810,7 +824,11 @@ extern VALUE Image_compare_channel(int, VALUE *, VALUE);
810
824
  extern VALUE Image_channel_depth(int, VALUE *, VALUE);
811
825
  extern VALUE Image_channel_extrema(int, VALUE *, VALUE);
812
826
  extern VALUE Image_channel_mean(int, VALUE *, VALUE);
827
+ #if defined(HAVE_GETIMAGECHANNELENTROPY) || defined(IMAGEMAGICK_7)
813
828
  extern VALUE Image_channel_entropy(int, VALUE *, VALUE);
829
+ #else
830
+ extern VALUE Image_channel_entropy(int, VALUE *, VALUE) ATTRIBUTE_NORETURN;
831
+ #endif
814
832
  extern VALUE Image_charcoal(int, VALUE *, VALUE);
815
833
  extern VALUE Image_chop(VALUE, VALUE, VALUE, VALUE, VALUE);
816
834
  extern VALUE Image_clone(VALUE);
@@ -819,7 +837,6 @@ extern VALUE Image_color_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
819
837
  extern VALUE Image_color_histogram(VALUE);
820
838
  extern VALUE Image_colorize(int, VALUE *, VALUE);
821
839
  extern VALUE Image_colormap(int, VALUE *, VALUE);
822
- extern VALUE Image_combine(int, VALUE *, VALUE);
823
840
  extern VALUE Image_composite(int, VALUE *, VALUE);
824
841
  extern VALUE Image_composite_affine(VALUE, VALUE, VALUE);
825
842
  extern VALUE Image_composite_bang(int, VALUE *, VALUE);
@@ -899,7 +916,6 @@ extern VALUE Image_liquid_rescale(int, VALUE *, VALUE);
899
916
  extern VALUE Image__load(VALUE, VALUE);
900
917
  extern VALUE Image_magnify(VALUE);
901
918
  extern VALUE Image_magnify_bang(VALUE);
902
- extern VALUE Image_map(int, VALUE *, VALUE);
903
919
  extern VALUE Image_marshal_dump(VALUE);
904
920
  extern VALUE Image_marshal_load(VALUE, VALUE);
905
921
  extern VALUE Image_mask(int, VALUE *, VALUE);
@@ -975,7 +991,6 @@ extern VALUE Image_stereo(VALUE, VALUE);
975
991
  extern VALUE Image_store_pixels(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
976
992
  extern VALUE Image_strip_bang(VALUE);
977
993
  extern VALUE Image_swirl(VALUE, VALUE);
978
- extern VALUE Image_sync_profiles(VALUE);
979
994
  extern VALUE Image_texture_flood_fill(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE);
980
995
  extern VALUE Image_threshold(VALUE, VALUE);
981
996
  extern VALUE Image_thumbnail(int, VALUE *, VALUE);
@@ -1024,7 +1039,6 @@ ATTR_ACCESSOR(Pixel, red)
1024
1039
  ATTR_ACCESSOR(Pixel, green)
1025
1040
  ATTR_ACCESSOR(Pixel, blue)
1026
1041
  ATTR_ACCESSOR(Pixel, alpha)
1027
- ATTR_ACCESSOR(Pixel, opacity)
1028
1042
  ATTR_ACCESSOR(Pixel, cyan)
1029
1043
  ATTR_ACCESSOR(Pixel, magenta)
1030
1044
  ATTR_ACCESSOR(Pixel, yellow)
@@ -1037,7 +1051,6 @@ extern VALUE Pixel_dup(VALUE);
1037
1051
  extern VALUE Pixel_eql_q(VALUE, VALUE);
1038
1052
  extern VALUE Pixel_fcmp(int, VALUE *, VALUE);
1039
1053
  extern VALUE Pixel_from_color(VALUE, VALUE);
1040
- extern VALUE Pixel_from_HSL(VALUE, VALUE);
1041
1054
  extern VALUE Pixel_from_hsla(int, VALUE *, VALUE);
1042
1055
  extern VALUE Pixel_hash(VALUE);
1043
1056
  extern VALUE Pixel_initialize(int, VALUE *, VALUE);
@@ -1047,7 +1060,6 @@ extern VALUE Pixel_marshal_dump(VALUE);
1047
1060
  extern VALUE Pixel_marshal_load(VALUE, VALUE);
1048
1061
  extern VALUE Pixel_spaceship(VALUE, VALUE);
1049
1062
  extern VALUE Pixel_to_color(int, VALUE *, VALUE);
1050
- extern VALUE Pixel_to_HSL(VALUE);
1051
1063
  extern VALUE Pixel_to_hsla(VALUE);
1052
1064
  extern VALUE Pixel_to_s(VALUE);
1053
1065
 
@@ -1093,6 +1105,7 @@ extern VALUE ChromaticityInfo_to_s(VALUE);
1093
1105
  extern VALUE ChromaticityInfo_new(ChromaticityInfo *);
1094
1106
  extern void Color_to_PixelColor(PixelColor *, VALUE);
1095
1107
  extern void Color_to_MagickPixel(Image *, MagickPixel *, VALUE);
1108
+ extern void Color_to_Pixel(Pixel *, VALUE);
1096
1109
  extern VALUE Color_to_s(VALUE);
1097
1110
  extern VALUE Import_ColorInfo(const ColorInfo *);
1098
1111
  extern VALUE Font_to_s(VALUE);
@@ -1127,7 +1140,6 @@ extern VALUE ImageMagickError_initialize(int, VALUE *, VALUE);
1127
1140
  extern void *magick_malloc(const size_t);
1128
1141
  extern void *magick_safe_malloc(const size_t, const size_t);
1129
1142
  extern void magick_free(void *);
1130
- extern void *magick_realloc(void *, const size_t);
1131
1143
  extern void *magick_safe_realloc(void *, const size_t, const size_t);
1132
1144
  extern void magick_clone_string(char **, const char *);
1133
1145
  extern Image *rm_acquire_image(ImageInfo *);
@@ -1136,32 +1148,34 @@ extern VALUE rm_pixelcolor_to_color_name(Image *, PixelColor *);
1136
1148
  extern VALUE rm_pixelcolor_to_color_name_info(Info *, PixelColor *);
1137
1149
  extern void rm_init_magickpixel(const Image *, MagickPixel *);
1138
1150
  extern void rm_set_magickpixel(MagickPixel *, const char *);
1139
- extern VALUE rm_no_freeze(VALUE);
1151
+ extern VALUE rm_no_freeze(VALUE) ATTRIBUTE_NORETURN;
1140
1152
  extern int rm_strcasecmp(const char *, const char *);
1141
1153
  extern int rm_strncasecmp(const char *, const char *, size_t);
1154
+ extern size_t rm_strnlen_s(const char *, size_t);
1142
1155
  extern void rm_check_ary_len(VALUE, long);
1143
1156
  extern VALUE rm_check_ary_type(VALUE ary);
1144
1157
  extern Image *rm_check_destroyed(VALUE);
1145
1158
  extern Image *rm_check_frozen(VALUE);
1146
- extern VALUE rm_to_s(VALUE);
1147
1159
  extern char *rm_str2cstr(VALUE, long *);
1148
1160
  extern int rm_check_num2dbl(VALUE);
1149
1161
  extern double rm_fuzz_to_dbl(VALUE);
1150
1162
  extern Quantum rm_app2quantum(VALUE);
1151
- extern double rm_percentage(VALUE,double);
1163
+ extern double rm_percentage(VALUE, double);
1152
1164
  extern double rm_str_to_pct(VALUE);
1153
1165
  extern VALUE rm_define_enum_type(const char *);
1154
- extern void rm_write_temp_image(Image *, char *);
1166
+ extern void rm_write_temp_image(Image *, char *, size_t);
1155
1167
  extern void rm_delete_temp_image(char *);
1156
- extern void rm_not_implemented(void);
1168
+ extern void rm_not_implemented(void) ATTRIBUTE_NORETURN;
1157
1169
  extern void rm_attr_write(VALUE, VALUE);
1158
- extern void rm_get_geometry(VALUE, long *, long *, unsigned long *, unsigned long *, int *);
1159
1170
  extern const char *rm_get_property(const Image *, const char *);
1160
1171
  extern MagickBooleanType rm_set_property(Image *, const char *, const char *);
1161
1172
  extern void rm_set_user_artifact(Image *, Info *);
1162
1173
  extern void rm_sync_image_options(Image *, Info *);
1163
1174
  extern void rm_split(Image *);
1164
1175
  extern void rm_magick_error(const char *);
1176
+ #if defined(IMAGEMAGICK_7)
1177
+ extern void rm_set_pixelinfo_alpha(PixelInfo *, const MagickRealType);
1178
+ #endif
1165
1179
 
1166
1180
  //! whether to retain on errors
1167
1181
  typedef enum
@@ -1176,7 +1190,6 @@ typedef enum
1176
1190
  DestroyExceptionRetention
1177
1191
  } ExceptionRetention;
1178
1192
 
1179
- extern void rm_check_image_exception(Image *, ErrorRetention);
1180
1193
  extern void rm_check_exception(ExceptionInfo *, Image *, ErrorRetention);
1181
1194
  extern void rm_ensure_result(Image *);
1182
1195
  extern Image *rm_clone_image(Image *);
@@ -1184,10 +1197,15 @@ extern MagickBooleanType rm_progress_monitor(const char *, const MagickOffsetTyp
1184
1197
  extern VALUE rm_exif_by_entry(Image *);
1185
1198
  extern VALUE rm_exif_by_number(Image *);
1186
1199
  extern void rm_get_optional_arguments(VALUE);
1187
- extern void rm_fatal_error_handler(const ExceptionType, const char *, const char *);
1200
+ extern void rm_fatal_error_handler(const ExceptionType, const char *, const char *) ATTRIBUTE_NORETURN;
1188
1201
  extern void rm_error_handler(const ExceptionType, const char *, const char *);
1189
1202
  extern void rm_warning_handler(const ExceptionType, const char *, const char *);
1190
1203
  extern MagickBooleanType rm_should_raise_exception(ExceptionInfo *, const ExceptionRetention);
1191
1204
  extern void rm_raise_exception(ExceptionInfo *);
1205
+ extern unsigned long long rm_current_thread_id();
1206
+ #if defined(IMAGEMAGICK_6)
1207
+ extern void rm_check_image_exception(Image *, ErrorRetention);
1208
+ #endif
1209
+
1192
1210
  #endif
1193
1211