rmagick 4.1.0.rc1 → 4.2.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 (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 +94 -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 +3416 -4169
  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 +148 -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/crop.rb DELETED
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#crop method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg')[0]
7
-
8
- # Crop the specified rectangle out of the img.
9
- chopped = img.crop(23, 81, 107, 139)
10
-
11
- # Go back to the original and highlight the area
12
- # corresponding to the retained rectangle.
13
- rect = Magick::Draw.new
14
- rect.stroke('transparent')
15
- rect.fill('white')
16
- rect.fill_opacity(0.25)
17
- rect.rectangle(23, 81, 107 + 23, 139 + 81)
18
- rect.draw(img)
19
-
20
- img.write('crop_before.png')
21
-
22
- # Create a image to use as a background for
23
- # the "after" image.
24
- bg = Magick::Image.new(img.columns, img.rows) { self.background_color = 'none' }
25
-
26
- # Composite the the "after" (chopped) image on the background
27
- bg = bg.composite(chopped, 23, 81, Magick::OverCompositeOp)
28
-
29
- bg.write('crop_after.png')
30
-
31
- exit
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- #=======================================================#
4
- # Thanks to Robert Wagner for the idea of allowing a #
5
- # GravityType instead of the x- and y-offset arguments! #
6
- #=======================================================#
7
-
8
- # Demo the use of the GravityType argument to Image#crop.
9
-
10
- require 'rmagick'
11
- include Magick
12
-
13
- shorts = Image.read('images/Shorts.jpg').first
14
-
15
- regwidth = shorts.columns / 2
16
- regheight = shorts.rows / 2
17
-
18
- mask = Image.new(regwidth, regheight) { self.background_color = 'white' }
19
- mask.opacity = 0.50 * TransparentOpacity
20
-
21
- black = Image.new(shorts.columns, shorts.rows) { self.background_color = 'black' }
22
- pairs = ImageList.new
23
-
24
- [NorthWestGravity, NorthGravity, NorthEastGravity,
25
- WestGravity, CenterGravity, EastGravity,
26
- SouthWestGravity, SouthGravity, SouthEastGravity].each do |gravity|
27
- pattern = shorts.composite(mask, gravity, OverCompositeOp)
28
- cropped = shorts.crop(gravity, regwidth, regheight)
29
- result = black.composite(cropped, gravity, OverCompositeOp)
30
- result.border_color = 'white'
31
- pairs << pattern
32
- pairs << result
33
- end
34
-
35
- # Montage into a single image
36
- montage = pairs.montage do
37
- self.geometry = "#{pairs.columns}x#{pairs.rows}+0+0"
38
- self.tile = '6x3'
39
- self.border_width = 1
40
- end
41
- montage.write('crop_with_gravity.miff')
42
- # montage.display
data/doc/ex/cubic01.rb DELETED
@@ -1,43 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- Border = { fill: 'none', stroke: 'blue', stroke_width: 1 }
6
- Connect = { fill: 'none', stroke: '#888', stroke_width: 2 }
7
- SamplePath = { fill: 'none', stroke: 'red', stroke_width: 5 }
8
- EndPoint = { fill: 'none', stroke: '#888', stroke_width: 2 }
9
- CtlPoint = { fill: '#888', stroke: 'none' }
10
- AutoCtlPoint = { fill: 'none', stroke: 'blue', stroke_width: 4 }
11
- Label = { font_size: 22, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal' }
12
-
13
- rvg = Magick::RVG.new(5.cm, 4.cm).viewbox(0, 0, 500, 400) do |canvas|
14
- canvas.title = 'Example cubic01 - cubic Bezier commands in path data'
15
- canvas.desc = <<-END_DESC
16
- Picture showing a simple example of path data using both a
17
- "C" and an "S" command, along with annotations showing the
18
- control points and end points.
19
- END_DESC
20
-
21
- canvas.background_fill = 'white'
22
- canvas.rect(496, 395, 1, 1).styles(Border)
23
-
24
- canvas.polyline(100, 200, 100, 100).styles(Connect)
25
- canvas.polyline(250, 100, 250, 200).styles(Connect)
26
- canvas.polyline(250, 200, 250, 300).styles(Connect)
27
- canvas.polyline(400, 300, 400, 200).styles(Connect)
28
-
29
- canvas.path('M100,200 C100,100 250,100 250,200 S400,300 400,200').styles(SamplePath)
30
-
31
- canvas.circle(10, 100, 200).styles(EndPoint)
32
- canvas.circle(10, 250, 200).styles(EndPoint)
33
- canvas.circle(10, 400, 200).styles(EndPoint)
34
- canvas.circle(10, 100, 100).styles(CtlPoint)
35
- canvas.circle(10, 250, 100).styles(CtlPoint)
36
- canvas.circle(10, 400, 300).styles(CtlPoint)
37
- canvas.circle(9, 250, 300).styles(AutoCtlPoint)
38
-
39
- canvas.text(25, 70, 'M100,200 C100,100 250,100 250,200').styles(Label)
40
- canvas.text(225, 350, 'S400,300 400,200').styles(Label)
41
- end
42
-
43
- rvg.draw.write('cubic01.gif')
data/doc/ex/cubic02.rb DELETED
@@ -1,91 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- Border = { fill: 'none', stroke: 'blue', stroke_width: 1 }
6
- Connect = { fill: 'none', stroke: '#888888', stroke_width: 2 }
7
- SamplePath = { fill: 'none', stroke: 'red', stroke_width: 5 }
8
- EndPoint = { fill: 'none', stroke: '#888888', stroke_width: 2 }
9
- CtlPoint = { fill: '#888888', stroke: 'none' }
10
- AutoCtlPoint = { fill: 'none', stroke: 'blue', stroke_width: 4 }
11
- Label = { text_anchor: 'middle', font_size: 22, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal' }
12
-
13
- rvg = Magick::RVG.new(10.cm, 10.cm).viewbox(0, 0, 1000, 1000) do |canvas|
14
- canvas.title = 'Example cubic02 - cubic Bezier commands in path data'
15
- canvas.desc = <<-END_DESC
16
- Picture showing examples of "C" and "S" commands,
17
- along with annotations showing the control points
18
- and end points
19
- END_DESC
20
-
21
- canvas.background_fill = 'white'
22
- canvas.rect(996, 996, 1, 1).styles(Border)
23
-
24
- # Path 1
25
- canvas.polyline(100, 200, 100, 100).styles(Connect)
26
- canvas.polyline(400, 100, 400, 200).styles(Connect)
27
- canvas.path('M100,200 C100,100 400,100 400,200').styles(SamplePath)
28
- canvas.circle(10, 100, 200).styles(EndPoint)
29
- canvas.circle(10, 400, 200).styles(EndPoint)
30
- canvas.circle(10, 100, 100).styles(CtlPoint)
31
- canvas.circle(10, 400, 100).styles(CtlPoint)
32
- canvas.text(250, 275, 'M100,200 C100,100 400,100 400,200').styles(Label)
33
-
34
- # Path 2
35
- canvas.polyline(100, 500, 25, 400).styles(Connect)
36
- canvas.polyline(475, 400, 400, 500).styles(Connect)
37
- canvas.path('M100,500 C25,400 475,400 400,500').styles(SamplePath)
38
- canvas.circle(10, 100, 500).styles(EndPoint)
39
- canvas.circle(10, 400, 500).styles(EndPoint)
40
- canvas.circle(10, 25, 400).styles(CtlPoint)
41
- canvas.circle(10, 475, 400).styles(CtlPoint)
42
- canvas.text(250, 575, 'M100,500 C25,400 475,400 400,500').styles(Label)
43
-
44
- # Path 3
45
- canvas.polyline(100, 800, 175, 700).styles(Connect)
46
- canvas.polyline(325, 700, 400, 800).styles(Connect)
47
- canvas.path('M100,800 C175,700 325,700 400,800').styles(SamplePath)
48
- canvas.circle(10, 100, 800).styles(EndPoint)
49
- canvas.circle(10, 400, 800).styles(EndPoint)
50
- canvas.circle(10, 175, 700).styles(CtlPoint)
51
- canvas.circle(10, 325, 700).styles(CtlPoint)
52
- canvas.text(250, 875, 'M100,800 C175,700 325,700 400,800').styles(Label)
53
-
54
- # Path 4
55
- canvas.polyline(600, 200, 675, 100).styles(Connect)
56
- canvas.polyline(975, 100, 900, 200).styles(Connect)
57
- canvas.path('M600,200 C675,100 975,100 900,200').styles(SamplePath)
58
- canvas.circle(10, 600, 200).styles(EndPoint)
59
- canvas.circle(10, 900, 200).styles(EndPoint)
60
- canvas.circle(10, 675, 100).styles(CtlPoint)
61
- canvas.circle(10, 975, 100).styles(CtlPoint)
62
- canvas.text(750, 275, 'M600,200 C675,100 975,100 900,200').styles(Label)
63
-
64
- # Path 5
65
- canvas.polyline(600, 500, 600, 350).styles(Connect)
66
- canvas.polyline(900, 650, 900, 500).styles(Connect)
67
- canvas.path('M600,500 C600,350 900,650 900,500').styles(SamplePath)
68
- canvas.circle(10, 600, 500).styles(EndPoint)
69
- canvas.circle(10, 900, 500).styles(EndPoint)
70
- canvas.circle(10, 600, 350).styles(CtlPoint)
71
- canvas.circle(10, 900, 650).styles(CtlPoint)
72
- canvas.text(750, 575, 'M600,500 C600,350 900,650 900,500').styles(Label)
73
-
74
- # Path 6 (C and S command)
75
- canvas.polyline(600, 800, 625, 700).styles(Connect)
76
- canvas.polyline(725, 700, 750, 800).styles(Connect)
77
- canvas.polyline(750, 800, 775, 900).styles(Connect)
78
- canvas.polyline(875, 900, 900, 800).styles(Connect)
79
- canvas.path('M600,800 C625,700 725,700 750,800 S875,900 900,800').styles(SamplePath)
80
- canvas.circle(10, 600, 800).styles(EndPoint)
81
- canvas.circle(10, 750, 800).styles(EndPoint)
82
- canvas.circle(10, 900, 800).styles(EndPoint)
83
- canvas.circle(10, 625, 700).styles(CtlPoint)
84
- canvas.circle(10, 725, 700).styles(CtlPoint)
85
- canvas.circle(10, 875, 900).styles(CtlPoint)
86
- canvas.circle(10, 775, 900).styles(AutoCtlPoint)
87
- canvas.text(750, 945, 'M600,800 C625,700 725,700 750,800').styles(Label)
88
- canvas.text(750, 975, 'S875,900 900,800').styles(Label)
89
- end
90
-
91
- rvg.draw.write('cubic02.gif')
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#cycle_colormap method
5
-
6
- balloons = Magick::Image.read('images/Hot_Air_Balloons.jpg').first
7
- balloons = balloons.quantize(256, Magick::RGBColorspace)
8
-
9
- jump = balloons.colors / 10
10
-
11
- animation = Magick::ImageList.new
12
- animation[0] = balloons
13
-
14
- 5.times { animation << animation.cycle_colormap(jump) }
15
- 4.times { animation << animation.cycle_colormap(-jump) }
16
-
17
- animation.delay = 20
18
- animation.iterations = 10_000
19
- # animation.animate
20
- animation.write('cycle_colormap.gif')
21
- exit
data/doc/ex/dissolve.rb DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- bgnd = Magick::Image.read('images/Violin.jpg').first
6
- overlay = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- # Make the violin image the same size as the hat image
9
- bgnd.resize_to_fill!(overlay.columns, overlay.rows)
10
-
11
- composited = bgnd.dissolve(overlay, 0.50)
12
- composited.write('dissolve.jpg')
data/doc/ex/drawcomp.rb DELETED
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- # Read the snake image file and scale to 200 pixels high.
6
- begin
7
- snake = Magick::ImageList.new('images/Snake.png')
8
- snake.scale!(200.0 / snake.rows)
9
-
10
- # Read the coffee cup image and scale to 200 pixels high.
11
- coffee = Magick::ImageList.new('images/Coffee.png')
12
- coffee.scale!(200.0 / coffee.rows)
13
-
14
- # We want the "no" symbol to be a little smaller.
15
- # Read and scale to 150 pixels high.
16
- sign = Magick::ImageList.new('images/No.png')
17
- sign.scale!(150.0 / sign.rows)
18
-
19
- # Change the white pixels in the sign to transparent.
20
- sign = sign.matte_replace(0, 0)
21
-
22
- # Create a "nosnake" draw object. Add a composite
23
- # primitive that composites the "no" symbol over
24
- # the snake. Draw it.
25
- nosnake = Magick::Draw.new
26
- nosnake.composite((snake.columns - sign.columns) / 2,
27
- (snake.rows - sign.rows) / 2, 0, 0, sign)
28
- nosnake.draw(snake)
29
-
30
- # Repeat for the coffee cup.
31
- nocoffee = Magick::Draw.new
32
- nocoffee.composite((coffee.columns - sign.columns) / 2,
33
- (coffee.columns - sign.columns) / 2, 0, 0, sign)
34
- nocoffee.draw(coffee)
35
-
36
- coffee.write('drawcomp1.gif')
37
- snake.write('drawcomp2.gif')
38
- rescue Magick::ImageMagickError
39
- puts "#{$PROGRAM_NAME}: ImageMagickError - #{$ERROR_INFO}"
40
- end
41
- exit
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Add a drop shadow to a text string. This example
5
- # uses a 3-image animation to show each step of the
6
- # process
7
-
8
- Rows = 60
9
- Cols = 250
10
- Text = 'Ruby rocks!'
11
-
12
- # This imagelist will contain the animation frames
13
- anim = Magick::ImageList.new
14
-
15
- ex = Magick::Image.new(Cols, Rows)
16
-
17
- # Create a Draw object to draw the text with. Most of the text
18
- # attributes are shared between the shadow and the foreground.
19
-
20
- text = Magick::Draw.new
21
- text.gravity = Magick::CenterGravity
22
- text.pointsize = 36
23
- text.font_weight = Magick::BoldWeight
24
- text.font_style = Magick::ItalicStyle
25
- text.stroke = 'transparent'
26
-
27
- # Draw the shadow text first. The color is a very light gray.
28
- # Position the text to the right and down.
29
- text.annotate(ex, 0, 0, 2, 2, Text) do
30
- self.fill = 'gray60'
31
- end
32
-
33
- # Save the first frame of the animation.
34
- anim << ex.copy
35
-
36
- # Blur the shadow. Save a copy of the image as the 2nd frame.
37
- ex = ex.blur_image(0, 3)
38
- anim << ex.copy
39
-
40
- # Add the foreground text in solid black. Position it
41
- # to the left and up from the shadow text.
42
- text.annotate(ex, 0, 0, -1, -1, Text) do
43
- self.fill = 'maroon'
44
- end
45
-
46
- # Save yet another copy of the image as the 3rd frame.
47
- anim << ex.copy
48
-
49
- # Set the delay between frames to 1 second.
50
- anim.delay = 100
51
-
52
- # Set the delay after the last frame to 3 seconds.
53
- anim.cur_image.delay = 300
54
-
55
- # Iterate forever.
56
- anim.iterations = 0
57
-
58
- # anim.animate
59
- anim.write('drop_shadow.gif')
60
- exit
data/doc/ex/edge.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#edge method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- img = img.quantize(256, Magick::GRAYColorspace)
8
- img = img.edge(5)
9
-
10
- img.write('edge.jpg')
11
- exit
data/doc/ex/ellipse.rb DELETED
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(360, 250, Magick::HatchFill.new('white', 'LightCyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- gc.fill_opacity(0)
10
- gc.stroke('red').stroke_width(3)
11
-
12
- # Draw ellipse
13
- gc.ellipse(180, 125, 150, 75, 0, 270)
14
-
15
- # Draw horizontal width line
16
- gc.stroke('gray50').stroke_width(1)
17
- gc.line(180 - 150, 125, 180, 125)
18
-
19
- # Draw vertical height line
20
- gc.line(180, 125 - 75, 180, 125)
21
- gc.fill_opacity(0)
22
-
23
- # Draw arcStart circle
24
- gc.circle(180 + 150, 125, 180 + 150 + 3, 125 + 3)
25
-
26
- # Draw arcEnd circle
27
- gc.circle(180, 125 - 75, 180 + 3, 125 - 75 + 3)
28
-
29
- # Annotate
30
- gc.font_weight(Magick::NormalWeight)
31
- gc.font_style(Magick::NormalStyle)
32
- gc.fill_opacity(1)
33
- gc.circle(180, 125, 183, 128)
34
- gc.fill('black')
35
- gc.stroke('transparent')
36
- gc.text(187, 125, "'180,125'")
37
- gc.text(253, 118, "'Start 0 degrees'")
38
- gc.text(187, 50, "'End 270 degrees'")
39
- gc.text(120, 100, "'Height=75'")
40
- gc.text(85, 140, "'Width=150'")
41
- gc.draw(imgl)
42
-
43
- imgl.border!(1, 1, 'LightCyan2')
44
-
45
- imgl.write('ellipse.gif')
data/doc/ex/ellipse01.rb DELETED
@@ -1,21 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = 'Example ellipse01 - examples of ellipses'
8
-
9
- # Show outline of canvas using rect method
10
- canvas.rect(1195, 395, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 2)
11
-
12
- canvas.g.translate(300, 200) do |grp|
13
- grp.ellipse(250, 100).styles(fill: 'red')
14
- end
15
-
16
- canvas.g.translate(900, 200).rotate(-30) do |grp|
17
- grp.ellipse(250, 100).styles(fill: 'none', stroke: 'blue', stroke_width: 20)
18
- end
19
- end
20
-
21
- rvg.draw.write('ellipse01.gif')
data/doc/ex/emboss.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#edge method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.emboss
9
-
10
- img.write('emboss.jpg')
11
- exit