rmagick 4.1.0.rc2 → 4.2.1

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 (414) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +3 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +108 -0
  6. data/.gitignore +3 -1
  7. data/.rspec +1 -0
  8. data/.rubocop.yml +24 -0
  9. data/.rubocop_todo.yml +151 -297
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +96 -0
  12. data/CODE_OF_CONDUCT.md +122 -7
  13. data/CONTRIBUTING.md +14 -10
  14. data/README.md +324 -0
  15. data/Rakefile +16 -22
  16. data/before_install_linux.sh +22 -32
  17. data/before_install_osx.sh +57 -2
  18. data/ext/RMagick/extconf.rb +108 -95
  19. data/ext/RMagick/rmagick.c +77 -104
  20. data/ext/RMagick/rmagick.h +77 -70
  21. data/ext/RMagick/rmdraw.c +289 -446
  22. data/ext/RMagick/rmenum.c +96 -113
  23. data/ext/RMagick/rmfill.c +49 -77
  24. data/ext/RMagick/rmilist.c +144 -244
  25. data/ext/RMagick/rmimage.c +3407 -4166
  26. data/ext/RMagick/rminfo.c +540 -738
  27. data/ext/RMagick/rmkinfo.c +21 -87
  28. data/ext/RMagick/rmmain.c +419 -246
  29. data/ext/RMagick/rmmontage.c +60 -126
  30. data/ext/RMagick/rmpixel.c +401 -345
  31. data/ext/RMagick/rmstruct.c +62 -88
  32. data/ext/RMagick/rmutil.c +151 -228
  33. data/lib/rmagick/version.rb +1 -1
  34. data/lib/rmagick_internal.rb +128 -77
  35. data/lib/rvg/clippath.rb +2 -1
  36. data/lib/rvg/container.rb +10 -5
  37. data/lib/rvg/describable.rb +1 -1
  38. data/lib/rvg/embellishable.rb +5 -4
  39. data/lib/rvg/misc.rb +15 -12
  40. data/lib/rvg/paint.rb +2 -1
  41. data/lib/rvg/pathdata.rb +12 -11
  42. data/lib/rvg/rvg.rb +8 -4
  43. data/lib/rvg/stylable.rb +9 -7
  44. data/lib/rvg/text.rb +11 -6
  45. data/lib/rvg/transformable.rb +3 -2
  46. data/lib/rvg/units.rb +1 -1
  47. data/rmagick.gemspec +8 -6
  48. metadata +46 -421
  49. data/.appveyor.yml +0 -57
  50. data/.circleci/config.yml +0 -56
  51. data/.ruby-version +0 -1
  52. data/.simplecov +0 -27
  53. data/.travis.yml +0 -64
  54. data/Doxyfile +0 -1514
  55. data/README.textile +0 -259
  56. data/benchmarks/memory/README.md +0 -50
  57. data/benchmarks/memory/image_new.rb +0 -8
  58. data/benchmarks/memory/rmagick.gnuplot +0 -16
  59. data/doc/.cvsignore +0 -1
  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 -3272
  66. data/doc/ex/InitialCoords.rb +0 -22
  67. data/doc/ex/NewCoordSys.rb +0 -30
  68. data/doc/ex/OrigCoordSys.rb +0 -16
  69. data/doc/ex/PreserveAspectRatio.rb +0 -204
  70. data/doc/ex/RotateScale.rb +0 -36
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -15
  73. data/doc/ex/Use02.rb +0 -20
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -31
  76. data/doc/ex/adaptive_threshold.rb +0 -9
  77. data/doc/ex/add_noise.rb +0 -16
  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 -32
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -59
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -17
  87. data/doc/ex/bilevel_channel.rb +0 -8
  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 -42
  91. data/doc/ex/cbezier1.rb +0 -41
  92. data/doc/ex/cbezier2.rb +0 -41
  93. data/doc/ex/cbezier3.rb +0 -41
  94. data/doc/ex/cbezier4.rb +0 -42
  95. data/doc/ex/cbezier5.rb +0 -42
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -25
  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 -16
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -57
  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 -47
  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 -22
  111. data/doc/ex/composite.rb +0 -133
  112. data/doc/ex/composite_layers.rb +0 -52
  113. data/doc/ex/composite_tiled.rb +0 -21
  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 -42
  117. data/doc/ex/cubic01.rb +0 -43
  118. data/doc/ex/cubic02.rb +0 -91
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -12
  121. data/doc/ex/drawcomp.rb +0 -41
  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 -21
  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 -42
  130. data/doc/ex/fill_pattern.rb +0 -23
  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 -32
  135. data/doc/ex/fonts.rb +0 -16
  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 -41
  139. data/doc/ex/get_pixels.rb +0 -45
  140. data/doc/ex/get_type_metrics.rb +0 -142
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -45
  143. data/doc/ex/gravity.rb +0 -78
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -44
  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.png +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.png +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.png +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/image_with_profile.jpg +0 -0
  221. data/doc/ex/images/logo400x83.gif +0 -0
  222. data/doc/ex/images/model.miff +0 -0
  223. data/doc/ex/images/notimplemented.gif +0 -0
  224. data/doc/ex/images/smile.miff +0 -0
  225. data/doc/ex/images/spin.gif +0 -0
  226. data/doc/ex/implode.rb +0 -34
  227. data/doc/ex/level.rb +0 -11
  228. data/doc/ex/level_colors.rb +0 -11
  229. data/doc/ex/line.rb +0 -41
  230. data/doc/ex/line01.rb +0 -21
  231. data/doc/ex/mask.rb +0 -35
  232. data/doc/ex/matte_fill_to_border.rb +0 -39
  233. data/doc/ex/matte_floodfill.rb +0 -32
  234. data/doc/ex/matte_replace.rb +0 -39
  235. data/doc/ex/median_filter.rb +0 -28
  236. data/doc/ex/modulate.rb +0 -11
  237. data/doc/ex/mono.rb +0 -23
  238. data/doc/ex/morph.rb +0 -25
  239. data/doc/ex/mosaic.rb +0 -37
  240. data/doc/ex/motion_blur.rb +0 -11
  241. data/doc/ex/negate.rb +0 -11
  242. data/doc/ex/negate_channel.rb +0 -9
  243. data/doc/ex/nested_rvg.rb +0 -21
  244. data/doc/ex/nonzero.rb +0 -42
  245. data/doc/ex/normalize.rb +0 -11
  246. data/doc/ex/oil_paint.rb +0 -11
  247. data/doc/ex/opacity.rb +0 -37
  248. data/doc/ex/ordered_dither.rb +0 -11
  249. data/doc/ex/path.rb +0 -63
  250. data/doc/ex/pattern1.rb +0 -25
  251. data/doc/ex/pattern2.rb +0 -26
  252. data/doc/ex/polaroid.rb +0 -26
  253. data/doc/ex/polygon.rb +0 -23
  254. data/doc/ex/polygon01.rb +0 -21
  255. data/doc/ex/polyline.rb +0 -22
  256. data/doc/ex/polyline01.rb +0 -21
  257. data/doc/ex/posterize.rb +0 -8
  258. data/doc/ex/preview.rb +0 -8
  259. data/doc/ex/qbezierpath.rb +0 -52
  260. data/doc/ex/quad01.rb +0 -34
  261. data/doc/ex/quantize-m.rb +0 -25
  262. data/doc/ex/radial_blur.rb +0 -9
  263. data/doc/ex/raise.rb +0 -8
  264. data/doc/ex/random_threshold_channel.rb +0 -13
  265. data/doc/ex/rect01.rb +0 -14
  266. data/doc/ex/rect02.rb +0 -20
  267. data/doc/ex/rectangle.rb +0 -34
  268. data/doc/ex/reduce_noise.rb +0 -28
  269. data/doc/ex/remap.rb +0 -11
  270. data/doc/ex/remap_images.rb +0 -19
  271. data/doc/ex/resize_to_fill.rb +0 -8
  272. data/doc/ex/resize_to_fit.rb +0 -8
  273. data/doc/ex/roll.rb +0 -9
  274. data/doc/ex/rotate.rb +0 -44
  275. data/doc/ex/rotate_f.rb +0 -14
  276. data/doc/ex/roundrect.rb +0 -33
  277. data/doc/ex/rubyname.rb +0 -30
  278. data/doc/ex/rvg_clippath.rb +0 -12
  279. data/doc/ex/rvg_linecap.rb +0 -42
  280. data/doc/ex/rvg_linejoin.rb +0 -40
  281. data/doc/ex/rvg_opacity.rb +0 -18
  282. data/doc/ex/rvg_pattern.rb +0 -26
  283. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  284. data/doc/ex/segment.rb +0 -11
  285. data/doc/ex/sepiatone.rb +0 -7
  286. data/doc/ex/shade.rb +0 -11
  287. data/doc/ex/shadow.rb +0 -30
  288. data/doc/ex/shave.rb +0 -15
  289. data/doc/ex/shear.rb +0 -10
  290. data/doc/ex/sketch.rb +0 -17
  291. data/doc/ex/skewx.rb +0 -51
  292. data/doc/ex/skewy.rb +0 -47
  293. data/doc/ex/smile.rb +0 -126
  294. data/doc/ex/solarize.rb +0 -11
  295. data/doc/ex/sparse_color.rb +0 -55
  296. data/doc/ex/splice.rb +0 -8
  297. data/doc/ex/spread.rb +0 -11
  298. data/doc/ex/stegano.rb +0 -54
  299. data/doc/ex/stroke_dasharray.rb +0 -42
  300. data/doc/ex/stroke_fill.rb +0 -10
  301. data/doc/ex/stroke_linecap.rb +0 -44
  302. data/doc/ex/stroke_linejoin.rb +0 -48
  303. data/doc/ex/stroke_width.rb +0 -49
  304. data/doc/ex/swirl.rb +0 -17
  305. data/doc/ex/text.rb +0 -37
  306. data/doc/ex/text01.rb +0 -16
  307. data/doc/ex/text_align.rb +0 -36
  308. data/doc/ex/text_antialias.rb +0 -37
  309. data/doc/ex/text_styles.rb +0 -19
  310. data/doc/ex/text_undercolor.rb +0 -28
  311. data/doc/ex/texture_fill_to_border.rb +0 -34
  312. data/doc/ex/texture_floodfill.rb +0 -32
  313. data/doc/ex/texturefill.rb +0 -24
  314. data/doc/ex/threshold.rb +0 -13
  315. data/doc/ex/to_blob.rb +0 -13
  316. data/doc/ex/translate.rb +0 -39
  317. data/doc/ex/transparent.rb +0 -38
  318. data/doc/ex/transpose.rb +0 -9
  319. data/doc/ex/transverse.rb +0 -9
  320. data/doc/ex/tref01.rb +0 -24
  321. data/doc/ex/triangle01.rb +0 -15
  322. data/doc/ex/trim.rb +0 -23
  323. data/doc/ex/tspan01.rb +0 -17
  324. data/doc/ex/tspan02.rb +0 -17
  325. data/doc/ex/tspan03.rb +0 -19
  326. data/doc/ex/unsharp_mask.rb +0 -28
  327. data/doc/ex/viewex.rb +0 -33
  328. data/doc/ex/vignette.rb +0 -12
  329. data/doc/ex/watermark.rb +0 -27
  330. data/doc/ex/wave.rb +0 -9
  331. data/doc/ex/wet_floor.rb +0 -58
  332. data/doc/ex/writing_mode01.rb +0 -26
  333. data/doc/ex/writing_mode02.rb +0 -26
  334. data/doc/ilist.html +0 -2056
  335. data/doc/image1.html +0 -4680
  336. data/doc/image2.html +0 -3665
  337. data/doc/image3.html +0 -4522
  338. data/doc/imageattrs.html +0 -1638
  339. data/doc/imusage.html +0 -514
  340. data/doc/index.html +0 -416
  341. data/doc/info.html +0 -1499
  342. data/doc/magick.html +0 -570
  343. data/doc/optequiv.html +0 -2435
  344. data/doc/rvg.html +0 -975
  345. data/doc/rvgclip.html +0 -248
  346. data/doc/rvggroup.html +0 -305
  347. data/doc/rvgimage.html +0 -289
  348. data/doc/rvgpattern.html +0 -475
  349. data/doc/rvgshape.html +0 -406
  350. data/doc/rvgstyle.html +0 -270
  351. data/doc/rvgtext.html +0 -465
  352. data/doc/rvgtspan.html +0 -238
  353. data/doc/rvgtut.html +0 -530
  354. data/doc/rvguse.html +0 -145
  355. data/doc/rvgxform.html +0 -294
  356. data/doc/scripts/doc.js +0 -22
  357. data/doc/scripts/stripeTables.js +0 -23
  358. data/doc/struct.html +0 -1339
  359. data/doc/usage.html +0 -1621
  360. data/examples/constitute.rb +0 -7
  361. data/examples/crop_with_gravity.rb +0 -43
  362. data/examples/demo.rb +0 -323
  363. data/examples/describe.rb +0 -41
  364. data/examples/find_similar_region.rb +0 -34
  365. data/examples/histogram.rb +0 -312
  366. data/examples/identify.rb +0 -174
  367. data/examples/image_opacity.rb +0 -28
  368. data/examples/import_export.rb +0 -31
  369. data/examples/pattern_fill.rb +0 -37
  370. data/examples/rotating_text.rb +0 -45
  371. data/examples/spinner.rb +0 -49
  372. data/examples/thumbnail.rb +0 -64
  373. data/examples/vignette.rb +0 -78
  374. data/spec/rmagick/ImageList1_spec.rb +0 -24
  375. data/spec/rmagick/draw_spec.rb +0 -155
  376. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  377. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  378. data/spec/rmagick/image/composite_spec.rb +0 -72
  379. data/spec/rmagick/image/constitute_spec.rb +0 -13
  380. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  381. data/spec/rmagick/image/dissolve_spec.rb +0 -54
  382. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  383. data/spec/rmagick/image/ping_spec.rb +0 -12
  384. data/spec/rmagick/image/properties_spec.rb +0 -27
  385. data/spec/rmagick/image/read_spec.rb +0 -28
  386. data/spec/spec_helper.rb +0 -9
  387. data/spec/support/issue_200/app.rb +0 -8
  388. data/test/Draw.rb +0 -351
  389. data/test/Enum.rb +0 -228
  390. data/test/Fill.rb +0 -93
  391. data/test/Image1.rb +0 -606
  392. data/test/Image2.rb +0 -1408
  393. data/test/Image3.rb +0 -1086
  394. data/test/ImageList1.rb +0 -858
  395. data/test/ImageList2.rb +0 -375
  396. data/test/Image_attributes.rb +0 -635
  397. data/test/Import_Export.rb +0 -111
  398. data/test/Info.rb +0 -436
  399. data/test/KernelInfo.rb +0 -59
  400. data/test/Magick.rb +0 -311
  401. data/test/Pixel.rb +0 -259
  402. data/test/PolaroidOptions.rb +0 -23
  403. data/test/Preview.rb +0 -26
  404. data/test/Struct.rb +0 -45
  405. data/test/appearance/Montage.rb +0 -26
  406. data/test/appearance/appearance_assertion.rb +0 -13
  407. data/test/appearance/expected/montage_border_color.jpg +0 -0
  408. data/test/cmyk.icm +0 -0
  409. data/test/lib/internal/Draw.rb +0 -811
  410. data/test/lib/internal/Geometry.rb +0 -98
  411. data/test/lib/internal/Magick.rb +0 -40
  412. data/test/srgb.icm +0 -0
  413. data/test/test_all_basic.rb +0 -49
  414. data/test/tmpnam_test.rb +0 -50
