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/ext/RMagick/rmfill.c CHANGED
@@ -44,10 +44,7 @@ static void free_Fill(void *fill)
44
44
  /**
45
45
  * Create new GradientFill object.
46
46
  *
47
- * No Ruby usage (internal function)
48
- *
49
- * @param class the Ruby class to use
50
- * @return a new GradientFill object
47
+ * @return [Magick::GradientFill] a new GradientFill object
51
48
  */
52
49
  VALUE
53
50
  GradientFill_alloc(VALUE class)
@@ -59,19 +56,15 @@ GradientFill_alloc(VALUE class)
59
56
 
60
57
 
61
58
  /**
62
- * Store the vector points and the start and stop colors.
63
- *
64
- * Ruby usage:
65
- * - @verbatim GradientFill#initialize(x1,y1,x2,y2,start_color,stop_color) @endverbatim
66
- *
67
- * @param self this object
68
- * @param x1 x position of first point
69
- * @param y1 y position of first point
70
- * @param x2 x position of second point
71
- * @param y2 y position of second point
72
- * @param start_color the start color
73
- * @param stop_color the stop color
74
- * @return self
59
+ * Initialize GradientFill object.
60
+ *
61
+ * @param x1 [Float] x position of first point
62
+ * @param y1 [Float] y position of first point
63
+ * @param x2 [Float] x position of second point
64
+ * @param y2 [Float] y position of second point
65
+ * @param start_color [Magick::Pixel, String] the start color
66
+ * @param stop_color [Magick::Pixel, String] the stop color
67
+ * @return [Magick::GradientFill] self
75
68
  */
76
69
  VALUE
77
70
  GradientFill_initialize(
@@ -132,25 +125,39 @@ point_fill(
132
125
 
133
126
  for (y = 0; y < (ssize_t) image->rows; y++)
134
127
  {
128
+ #if defined(IMAGEMAGICK_7)
129
+ Quantum *row_pixels;
130
+ #else
135
131
  PixelPacket *row_pixels;
132
+ #endif
136
133
 
137
134
  row_pixels = QueueAuthenticPixels(image, 0, y, image->columns, 1, exception);
138
- CHECK_EXCEPTION()
135
+ CHECK_EXCEPTION();
139
136
 
140
137
  for (x = 0; x < (ssize_t) image->columns; x++)
141
138
  {
142
139
  distance = sqrt((double)((x-x0)*(x-x0)+(y-y0)*(y-y0)));
140
+
141
+ #if defined(IMAGEMAGICK_7)
142
+ SetPixelRed(image, ROUND_TO_QUANTUM(start_color->red + (distance * red_step)), row_pixels);
143
+ SetPixelGreen(image, ROUND_TO_QUANTUM(start_color->green + (distance * green_step)), row_pixels);
144
+ SetPixelBlue(image, ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step)), row_pixels);
145
+ SetPixelAlpha(image, OpaqueAlpha, row_pixels);
146
+
147
+ row_pixels += GetPixelChannels(image);
148
+ #else
143
149
  row_pixels[x].red = ROUND_TO_QUANTUM(start_color->red + (distance * red_step));
144
150
  row_pixels[x].green = ROUND_TO_QUANTUM(start_color->green + (distance * green_step));
145
151
  row_pixels[x].blue = ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step));
146
152
  row_pixels[x].opacity = OpaqueOpacity;
153
+ #endif
147
154
  }
148
155
 
149
156
  SyncAuthenticPixels(image, exception);
150
- CHECK_EXCEPTION()
157
+ CHECK_EXCEPTION();
151
158
  }
152
159
 
153
- (void) DestroyExceptionInfo(exception);
160
+ DestroyExceptionInfo(exception);
154
161
  }
155
162
 
