rmagick 4.1.0.rc2 → 4.1.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 (412) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +3 -0
  4. data/.github/workflows/ci.yml +148 -0
  5. data/.gitignore +3 -1
  6. data/.rspec +1 -0
  7. data/.rubocop.yml +24 -0
  8. data/.rubocop_todo.yml +80 -270
  9. data/.yardopts +5 -0
  10. data/CHANGELOG.md +63 -0
  11. data/CONTRIBUTING.md +14 -10
  12. data/README.md +292 -0
  13. data/Rakefile +16 -22
  14. data/before_install_linux.sh +22 -32
  15. data/before_install_osx.sh +56 -2
  16. data/ext/RMagick/extconf.rb +100 -94
  17. data/ext/RMagick/rmagick.c +77 -104
  18. data/ext/RMagick/rmagick.h +74 -70
  19. data/ext/RMagick/rmdraw.c +261 -444
  20. data/ext/RMagick/rmenum.c +96 -113
  21. data/ext/RMagick/rmfill.c +46 -77
  22. data/ext/RMagick/rmilist.c +136 -244
  23. data/ext/RMagick/rmimage.c +3395 -4166
  24. data/ext/RMagick/rminfo.c +531 -737
  25. data/ext/RMagick/rmkinfo.c +21 -87
  26. data/ext/RMagick/rmmain.c +405 -245
  27. data/ext/RMagick/rmmontage.c +60 -126
  28. data/ext/RMagick/rmpixel.c +401 -345
  29. data/ext/RMagick/rmstruct.c +62 -88
  30. data/ext/RMagick/rmutil.c +112 -218
  31. data/lib/rmagick/version.rb +1 -1
  32. data/lib/rmagick_internal.rb +128 -77
  33. data/lib/rvg/clippath.rb +2 -1
  34. data/lib/rvg/container.rb +10 -5
  35. data/lib/rvg/describable.rb +1 -1
  36. data/lib/rvg/embellishable.rb +5 -4
  37. data/lib/rvg/misc.rb +15 -12
  38. data/lib/rvg/paint.rb +2 -1
  39. data/lib/rvg/pathdata.rb +12 -11
  40. data/lib/rvg/rvg.rb +8 -4
  41. data/lib/rvg/stylable.rb +9 -7
  42. data/lib/rvg/text.rb +11 -6
  43. data/lib/rvg/transformable.rb +3 -2
  44. data/lib/rvg/units.rb +1 -1
  45. data/rmagick.gemspec +7 -6
  46. metadata +31 -421
  47. data/.appveyor.yml +0 -57
  48. data/.circleci/config.yml +0 -56
  49. data/.ruby-version +0 -1
  50. data/.simplecov +0 -27
  51. data/.travis.yml +0 -64
  52. data/Doxyfile +0 -1514
  53. data/README.textile +0 -259
  54. data/benchmarks/memory/README.md +0 -50
  55. data/benchmarks/memory/image_new.rb +0 -8
  56. data/benchmarks/memory/rmagick.gnuplot +0 -16
  57. data/doc/.cvsignore +0 -1
  58. data/doc/comtasks.html +0 -287
  59. data/doc/constants.html +0 -1581
  60. data/doc/css/doc.css +0 -299
  61. data/doc/css/popup.css +0 -34
  62. data/doc/css/ref.css +0 -67
  63. data/doc/draw.html +0 -3272
  64. data/doc/ex/InitialCoords.rb +0 -22
  65. data/doc/ex/NewCoordSys.rb +0 -30
  66. data/doc/ex/OrigCoordSys.rb +0 -16
  67. data/doc/ex/PreserveAspectRatio.rb +0 -204
  68. data/doc/ex/RotateScale.rb +0 -36
  69. data/doc/ex/Skew.rb +0 -38
  70. data/doc/ex/Use01.rb +0 -15
  71. data/doc/ex/Use02.rb +0 -20
  72. data/doc/ex/Use03.rb +0 -16
  73. data/doc/ex/ViewBox.rb +0 -31
  74. data/doc/ex/adaptive_threshold.rb +0 -9
  75. data/doc/ex/add_noise.rb +0 -16
  76. data/doc/ex/affine.rb +0 -48
  77. data/doc/ex/affine_transform.rb +0 -20
  78. data/doc/ex/arc.rb +0 -49
  79. data/doc/ex/arcpath.rb +0 -32
  80. data/doc/ex/arcs01.rb +0 -28
  81. data/doc/ex/arcs02.rb +0 -59
  82. data/doc/ex/average.rb +0 -15
  83. data/doc/ex/axes.rb +0 -64
  84. data/doc/ex/baseline_shift01.rb +0 -17
  85. data/doc/ex/bilevel_channel.rb +0 -8
  86. data/doc/ex/blur_image.rb +0 -12
  87. data/doc/ex/border.rb +0 -10
  88. data/doc/ex/bounding_box.rb +0 -42
  89. data/doc/ex/cbezier1.rb +0 -41
  90. data/doc/ex/cbezier2.rb +0 -41
  91. data/doc/ex/cbezier3.rb +0 -41
  92. data/doc/ex/cbezier4.rb +0 -42
  93. data/doc/ex/cbezier5.rb +0 -42
  94. data/doc/ex/cbezier6.rb +0 -53
  95. data/doc/ex/channel.rb +0 -25
  96. data/doc/ex/charcoal.rb +0 -12
  97. data/doc/ex/chop.rb +0 -29
  98. data/doc/ex/circle.rb +0 -33
  99. data/doc/ex/circle01.rb +0 -16
  100. data/doc/ex/clip_path.rb +0 -60
  101. data/doc/ex/coalesce.rb +0 -57
  102. data/doc/ex/color_fill_to_border.rb +0 -29
  103. data/doc/ex/color_floodfill.rb +0 -28
  104. data/doc/ex/color_histogram.rb +0 -47
  105. data/doc/ex/color_reset.rb +0 -11
  106. data/doc/ex/colorize.rb +0 -16
  107. data/doc/ex/colors.rb +0 -64
  108. data/doc/ex/compose_mask.rb +0 -22
  109. data/doc/ex/composite.rb +0 -133
  110. data/doc/ex/composite_layers.rb +0 -52
  111. data/doc/ex/composite_tiled.rb +0 -21
  112. data/doc/ex/contrast.rb +0 -36
  113. data/doc/ex/crop.rb +0 -31
  114. data/doc/ex/crop_with_gravity.rb +0 -42
  115. data/doc/ex/cubic01.rb +0 -43
  116. data/doc/ex/cubic02.rb +0 -91
  117. data/doc/ex/cycle_colormap.rb +0 -21
  118. data/doc/ex/dissolve.rb +0 -12
  119. data/doc/ex/drawcomp.rb +0 -41
  120. data/doc/ex/drop_shadow.rb +0 -60
  121. data/doc/ex/edge.rb +0 -11
  122. data/doc/ex/ellipse.rb +0 -45
  123. data/doc/ex/ellipse01.rb +0 -21
  124. data/doc/ex/emboss.rb +0 -11
  125. data/doc/ex/enhance.rb +0 -28
  126. data/doc/ex/equalize.rb +0 -11
  127. data/doc/ex/evenodd.rb +0 -42
  128. data/doc/ex/fill_pattern.rb +0 -23
  129. data/doc/ex/flatten_images.rb +0 -36
  130. data/doc/ex/flip.rb +0 -11
  131. data/doc/ex/flop.rb +0 -11
  132. data/doc/ex/font_styles.rb +0 -32
  133. data/doc/ex/fonts.rb +0 -16
  134. data/doc/ex/frame.rb +0 -12
  135. data/doc/ex/gaussian_blur.rb +0 -11
  136. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  137. data/doc/ex/get_pixels.rb +0 -45
  138. data/doc/ex/get_type_metrics.rb +0 -142
  139. data/doc/ex/gradientfill.rb +0 -27
  140. data/doc/ex/grav.rb +0 -45
  141. data/doc/ex/gravity.rb +0 -78
  142. data/doc/ex/group.rb +0 -26
  143. data/doc/ex/hatchfill.rb +0 -27
  144. data/doc/ex/image.rb +0 -44
  145. data/doc/ex/images/Apple.miff +0 -0
  146. data/doc/ex/images/Ballerina.jpg +0 -0
  147. data/doc/ex/images/Ballerina3.jpg +0 -0
  148. data/doc/ex/images/Button_0.gif +0 -0
  149. data/doc/ex/images/Button_1.gif +0 -0
  150. data/doc/ex/images/Button_2.gif +0 -0
  151. data/doc/ex/images/Button_3.gif +0 -0
  152. data/doc/ex/images/Button_4.gif +0 -0
  153. data/doc/ex/images/Button_5.gif +0 -0
  154. data/doc/ex/images/Button_6.gif +0 -0
  155. data/doc/ex/images/Button_7.gif +0 -0
  156. data/doc/ex/images/Button_8.gif +0 -0
  157. data/doc/ex/images/Button_9.gif +0 -0
  158. data/doc/ex/images/Button_A.gif +0 -0
  159. data/doc/ex/images/Button_B.gif +0 -0
  160. data/doc/ex/images/Button_C.gif +0 -0
  161. data/doc/ex/images/Button_D.gif +0 -0
  162. data/doc/ex/images/Button_E.gif +0 -0
  163. data/doc/ex/images/Button_F.gif +0 -0
  164. data/doc/ex/images/Button_G.gif +0 -0
  165. data/doc/ex/images/Button_H.gif +0 -0
  166. data/doc/ex/images/Button_I.gif +0 -0
  167. data/doc/ex/images/Button_J.gif +0 -0
  168. data/doc/ex/images/Button_K.gif +0 -0
  169. data/doc/ex/images/Button_L.gif +0 -0
  170. data/doc/ex/images/Button_M.gif +0 -0
  171. data/doc/ex/images/Button_N.gif +0 -0
  172. data/doc/ex/images/Button_O.gif +0 -0
  173. data/doc/ex/images/Button_P.gif +0 -0
  174. data/doc/ex/images/Button_Q.gif +0 -0
  175. data/doc/ex/images/Button_R.gif +0 -0
  176. data/doc/ex/images/Button_S.gif +0 -0
  177. data/doc/ex/images/Button_T.gif +0 -0
  178. data/doc/ex/images/Button_U.gif +0 -0
  179. data/doc/ex/images/Button_V.gif +0 -0
  180. data/doc/ex/images/Button_W.gif +0 -0
  181. data/doc/ex/images/Button_X.gif +0 -0
  182. data/doc/ex/images/Button_Y.gif +0 -0
  183. data/doc/ex/images/Button_Z.gif +0 -0
  184. data/doc/ex/images/Cheetah.jpg +0 -0
  185. data/doc/ex/images/Coffee.png +0 -0
  186. data/doc/ex/images/Flower_Hat.jpg +0 -0
  187. data/doc/ex/images/Gold_Statue.jpg +0 -0
  188. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  189. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  190. data/doc/ex/images/Leaf.miff +0 -0
  191. data/doc/ex/images/No.png +0 -0
  192. data/doc/ex/images/Polynesia.jpg +0 -0
  193. data/doc/ex/images/Red_Rocks.jpg +0 -0
  194. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  195. data/doc/ex/images/Shorts.jpg +0 -0
  196. data/doc/ex/images/Snake.png +0 -0
  197. data/doc/ex/images/Violin.jpg +0 -0
  198. data/doc/ex/images/Yellow_Rose.miff +0 -0
  199. data/doc/ex/images/big-duck.gif +0 -0
  200. data/doc/ex/images/duck.gif +0 -0
  201. data/doc/ex/images/duck0.gif +0 -0
  202. data/doc/ex/images/duck1.gif +0 -0
  203. data/doc/ex/images/duck10.gif +0 -0
  204. data/doc/ex/images/duck11.gif +0 -0
  205. data/doc/ex/images/duck12.gif +0 -0
  206. data/doc/ex/images/duck13.gif +0 -0
  207. data/doc/ex/images/duck14.gif +0 -0
  208. data/doc/ex/images/duck15.gif +0 -0
  209. data/doc/ex/images/duck2.gif +0 -0
  210. data/doc/ex/images/duck3.gif +0 -0
  211. data/doc/ex/images/duck4.gif +0 -0
  212. data/doc/ex/images/duck5.gif +0 -0
  213. data/doc/ex/images/duck6.gif +0 -0
  214. data/doc/ex/images/duck7.gif +0 -0
  215. data/doc/ex/images/duck8.gif +0 -0
  216. data/doc/ex/images/duck9.gif +0 -0
  217. data/doc/ex/images/graydient230x6.gif +0 -0
  218. data/doc/ex/images/image_with_profile.jpg +0 -0
  219. data/doc/ex/images/logo400x83.gif +0 -0
  220. data/doc/ex/images/model.miff +0 -0
  221. data/doc/ex/images/notimplemented.gif +0 -0
  222. data/doc/ex/images/smile.miff +0 -0
  223. data/doc/ex/images/spin.gif +0 -0
  224. data/doc/ex/implode.rb +0 -34
  225. data/doc/ex/level.rb +0 -11
  226. data/doc/ex/level_colors.rb +0 -11
  227. data/doc/ex/line.rb +0 -41
  228. data/doc/ex/line01.rb +0 -21
  229. data/doc/ex/mask.rb +0 -35
  230. data/doc/ex/matte_fill_to_border.rb +0 -39
  231. data/doc/ex/matte_floodfill.rb +0 -32
  232. data/doc/ex/matte_replace.rb +0 -39
  233. data/doc/ex/median_filter.rb +0 -28
  234. data/doc/ex/modulate.rb +0 -11
  235. data/doc/ex/mono.rb +0 -23
  236. data/doc/ex/morph.rb +0 -25
  237. data/doc/ex/mosaic.rb +0 -37
  238. data/doc/ex/motion_blur.rb +0 -11
  239. data/doc/ex/negate.rb +0 -11
  240. data/doc/ex/negate_channel.rb +0 -9
  241. data/doc/ex/nested_rvg.rb +0 -21
  242. data/doc/ex/nonzero.rb +0 -42
  243. data/doc/ex/normalize.rb +0 -11
  244. data/doc/ex/oil_paint.rb +0 -11
  245. data/doc/ex/opacity.rb +0 -37
  246. data/doc/ex/ordered_dither.rb +0 -11
  247. data/doc/ex/path.rb +0 -63
  248. data/doc/ex/pattern1.rb +0 -25
  249. data/doc/ex/pattern2.rb +0 -26
  250. data/doc/ex/polaroid.rb +0 -26
  251. data/doc/ex/polygon.rb +0 -23
  252. data/doc/ex/polygon01.rb +0 -21
  253. data/doc/ex/polyline.rb +0 -22
  254. data/doc/ex/polyline01.rb +0 -21
  255. data/doc/ex/posterize.rb +0 -8
  256. data/doc/ex/preview.rb +0 -8
  257. data/doc/ex/qbezierpath.rb +0 -52
  258. data/doc/ex/quad01.rb +0 -34
  259. data/doc/ex/quantize-m.rb +0 -25
  260. data/doc/ex/radial_blur.rb +0 -9
  261. data/doc/ex/raise.rb +0 -8
  262. data/doc/ex/random_threshold_channel.rb +0 -13
  263. data/doc/ex/rect01.rb +0 -14
  264. data/doc/ex/rect02.rb +0 -20
  265. data/doc/ex/rectangle.rb +0 -34
  266. data/doc/ex/reduce_noise.rb +0 -28
  267. data/doc/ex/remap.rb +0 -11
  268. data/doc/ex/remap_images.rb +0 -19
  269. data/doc/ex/resize_to_fill.rb +0 -8
  270. data/doc/ex/resize_to_fit.rb +0 -8
  271. data/doc/ex/roll.rb +0 -9
  272. data/doc/ex/rotate.rb +0 -44
  273. data/doc/ex/rotate_f.rb +0 -14
  274. data/doc/ex/roundrect.rb +0 -33
  275. data/doc/ex/rubyname.rb +0 -30
  276. data/doc/ex/rvg_clippath.rb +0 -12
  277. data/doc/ex/rvg_linecap.rb +0 -42
  278. data/doc/ex/rvg_linejoin.rb +0 -40
  279. data/doc/ex/rvg_opacity.rb +0 -18
  280. data/doc/ex/rvg_pattern.rb +0 -26
  281. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  282. data/doc/ex/segment.rb +0 -11
  283. data/doc/ex/sepiatone.rb +0 -7
  284. data/doc/ex/shade.rb +0 -11
  285. data/doc/ex/shadow.rb +0 -30
  286. data/doc/ex/shave.rb +0 -15
  287. data/doc/ex/shear.rb +0 -10
  288. data/doc/ex/sketch.rb +0 -17
  289. data/doc/ex/skewx.rb +0 -51
  290. data/doc/ex/skewy.rb +0 -47
  291. data/doc/ex/smile.rb +0 -126
  292. data/doc/ex/solarize.rb +0 -11
  293. data/doc/ex/sparse_color.rb +0 -55
  294. data/doc/ex/splice.rb +0 -8
  295. data/doc/ex/spread.rb +0 -11
  296. data/doc/ex/stegano.rb +0 -54
  297. data/doc/ex/stroke_dasharray.rb +0 -42
  298. data/doc/ex/stroke_fill.rb +0 -10
  299. data/doc/ex/stroke_linecap.rb +0 -44
  300. data/doc/ex/stroke_linejoin.rb +0 -48
  301. data/doc/ex/stroke_width.rb +0 -49
  302. data/doc/ex/swirl.rb +0 -17
  303. data/doc/ex/text.rb +0 -37
  304. data/doc/ex/text01.rb +0 -16
  305. data/doc/ex/text_align.rb +0 -36
  306. data/doc/ex/text_antialias.rb +0 -37
  307. data/doc/ex/text_styles.rb +0 -19
  308. data/doc/ex/text_undercolor.rb +0 -28
  309. data/doc/ex/texture_fill_to_border.rb +0 -34
  310. data/doc/ex/texture_floodfill.rb +0 -32
  311. data/doc/ex/texturefill.rb +0 -24
  312. data/doc/ex/threshold.rb +0 -13
  313. data/doc/ex/to_blob.rb +0 -13
  314. data/doc/ex/translate.rb +0 -39
  315. data/doc/ex/transparent.rb +0 -38
  316. data/doc/ex/transpose.rb +0 -9
  317. data/doc/ex/transverse.rb +0 -9
  318. data/doc/ex/tref01.rb +0 -24
  319. data/doc/ex/triangle01.rb +0 -15
  320. data/doc/ex/trim.rb +0 -23
  321. data/doc/ex/tspan01.rb +0 -17
  322. data/doc/ex/tspan02.rb +0 -17
  323. data/doc/ex/tspan03.rb +0 -19
  324. data/doc/ex/unsharp_mask.rb +0 -28
  325. data/doc/ex/viewex.rb +0 -33
  326. data/doc/ex/vignette.rb +0 -12
  327. data/doc/ex/watermark.rb +0 -27
  328. data/doc/ex/wave.rb +0 -9
  329. data/doc/ex/wet_floor.rb +0 -58
  330. data/doc/ex/writing_mode01.rb +0 -26
  331. data/doc/ex/writing_mode02.rb +0 -26
  332. data/doc/ilist.html +0 -2056
  333. data/doc/image1.html +0 -4680
  334. data/doc/image2.html +0 -3665
  335. data/doc/image3.html +0 -4522
  336. data/doc/imageattrs.html +0 -1638
  337. data/doc/imusage.html +0 -514
  338. data/doc/index.html +0 -416
  339. data/doc/info.html +0 -1499
  340. data/doc/magick.html +0 -570
  341. data/doc/optequiv.html +0 -2435
  342. data/doc/rvg.html +0 -975
  343. data/doc/rvgclip.html +0 -248
  344. data/doc/rvggroup.html +0 -305
  345. data/doc/rvgimage.html +0 -289
  346. data/doc/rvgpattern.html +0 -475
  347. data/doc/rvgshape.html +0 -406
  348. data/doc/rvgstyle.html +0 -270
  349. data/doc/rvgtext.html +0 -465
  350. data/doc/rvgtspan.html +0 -238
  351. data/doc/rvgtut.html +0 -530
  352. data/doc/rvguse.html +0 -145
  353. data/doc/rvgxform.html +0 -294
  354. data/doc/scripts/doc.js +0 -22
  355. data/doc/scripts/stripeTables.js +0 -23
  356. data/doc/struct.html +0 -1339
  357. data/doc/usage.html +0 -1621
  358. data/examples/constitute.rb +0 -7
  359. data/examples/crop_with_gravity.rb +0 -43
  360. data/examples/demo.rb +0 -323
  361. data/examples/describe.rb +0 -41
  362. data/examples/find_similar_region.rb +0 -34
  363. data/examples/histogram.rb +0 -312
  364. data/examples/identify.rb +0 -174
  365. data/examples/image_opacity.rb +0 -28
  366. data/examples/import_export.rb +0 -31
  367. data/examples/pattern_fill.rb +0 -37
  368. data/examples/rotating_text.rb +0 -45
  369. data/examples/spinner.rb +0 -49
  370. data/examples/thumbnail.rb +0 -64
  371. data/examples/vignette.rb +0 -78
  372. data/spec/rmagick/ImageList1_spec.rb +0 -24
  373. data/spec/rmagick/draw_spec.rb +0 -155
  374. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  375. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  376. data/spec/rmagick/image/composite_spec.rb +0 -72
  377. data/spec/rmagick/image/constitute_spec.rb +0 -13
  378. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  379. data/spec/rmagick/image/dissolve_spec.rb +0 -54
  380. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  381. data/spec/rmagick/image/ping_spec.rb +0 -12
  382. data/spec/rmagick/image/properties_spec.rb +0 -27
  383. data/spec/rmagick/image/read_spec.rb +0 -28
  384. data/spec/spec_helper.rb +0 -9
  385. data/spec/support/issue_200/app.rb +0 -8
  386. data/test/Draw.rb +0 -351
  387. data/test/Enum.rb +0 -228
  388. data/test/Fill.rb +0 -93
  389. data/test/Image1.rb +0 -606
  390. data/test/Image2.rb +0 -1408
  391. data/test/Image3.rb +0 -1086
  392. data/test/ImageList1.rb +0 -858
  393. data/test/ImageList2.rb +0 -375
  394. data/test/Image_attributes.rb +0 -635
  395. data/test/Import_Export.rb +0 -111
  396. data/test/Info.rb +0 -436
  397. data/test/KernelInfo.rb +0 -59
  398. data/test/Magick.rb +0 -311
  399. data/test/Pixel.rb +0 -259
  400. data/test/PolaroidOptions.rb +0 -23
  401. data/test/Preview.rb +0 -26
  402. data/test/Struct.rb +0 -45
  403. data/test/appearance/Montage.rb +0 -26
  404. data/test/appearance/appearance_assertion.rb +0 -13
  405. data/test/appearance/expected/montage_border_color.jpg +0 -0
  406. data/test/cmyk.icm +0 -0
  407. data/test/lib/internal/Draw.rb +0 -811
  408. data/test/lib/internal/Geometry.rb +0 -98
  409. data/test/lib/internal/Magick.rb +0 -40
  410. data/test/srgb.icm +0 -0
  411. data/test/test_all_basic.rb +0 -49
  412. data/test/tmpnam_test.rb +0 -50
@@ -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
@@ -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')
@@ -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
@@ -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')
@@ -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
@@ -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
@@ -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')
@@ -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')
@@ -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
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#enhance method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- img = img.add_noise(Magick::UniformNoise)
8
-
9
- eimg = img.enhance
10
-
11
- # Zoom in so we can see the change
12
- img.resize!(3)
13
- eimg.resize!(3)
14
-
15
- # Make a before-and-after composite
16
- eimg.crop!(Magick::EastGravity, eimg.columns / 2, eimg.rows)
17
- img = img.composite(eimg, Magick::EastGravity, Magick::OverCompositeOp)
18
-
19
- # Draw a black line between the before and after parts.
20
- line = Magick::Draw.new
21
- line.line(img.columns / 2, 0, img.columns / 2, img.rows)
22
- line.draw(img)
23
-
24
- # Crop everything but the face.
25
- img.crop!(Magick::CenterGravity, 250, 200)
26
-
27
- img.write('enhance.jpg')
28
- exit