data/doc/ex/cbezier2.rb DELETED
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(470, 150, Magick::HatchFill.new('white', 'lightcyan2'))
6
- gc = Magick::Draw.new
7
-
8
- # Draw Bezier curve
9
- gc.stroke('red')
10
- gc.stroke_width(3)
11
- gc.fill_opacity(0)
12
- gc.bezier(25, 125, 100, 25, 400, 25, 325, 125)
13
-
14
- # Draw circles around end points
15
- gc.fill_opacity(0)
16
- gc.stroke('gray50').stroke_width(1)
17
- gc.circle(25, 125, 28, 128)
18
- gc.circle(325, 125, 328, 123)
19
-
20
- # Draw filled circles around control points
21
- gc.line(25, 125, 100, 25)
22
- gc.line(325, 125, 400, 25)
23
- gc.fill_opacity(1)
24
- gc.fill('gray50')
25
- gc.circle(100, 25, 103, 28)
26
- gc.circle(400, 25, 403, 28)
27
-
28
- # Annotate
29
- gc.font_weight(Magick::NormalWeight)
30
- gc.font_style(Magick::NormalStyle)
31
- gc.fill('black')
32
- gc.stroke('transparent')
33
- gc.text(34, 125, "'25,125'")
34
- gc.text(107, 25, "'100,25'")
35
- gc.text(335, 125, "'325,125'")
36
- gc.text(405, 25, "'400,25'")
37
-
38
- gc.draw(imgl)
39
- imgl.border!(1, 1, 'lightcyan2')
40
- imgl.write('cbezier2.gif')
41
- exit(0)
data/doc/ex/cbezier3.rb DELETED
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(540, 200, Magick::HatchFill.new('white', 'lightcyan2'))
6
- gc = Magick::Draw.new
7
-
8
- # Draw Bezier curve
9
- gc.stroke('red')
10
- gc.stroke_width(3)
11
- gc.fill_opacity(0)
12
- gc.bezier(100, 150, 25, 50, 475, 50, 400, 150)
13
-
14
- # Draw circles around endpoints
15
- gc.fill_opacity(0)
16
- gc.stroke('gray50').stroke_width(1)
17
- gc.circle(100, 150, 103, 153)
18
- gc.circle(400, 150, 403, 153)
19
- gc.line(100, 150, 25, 50)
20
- gc.line(400, 150, 475, 50)
21
-
22
- # Draw filled circles around control points
23
- gc.fill_opacity(1)
24
- gc.fill('gray50')
25
- gc.circle(25, 50, 28, 53)
26
- gc.circle(475, 50, 478, 53)
27
-
28
- # Annotate
29
- gc.font_weight(Magick::NormalWeight)
30
- gc.font_style(Magick::NormalStyle)
31
- gc.fill('black')
32
- gc.stroke('transparent')
33
- gc.text(107, 150, "'100,150'")
34
- gc.text(30, 50, "'25,50'")
35
- gc.text(409, 150, "'400,150'")
36
- gc.text(480, 50, "'475,50'")
37
-
38
- gc.draw(imgl)
39
- imgl.border!(1, 1, 'lightcyan2')
40
- imgl.write('cbezier3.gif')
41
- exit(0)
data/doc/ex/cbezier4.rb DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(390, 360, Magick::HatchFill.new('white', 'lightcyan2'))
6
- gc = Magick::Draw.new
7
-
8
- # Draw Bezier curve
9
- gc.stroke('red')
10
- gc.stroke_width(3)
11
- gc.fill_opacity(0)
12
- gc.bezier(20, 180, 20, 30, 320, 330, 320, 180)
13
-
14
- # Draw circles around endpoints
15
- gc.fill_opacity(0)
16
- gc.stroke('gray50').stroke_width(1)
17
- gc.circle(20, 180, 23, 183)
18
- gc.circle(320, 180, 323, 183)
19
-
20
- # Draw filled circles around control points
21
- gc.line(20, 180, 20, 30)
22
- gc.line(320, 180, 320, 330)
23
- gc.fill_opacity(1)
24
- gc.fill('gray50')
25
- gc.circle(20, 30, 23, 33)
26
- gc.circle(320, 330, 323, 333)
27
-
28
- # Annotate
29
- gc.font_weight(Magick::NormalWeight)
30
- gc.font_style(Magick::NormalStyle)
31
- gc.fill('black')
32
- gc.stroke('transparent')
33
- gc.text(29, 180, "'20,180'")
34
- gc.text(29, 33, "'20,30'")
35
- gc.text(329, 330, "'320,330'")
36
- gc.text(329, 180, "'320,180'")
37
-
38
- gc.draw(imgl)
39
- imgl.border!(1, 1, 'lightcyan2')
40
-
41
- imgl.write('cbezier4.gif')
42
- exit(0)
data/doc/ex/cbezier5.rb DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(390, 150, Magick::HatchFill.new('white', 'lightcyan2'))
6
- gc = Magick::Draw.new
7
-
8
- # Draw Bezier curve
9
- gc.stroke('red')
10
- gc.stroke_width(3)
11
- gc.fill_opacity(0)
12
- gc.bezier(20, 120, 95, 20, 245, 20, 320, 120)
13
-
14
- # Draw circles around endpoints
15
- gc.fill_opacity(0)
16
- gc.stroke('gray50').stroke_width(1)
17
- gc.circle(20, 120, 23, 123)
18
- gc.circle(320, 120, 323, 123)
19
-
20
- # Draw filled circles around control points
21
- gc.line(20, 120, 95, 20)
22
- gc.line(320, 120, 245, 20)
23
- gc.fill_opacity(1)
24
- gc.fill('gray50')
25
- gc.circle(95, 20, 98, 23)
26
- gc.circle(245, 20, 248, 23)
27
-
28
- # Annotate
29
- gc.font_weight(Magick::NormalWeight)
30
- gc.font_style(Magick::NormalStyle)
31
- gc.fill('black')
32
- gc.stroke('transparent')
33
- gc.text(29, 120, "'20,120'")
34
- gc.text(104, 20, "'95,20'")
35
- gc.text(254, 20, "'245,20'")
36
- gc.text(329, 120, "'320,120'")
37
-
38
- gc.draw(imgl)
39
- imgl.border!(1, 1, 'lightcyan2')
40
-
41
- imgl.write('cbezier5.gif')
42
- exit(0)
data/doc/ex/cbezier6.rb DELETED
@@ -1,53 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- imgl = Magick::ImageList.new
6
- imgl.new_image(400, 300, Magick::HatchFill.new('white', 'lightcyan2'))
7
-
8
- gc = Magick::Draw.new
9
-
10
- # Draw Bezier curve
11
- gc.stroke('red')
12
- gc.stroke_width(2)
13
- gc.fill_opacity(0)
14
- gc.bezier(50, 150, 50, 50, 200, 50, 200, 150, 200, 250, 350, 250, 350, 150)
15
-
16
- # Draw filled circles for the control points
17
- gc.fill('gray50')
18
- gc.stroke('gray50')
19
- gc.fill_opacity(1)
20
- gc.circle(50, 50, 53, 53)
21
- gc.circle(200, 50, 203, 53)
22
- gc.circle(200, 250, 203, 253)
23
- gc.circle(350, 250, 353, 253)
24
-
25
- # Draw circles on the points the curve passes through
26
- gc.fill_opacity(0)
27
- gc.circle(50, 150, 53, 153)
28
- gc.circle(200, 150, 203, 153)
29
- gc.circle(350, 150, 353, 153)
30
-
31
- # Draw the gray lines between points and control points
32
- gc.line(50, 50, 50, 150)
33
- gc.line(200, 50, 200, 250)
34
- gc.line(350, 150, 350, 250)
35
-
36
- # Annotate
37
- gc.font_weight(Magick::NormalWeight)
38
- gc.font_style(Magick::NormalStyle)
39
- gc.fill('black')
40
- gc.stroke('transparent')
41
- gc.text(30, 170, "'50,150'")
42
- gc.text(30, 40, "'50,50'")
43
- gc.text(180, 40, "'200,50'")
44
- gc.text(210, 155, "'200,150'")
45
- gc.text(180, 270, "'200,250'")
46
- gc.text(330, 270, "'350,250'")
47
- gc.text(330, 140, "'350,150'")
48
- gc.draw(imgl)
49
-
50
- imgl.border!(1, 1, 'lightcyan2')
51
-
52
- imgl.write('cbezier6.gif')
53
- exit
data/doc/ex/channel.rb DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.read('images/Flower_Hat.jpg').first
6
- imgs = Magick::ImageList.new
7
-
8
- imgs << img
9
- imgs << img.channel(Magick::RedChannel)
10
- imgs.cur_image['Label'] = 'RedChannel'
11
- imgs << img.channel(Magick::GreenChannel)
12
- imgs.cur_image['Label'] = 'GreenChannel'
13
- imgs << img.channel(Magick::BlueChannel)
14
- imgs.cur_image['Label'] = 'BlueChannel'
15
-
16
- result = imgs.montage do
17
- self.tile = '2x2'
18
- self.background_color = 'black'
19
- self.stroke = 'transparent'
20
- self.fill = 'white'
21
- self.pointsize = 9
22
- self.geometry = Magick::Geometry.new(img.columns / 2, img.rows / 2, 5, 5)
23
- end
24
-
25
- result.write('channel.jpg')
data/doc/ex/charcoal.rb DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#charcoal method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.charcoal(0.75)
9
-
10
- img.write('charcoal.jpg')
11
-
12
- exit
data/doc/ex/chop.rb DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#chop method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg')[0]
7
-
8
- # Chop the specified rectangle out of the img.
9
- chopped = img.chop(0, img.rows / 2, img.columns / 2, img.rows)
10
-
11
- # Make a "before" image by highlighting the chopped area.
12
- gc = Magick::Draw.new
13
- gc.fill('white')
14
- gc.stroke('transparent')
15
- gc.fill_opacity(0.25)
16
- gc.rectangle(0, img.rows / 2, img.columns / 2, img.rows)
17
- gc.draw(img)
18
-
19
- img.write('chop_before.jpg')
20
-
21
- # Create a image to use as a background for
22
- # the after image. Make the chopped image the
23
- # same size as before the chop.
24
- bg = Magick::Image.new(img.columns, img.rows)
25
-
26
- chopped = bg.composite(chopped, Magick::NorthEastGravity, Magick::OverCompositeOp)
27
-
28
- chopped.write('chop_after.jpg')
29
- exit
data/doc/ex/circle.rb DELETED
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(250, 250, Magick::HatchFill.new('white', 'LightCyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- # Draw the circle
10
- gc.fill_opacity(0)
11
- gc.stroke('red').stroke_width(3)
12
- gc.circle(125, 125, 25, 125)
13
-
14
- # Draw a little gray circle on the perimeter
15
- gc.stroke_width(1)
16
- gc.stroke('gray50')
17
- gc.circle(25, 125, 28, 128)
18
-
19
- # Draw a dot at the center
20
- gc.fill_opacity(1)
21
- gc.circle(125, 125, 128, 128)
22
-
23
- # Annotate the dots
24
- gc.font_weight(Magick::NormalWeight)
25
- gc.font_style(Magick::NormalStyle)
26
- gc.fill('black')
27
- gc.stroke('transparent')
28
- gc.text(132, 125, "'125,125'")
29
- gc.text(32, 125, "'25,125'")
30
- gc.draw(imgl)
31
-
32
- imgl.border!(1, 1, 'lightcyan2')
33
- imgl.write('circle.gif')
data/doc/ex/circle01.rb DELETED
@@ -1,16 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(12.cm, 4.cm) do |canvas|
6
- canvas.viewbox(0, 0, 1200, 400)
7
- canvas.background_fill = 'white'
8
- canvas.desc = 'Example circle01 - circle filled with red and stroked with blue'
9
-
10
- # Show outline of canvas using the 'rect' method
11
- canvas.rect(1195, 395, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 2)
12
-
13
- canvas.circle(100, 600, 200).styles(fill: 'red', stroke: 'blue', stroke_width: 10)
14
- end
15
-
16
- rvg.draw.write('circle01.gif')
data/doc/ex/clip_path.rb DELETED
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- points = [145, 65, 174, 151, 264, 151, 192, 205,
6
- 218, 291, 145, 240, 72, 291, 98, 205,
7
- 26, 151, 116, 151]
8
-
9
- pr = Magick::Draw.new
10
-
11
- # Define a clip-path.
12
- # The name of the clip-path is "example"
13
- pr.define_clip_path('example') do
14
- pr.polygon(*points)
15
- end
16
-
17
- # Enable the clip-path
18
- pr.push
19
- pr.clip_path('example')
20
-
21
- # Composite the Flower Hat image over
22
- # the background using the clip-path
23
- girl = Magick::ImageList.new
24
- girl.read('images/Flower_Hat.jpg')
25
-
26
- cols = rows = nil
27
-
28
- # Our final image is about 280 pixels wide, so here
29
- # we widen our picture to fit. The change_geometry
30
- # method will adjust the height proportionately.
31
-
32
- girl.change_geometry('280') do |c, r|
33
- pr.composite(0, 0, c, r, girl)
34
- cols = c
35
- rows = r
36
- end
37
-
38
- pr.pop
39
-
40
- # Create a canvas to draw on, a bit bigger than the star.
41
- canvas = Magick::Image.new(cols, rows)
42
-
43
- star = Magick::Draw.new
44
- star.stroke('gray50')
45
- star.fill('gray50')
46
- points.map! { |p| p + 8 }
47
- star.polygon(*points)
48
- star.draw(canvas)
49
- canvas = canvas.blur_image(0, 3)
50
-
51
- # Draw the star shadow over the background
52
- pr.draw(canvas)
53
-
54
- # Crop away all the solid white border pixels.
55
- crop = canvas.bounding_box
56
- canvas.crop!(crop.x, crop.y, crop.width, crop.height)
57
-
58
- canvas.write('clip_path.gif')
59
-
60
- exit
data/doc/ex/coalesce.rb DELETED
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- buttons = Magick::ImageList.new
5
-
6
- # Read 25 alphabet image files, scale to 1/4 size
7
- letter = 'A'
8
- 26.times do
9
- if letter != 'M' # "M" is not the same size as the other letters
10
- tiny = Magick::Image.read('images/Button_' + letter + '.gif').first
11
- tiny.scale! 0.25
12
- buttons << tiny
13
- end
14
- letter.succ!
15
- end
16
-
17
- # Create a image that will hold the alphabet images in 5 rows and 5 columns.
18
- cells = Magick::ImageList.new
19
- cells.new_image buttons.columns * 5, buttons.rows * 5 do
20
- self.background_color = '#000000ff' # transparent
21
- end
22
- cells.alpha(Magick::ActivateAlphaChannel)
23
-
24
- offset = Magick::Rectangle.new(0, 0, 0, 0)
25
-
26
- # Create 2 arrays from which we can randomly choose row,col pairs
27
- row = [0] * 5 + [1] * 5 + [2] * 5 + [3] * 5 + [4] * 5
28
- col = (0..4).to_a * 5
29
-
30
- # The coalesce method composites the 2nd image over the 1st, the 3rd image
31
- # over the result, and so forth, respecting the page offset of the images.
32
-
33
- srand 1234
34
- 25.times do |i|
35
- # Randomly select a row and column for this copy of the "tinya" image.
36
- # Compute the x,y position of this copy in pixels and store the
37
- # result in the image's page attribute. Append a copy of the image
38
- # to the image array in "a".
39
- n = rand row.length
40
- x = row.delete_at n
41
- y = col.delete_at n
42
-
43
- button = buttons[i]
44
- offset.x = x * button.columns
45
- offset.y = y * button.rows
46
- button.page = offset
47
- button.alpha(Magick::ActivateAlphaChannel)
48
- cells << button
49
- end
50
-
51
- puts 'This may take a few seconds...'
52
- cells.delay = 10
53
- cells.iterations = 10_000
54
- res = cells.coalesce
55
- res.write 'coalesce_anim.gif'
56
- res[25].write 'coalesce.gif'
57
- exit