156
163
  /**
@@ -173,9 +180,11 @@ vertical_fill(
173
180
  {
174
181
  double steps;
175
182
  ssize_t x, y;
176
- PixelPacket *master;
177
183
  MagickRealType red_step, green_step, blue_step;
178
184
  ExceptionInfo *exception;
185
+ #if defined(IMAGEMAGICK_6)
186
+ PixelPacket *master;
187
+ #endif
179
188
 
180
189
  exception = AcquireExceptionInfo();
181
190
 
@@ -193,6 +202,32 @@ vertical_fill(
193
202
  green_step = ((MagickRealType)stop_color->green - (MagickRealType)start_color->green) / steps;
194
203
  blue_step = ((MagickRealType)stop_color->blue - (MagickRealType)start_color->blue) / steps;
195
204
 
205
+
206
+ #if defined(IMAGEMAGICK_7)
207
+ for (y = 0; y < (ssize_t) image->rows; y++)
208
+ {
209
+ Quantum *row_pixels;
210
+
211
+ row_pixels = QueueAuthenticPixels(image, 0, y, image->columns, 1, exception);
212
+ CHECK_EXCEPTION();
213
+
214
+ for (x = 0; x < (ssize_t) image->columns; x++)
215
+ {
216
+ double distance = fabs(x1 - x);
217
+ SetPixelRed(image, ROUND_TO_QUANTUM(start_color->red + (distance * red_step)), row_pixels);
218
+ SetPixelGreen(image, ROUND_TO_QUANTUM(start_color->green + (distance * green_step)), row_pixels);
219
+ SetPixelBlue(image, ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step)), row_pixels);
220
+ SetPixelAlpha(image, OpaqueAlpha, row_pixels);
221
+
222
+ row_pixels += GetPixelChannels(image);
223
+ }
224
+
225
+ SyncAuthenticPixels(image, exception);
226
+ CHECK_EXCEPTION();
227
+ }
228
+
229
+ DestroyExceptionInfo(exception);
230
+ #else
196
231
  // All the rows are the same. Make a "master row" and simply copy
197
232
  // it to each actual row.
198
233
  master = ALLOC_N(PixelPacket, image->columns);
@@ -228,9 +263,10 @@ vertical_fill(
228
263
  }
229
264
  }
230
265
 
231
- (void) DestroyExceptionInfo(exception);
266
+ DestroyExceptionInfo(exception);
232
267
 
233
268
  xfree((void *) master);
269
+ #endif
234
270
  }
235
271
 
236
272
  /**
@@ -252,9 +288,11 @@ horizontal_fill(
252
288
  {
253
289
  double steps;
254
290
  ssize_t x, y;
255
- PixelPacket *master;
256
291
  MagickRealType red_step, green_step, blue_step;
257
292
  ExceptionInfo *exception;
293
+ #if defined(IMAGEMAGICK_6)
294
+ PixelPacket *master;
295
+ #endif
258
296
 
259
297
  exception = AcquireExceptionInfo();
260
298
 
@@ -271,6 +309,31 @@ horizontal_fill(
271
309
  green_step = ((MagickRealType)stop_color->green - (MagickRealType)start_color->green) / steps;
272
310
  blue_step = ((MagickRealType)stop_color->blue - (MagickRealType)start_color->blue) / steps;
273
311
 
312
+ #if defined(IMAGEMAGICK_7)
313
+ for (y = 0; y < (ssize_t) image->rows; y++)
314
+ {
315
+ Quantum *row_pixels;
316
+
317
+ row_pixels = QueueAuthenticPixels(image, 0, y, image->columns, 1, exception);
318
+ CHECK_EXCEPTION();
319
+
320
+ double distance = fabs(y1 - y);
321
+ for (x = 0; x < (ssize_t) image->columns; x++)
322
+ {
323
+ SetPixelRed(image, ROUND_TO_QUANTUM(start_color->red + (distance * red_step)), row_pixels);
324
+ SetPixelGreen(image, ROUND_TO_QUANTUM(start_color->green + (distance * green_step)), row_pixels);
325
+ SetPixelBlue(image, ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step)), row_pixels);
326
+ SetPixelAlpha(image, OpaqueAlpha, row_pixels);
327
+
328
+ row_pixels += GetPixelChannels(image);
329
+ }
330
+
331
+ SyncAuthenticPixels(image, exception);
332
+ CHECK_EXCEPTION();
333
+ }
334
+
335
+ DestroyExceptionInfo(exception);
336
+ #else
274
337
  // All the columns are the same, so make a master column and copy it to
275
338
  // each of the "real" columns.
276
339
  master = ALLOC_N(PixelPacket, image->rows);
@@ -305,9 +368,10 @@ horizontal_fill(
305
368
  }
306
369
  }
307
370
 
308
- (void) DestroyExceptionInfo(exception);
371
+ DestroyExceptionInfo(exception);
309
372
 
310
373
  xfree((void *) master);
374
+ #endif
311
375
  }
312
376
 
313
377
  /**
@@ -354,7 +418,7 @@ v_diagonal_fill(
354
418
 
355
419
  if (d1 < 0 && d2 < 0)
356
420
  {
357
- steps += FMAX(fabs(d1),fabs(d2));
421
+ steps += FMAX(fabs(d1), fabs(d2));
358
422
  }
359
423
  else if (d1 > (double)image->rows && d2 > (double)image->rows)
360
424
  {
@@ -380,25 +444,38 @@ v_diagonal_fill(
380
444
 
381
445
  for (y = 0; y < (ssize_t) image->rows; y++)
382
446
  {
447
+ #if defined(IMAGEMAGICK_7)
448
+ Quantum *row_pixels;
449
+ #else
383
450
  PixelPacket *row_pixels;
451
+ #endif
384
452
 
385
453
  row_pixels = QueueAuthenticPixels(image, 0, y, image->columns, 1, exception);
386
- CHECK_EXCEPTION()
454
+ CHECK_EXCEPTION();
387
455
 
388
456
  for (x = 0; x < (ssize_t) image->columns; x++)
389
457
  {
390
458
  double distance = (double) abs((int)(y-(m * x + b)));
459
+ #if defined(IMAGEMAGICK_7)
460
+ SetPixelRed(image, ROUND_TO_QUANTUM(start_color->red + (distance * red_step)), row_pixels);
461
+ SetPixelGreen(image, ROUND_TO_QUANTUM(start_color->green + (distance * green_step)), row_pixels);
462
+ SetPixelBlue(image, ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step)), row_pixels);
463
+ SetPixelAlpha(image, OpaqueAlpha, row_pixels);
464
+
465
+ row_pixels += GetPixelChannels(image);
466
+ #else
391
467
  row_pixels[x].red = ROUND_TO_QUANTUM(start_color->red + (distance * red_step));
392
468
  row_pixels[x].green = ROUND_TO_QUANTUM(start_color->green + (distance * green_step));
393
469
  row_pixels[x].blue = ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step));
394
470
  row_pixels[x].opacity = OpaqueOpacity;
471
+ #endif
395
472
  }
396
473
 
397
474
  SyncAuthenticPixels(image, exception);
398
- CHECK_EXCEPTION()
475
+ CHECK_EXCEPTION();
399
476
  }
400
477
 
401
- (void) DestroyExceptionInfo(exception);
478
+ DestroyExceptionInfo(exception);
402
479
  }
403
480
 
404
481
  /**
@@ -447,11 +524,11 @@ h_diagonal_fill(
447
524
  // the number of steps.
448
525
  if (d1 < 0 && d2 < 0)
449
526
  {
450
- steps += FMAX(fabs(d1),fabs(d2));
527
+ steps += FMAX(fabs(d1), fabs(d2));
451
528
  }
452
529
  else if (d1 > (double)image->columns && d2 > (double)image->columns)
453
530
  {
454
- steps += FMAX(abs((int)(image->columns-d1)),abs((int)(image->columns-d2)));
531
+ steps += FMAX(abs((int)(image->columns-d1)), abs((int)(image->columns-d2)));
455
532
  }
456
533
 
457
534
  d1 = FMAX(d1, image->columns-d1);
@@ -473,37 +550,46 @@ h_diagonal_fill(
473
550
 
474
551
  for (y = 0; y < (ssize_t) image->rows; y++)
475
552
  {
553
+ #if defined(IMAGEMAGICK_7)
554
+ Quantum *row_pixels;
555
+ #else
476
556
  PixelPacket *row_pixels;
557
+ #endif
477
558
 
478
559
  row_pixels = QueueAuthenticPixels(image, 0, y, image->columns, 1, exception);
479
- CHECK_EXCEPTION()
560
+ CHECK_EXCEPTION();
480
561
 
481
562
  for (x = 0; x < (ssize_t) image->columns; x++)
482
563
  {
483
564
  double distance = (double) abs((int)(x-((y-b)/m)));
565
+ #if defined(IMAGEMAGICK_7)
566
+ SetPixelRed(image, ROUND_TO_QUANTUM(start_color->red + (distance * red_step)), row_pixels);
567
+ SetPixelGreen(image, ROUND_TO_QUANTUM(start_color->green + (distance * green_step)), row_pixels);
568
+ SetPixelBlue(image, ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step)), row_pixels);
569
+ SetPixelAlpha(image, OpaqueAlpha, row_pixels);
570
+
571
+ row_pixels += GetPixelChannels(image);
572
+ #else
484
573
  row_pixels[x].red = ROUND_TO_QUANTUM(start_color->red + (distance * red_step));
485
574
  row_pixels[x].green = ROUND_TO_QUANTUM(start_color->green + (distance * green_step));
486
575
  row_pixels[x].blue = ROUND_TO_QUANTUM(start_color->blue + (distance * blue_step));
487
576
  row_pixels[x].opacity = OpaqueOpacity;
577
+ #endif
488
578
  }
489
579
 
490
580
  SyncAuthenticPixels(image, exception);
491
- CHECK_EXCEPTION()
581
+ CHECK_EXCEPTION();
492
582
  }
493
583
 
494
- (void) DestroyExceptionInfo(exception);
584
+ DestroyExceptionInfo(exception);
495
585
  }
496
586
 
497
587
  /**
498
588
  * Call GradientFill with the start and stop colors specified when this fill
499
589
  * object was created.
500
590
  *
501
- * Ruby usage:
502
- * - @verbatim GradientFill#fill(image) @endverbatim
503
- *
504
- * @param self this object
505
- * @param image_obj the image
506
- * @return self
591
+ * @param image_obj [Magick::Image] the image to fill
592
+ * @return [Magick::GradientFill] self
507
593
  */
508
594
  VALUE
509
595
  GradientFill_fill(VALUE self, VALUE image_obj)
@@ -581,44 +667,31 @@ free_TextureFill(void *fill_obj)
581
667
  rm_TextureFill *fill = (rm_TextureFill *)fill_obj;
582
668
 
583
669
  // Do not trace destruction
584
- (void) DestroyImage(fill->texture);
670
+ if (fill->texture)
671
+ {
672
+ DestroyImage(fill->texture);
673
+ }
585
674
  xfree(fill);
586
675
  }
587
676
 
588
677
  /**
589
678
  * Create new TextureFill object.
590
679
  *
591
- * No Ruby usage (internal function)
592
- *
593
- * Notes:
594
- * - The texture is an Image or Image *object
595
- *
596
- * @param class the Ruby class to use
597
- * @return a new TextureFill object
680
+ * @return [Magick::TextureFill] a new TextureFill object
598
681
  */
599
682
  VALUE
600
683
  TextureFill_alloc(VALUE class)
601
684
  {
602
685
  rm_TextureFill *fill;
603
- return Data_Make_Struct(class
604
- , rm_TextureFill
605
- , NULL
606
- , free_TextureFill
607
- , fill);
686
+ return Data_Make_Struct(class, rm_TextureFill, NULL, free_TextureFill, fill);
608
687
  }
609
688
 
610
689
  /**
611
- * Store the texture image.
690
+ * Initialize TextureFill object.
612
691
  *
613
- * Ruby usage:
614
- * - @verbatim TextureFill#initialize(texture) @endverbatim
615
- *
616
- * Notes:
617
- * - The texture is an Image or Image *object
618
- *
619
- * @param self this object
620
- * @param texture_arg the texture
621
- * @return self
692
+ * @param texture_arg [Magick::Image, Magick::ImageList] Either an imagelist or an image. If an
693
+ * imagelist, uses the current image.
694
+ * @return [Magick::TextureFill] self
622
695
  */
623
696
  VALUE
624
697
  TextureFill_initialize(VALUE self, VALUE texture_arg)
@@ -633,7 +706,7 @@ TextureFill_initialize(VALUE self, VALUE texture_arg)
633
706
 
634
707
  // Bump the reference count on the texture image.
635
708
  texture = rm_check_destroyed(texture_image);
636
- (void) ReferenceImage(texture);
709
+ ReferenceImage(texture);
637
710
 
638
711
  fill->texture = texture;
639
712
 
@@ -646,24 +719,30 @@ TextureFill_initialize(VALUE self, VALUE texture_arg)
646
719
  * Call TextureFill with the texture specified when this fill object was
647
720
  * created.
648
721
  *
649
- * Ruby usage:
650
- * - @verbatim TextureFill#fill(image) @endverbatim
651
- *
652
- * @param self this object
653
- * @param image_obj the image
654
- * @return self
722
+ * @param image_obj [Magick::Image] the image to fill
723
+ * @return [Magick::TextureFill] self
655
724
  */
656
725
  VALUE
657
726
  TextureFill_fill(VALUE self, VALUE image_obj)
658
727
  {
659
728
  rm_TextureFill *fill;
660
729
  Image *image;
730
+ #if defined(IMAGEMAGICK_7)
731
+ ExceptionInfo *exception;
732
+ #endif
661
733
 
662
734
  image = rm_check_destroyed(image_obj);
663
735
  Data_Get_Struct(self, rm_TextureFill, fill);
664
736
 
665
- (void) TextureImage(image, fill->texture);
737
+ #if defined(IMAGEMAGICK_7)
738
+ exception = AcquireExceptionInfo();
739
+ TextureImage(image, fill->texture, exception);
740
+ CHECK_EXCEPTION();
741
+ DestroyExceptionInfo(exception);
742
+ #else
743
+ TextureImage(image, fill->texture);
666
744
  rm_check_image_exception(image, RetainOnError);
745
+ #endif
667
746
 
668
747
  return self;
669
748
  }