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,16 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#add_noise method
5
- NOISE_TYPES = [Magick::UniformNoise, Magick::GaussianNoise,
6
- Magick::MultiplicativeGaussianNoise,
7
- Magick::ImpulseNoise, Magick::LaplacianNoise,
8
- Magick::PoissonNoise]
9
-
10
- img = Magick::Image.read('images/Flower_Hat.jpg').first
11
-
12
- NOISE_TYPES.each do |noise|
13
- copy = img.add_noise(noise)
14
- copy.write "add_noise_#{noise}.jpg"
15
- end
16
- exit
@@ -1,48 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the affine primitive. Transform the
5
- # coordinate space to put the origin in the lower
6
- # left corner.
7
-
8
- imgl = Magick::ImageList.new
9
- imgl.new_image 200, 200, Magick::HatchFill.new('white', 'lightcyan2')
10
-
11
- gc = Magick::Draw.new
12
-
13
- max_x = imgl.columns
14
- max_y = imgl.rows
15
-
16
- # Translate the y origin to the bottom of the window.
17
- # Invert the y points by scaling by -1. Combine the
18
- # two operations using the affine method. That is, the
19
- # affine method is equivalent to:
20
- # gc.translate 0, max_y
21
- # gc.scale 1, -1
22
- gc.affine(1, 0, 0, -1, 0, max_y)
23
- gc.stroke('gray50')
24
- gc.fill('gray50')
25
- gc.stroke_width(1)
26
-
27
- # Draw up-pointing arrow.
28
- gc.polyline(10, 10, 10, max_y - 10, 5, max_y - 15, 15, max_y - 15, 10, max_y - 10)
29
-
30
- # Draw right-pointing arrow
31
- gc.polyline(10, 10, max_x - 10, 10, max_x - 15, 5, max_x - 15, 15, max_x - 10, 10)
32
-
33
- gc.draw(imgl)
34
-
35
- # Add labels. Use a different graphics context with a "normal"
36
- # coordinate system so the text isn't inverted.
37
- text_gc = Magick::Draw.new
38
- text_gc.pointsize(14)
39
- text_gc.font_weight(Magick::NormalWeight)
40
- text_gc.stroke('transparent')
41
- text_gc.text(15, max_y - 15, "'0,0'")
42
- text_gc.text(max_x - 20, max_y - 16, "'+x'")
43
- text_gc.text(12, 15, "'+y'")
44
- text_gc.draw(imgl)
45
-
46
- imgl.border!(1, 1, 'lightcyan2')
47
-
48
- imgl.write('affine.gif')
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#affine_transform method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- # Construct a simple affine matrix
9
- flipflop = Magick::AffineMatrix.new(1, Math::PI / 6, Math::PI / 6, 1, 0, 0)
10
-
11
- # Apply the transform
12
- img = img.affine_transform(flipflop)
13
-
14
- # Scale the image, make the background transparent,
15
- # and write it to a JPEG file.
16
- img.scale!(250.0 / img.rows)
17
- img = img.matte_replace(0, 0)
18
- img.write('affine_transform.jpg')
19
-
20
- exit
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- i = Magick::Image.new(300, 220, Magick::HatchFill.new('white', 'lightcyan2'))
5
- gc = Magick::Draw.new
6
-
7
- # Draw the border rectangle.
8
- gc.fill_opacity(0)
9
- gc.stroke_width(1)
10
- gc.stroke('gray50')
11
- gc.rectangle(40, 50, 250, 180)
12
-
13
- # Draw the circles around the rectangle corners and
14
- # arc endpoints. All the circles have a 3-pixel radius.
15
- gc.circle(40, 50, 40 + 3, 50)
16
- gc.circle(250, 180, 250 + 3, 180)
17
- gc.circle(250, 114, 250 + 3, 114)
18
- gc.circle(146, 50, 146 + 3, 50)
19
-
20
- # Annotate
21
- gc.font_weight(Magick::NormalWeight)
22
- gc.font_style(Magick::NormalStyle)
23
- gc.stroke('transparent')
24
- gc.fill('black')
25
- gc.fill_opacity(1)
26
-
27
- # xMagick recognizes the braces as delimiters.
28
- gc.gravity(Magick::NorthWestGravity)
29
- gc.text(42, 37, '{40, 50}')
30
- gc.text(188, 108, '{0 degrees}')
31
-
32
- gc.gravity(Magick::SouthEastGravity)
33
- gc.text(300 - 250, 220 - 195, '{250, 180}')
34
-
35
- gc.gravity(Magick::NorthGravity)
36
- gc.text(0, 67, '{270 degrees}')
37
-
38
- # Draw the arc
39
- gc.fill_opacity(0)
40
- gc.stroke('red').stroke_width(3)
41
- gc.arc(40, 50, 250, 180, 0, 270)
42
-
43
- # Draw on the canvas
44
- gc.draw(i)
45
-
46
- i.border!(1, 1, 'lightcyan2')
47
-
48
- # i.display
49
- i.write('arc.gif')
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the "path" drawing primitive.
5
-
6
- imgl = Magick::ImageList.new
7
- imgl.new_image(450, 200, Magick::HatchFill.new('white', 'lightcyan2'))
8
-
9
- gc = Magick::Draw.new
10
-
11
- # Draw "pie chart"
12
- gc.fill('red')
13
- gc.stroke('blue')
14
- gc.stroke_width(2)
15
- gc.path('M110,100 h-75 a75,75 0 1,0 75,-75 z')
16
- gc.fill('yellow')
17
- gc.path('M97.5,87.5 v-75 a75,75 0 0,0 -75,75 z')
18
-
19
- # Draw wiggly line
20
- gc.fill_opacity(0)
21
- gc.stroke('#00cd00')
22
- gc.stroke_width(3)
23
- gc.path('M200,175 l 25,-12.5 ' \
24
- 'a12.5,12.5 -15 0,1 25,-12.5 l 25,-12.5 ' \
25
- 'a12.5,25 -15 0,1 25,-12.5 l 25,-12.5 ' \
26
- 'a12.5,37.5 -15 0,1 25,-12.5 l 25,-12.5 ' \
27
- 'a12.5,50 -15 0,1 25,-12.5 l 25,-12.5')
28
-
29
- gc.draw imgl
30
- imgl.border!(1, 1, 'lightcyan2')
31
-
32
- imgl.write('arcpath.gif')
@@ -1,28 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(12.cm, 5.25.cm).viewbox(0, 0, 1200, 400) do |canvas|
6
- canvas.title = 'Example arcs01 - arc commands in path data'
7
- canvas.desc = <<-END_DESC
8
- Picture of a pie chart with two pie wedges and a picture
9
- of a line with arc blips
10
- END_DESC
11
- canvas.background_fill = 'white'
12
- canvas.rect(1196, 395, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 1)
13
-
14
- canvas.path('M300,200 h-150 a150,150 0 1,0 150,-150 z')
15
- .styles(fill: 'red', stroke: 'blue', stroke_width: 5)
16
- canvas.path('M275,175 v-150 a150,150 0 0,0 -150,150 z')
17
- .styles(fill: 'yellow', stroke: 'blue', stroke_width: 5)
18
- canvas.path(<<-END_PATH
19
- M600,350 l 50,-25
20
- a25,25 -30 0,1 50,-25 l 50,-25
21
- a25,50 -30 0,1 50,-25 l 50,-25
22
- a25,75 -30 0,1 50,-25 l 50,-25
23
- a25,100 -30 0,1 50,-25 l 50,-25
24
- END_PATH
25
- ).styles(fill: 'none', stroke: 'red', stroke_width: 5)
26
- end
27
-
28
- rvg.draw.write('arcs01.gif')
@@ -1,59 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- PathStyles = { fill: 'none', stroke: 'red', stroke_width: 6 }
6
- BaseEllipsesStyles = { font_size: 20, font_family: 'Verdana', fill: 'none', stroke: '#888', stroke_width: 2 }
7
-
8
- rvg = Magick::RVG.new(12.cm, 5.25.cm).viewbox(0, 0, 1200, 525) do |canvas|
9
- canvas.title = 'Example arcs02 - arc options in paths'
10
- canvas.desc = <<-END_DESC
11
- Pictures showing the result of setting
12
- large-arc-flag and sweep-flag to the four
13
- possible combinations of 0 and 1.
14
- END_DESC
15
- canvas.background_fill = 'white'
16
-
17
- base_ellipses = Magick::RVG::Group.new.styles(BaseEllipsesStyles) do |base|
18
- base.ellipse(100, 50, 125, 125)
19
- base.ellipse(100, 50, 225, 75)
20
- base.text(35, 70, 'Arc start')
21
- base.text(225, 145, 'Arc end')
22
- end
23
-
24
- canvas.rect(1196, 522, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 1)
25
-
26
- canvas.g.styles(font_size: 30, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal') do |grp|
27
- grp.use(base_ellipses)
28
-
29
- grp.g.translate(400, 0) do |grp2|
30
- grp2.text(50, 210, 'large-arc-flag=0')
31
- grp2.text(50, 250, 'sweep-flag=0')
32
- grp2.use(base_ellipses)
33
- grp2.path('M 125,75 a100,50 0 0,0 100,50').styles(PathStyles)
34
- end
35
-
36
- grp.g.translate(800, 0) do |grp2|
37
- grp2.text(50, 210, 'large-arc-flag=0')
38
- grp2.text(50, 250, 'sweep-flag=1')
39
- grp2.use(base_ellipses)
40
- grp2.path('M 125,75 a100,50 0 0,1 100,50').styles(PathStyles)
41
- end
42
-
43
- grp.g.translate(400, 250) do |grp2|
44
- grp2.text(50, 210, 'large-arc-flag=1')
45
- grp2.text(50, 250, 'sweep-flag=0')
46
- grp2.use(base_ellipses)
47
- grp2.path('M 125,75 a100,50 0 1,0 100,50').styles(PathStyles)
48
- end
49
-
50
- grp.g.translate(800, 250) do |grp2|
51
- grp2.text(50, 210, 'large-arc-flag=1')
52
- grp2.text(50, 250, 'sweep-flag=1')
53
- grp2.use(base_ellipses)
54
- grp2.path('M 125,75 a100,50 0 1,1 100,50').styles(PathStyles)
55
- end
56
- end
57
- end
58
-
59
- rvg.draw.write('arcs02.gif')
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- # Demonstrate ImageList#average method
3
- require 'rmagick'
4
-
5
- images = Magick::ImageList.new('images/Button_A.gif', 'images/Button_B.gif', 'images/Button_C.gif')
6
-
7
- group = images.append false
8
- group.compression = Magick::LZWCompression
9
- group.write 'average_before.gif'
10
-
11
- average_image = images.average
12
-
13
- average_image.compression = Magick::LZWCompression
14
- average_image.write 'average_after.gif'
15
- exit
@@ -1,64 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- # Demonstrate the use of RMagick's Draw class
6
- # and show the default coordinate system.
7
-
8
- # Create a canvas to draw on. Use the HatchFill class to
9
- # cross-hatch the background with light gray lines every 10 pixels.
10
- canvas = Magick::ImageList.new
11
- canvas.new_image(250, 250, Magick::HatchFill.new('white', 'gray90'))
12
-
13
- # Draw a border around the edges of the canvas.
14
- border = Magick::Draw.new
15
- border.stroke('thistle')
16
- border.fill_opacity(0)
17
- border.rectangle(0, 0, canvas.columns - 1, canvas.rows - 1)
18
- border.draw(canvas)
19
-
20
- # Draw gold axes with arrow-heads.
21
- axes = Magick::Draw.new
22
- axes.fill_opacity(0)
23
- axes.stroke('gold3')
24
- axes.stroke_width(4)
25
- axes.stroke_linecap('round')
26
- axes.stroke_linejoin('round')
27
- axes.polyline(18, canvas.rows - 10, 10, canvas.rows - 3, 3, canvas.rows - 10,
28
- 10, canvas.rows - 10, 10, 10, canvas.columns - 10, 10,
29
- canvas.columns - 10, 3, canvas.columns - 3, 10, canvas.columns - 10, 18)
30
- axes.draw(canvas)
31
-
32
- # Draw a red circle to show the direction of rotation.
33
- # Make it slightly transparent so the hatching will show through.
34
- circle = Magick::Draw.new
35
- circle.stroke('tomato')
36
- circle.fill_opacity(0)
37
- circle.stroke_opacity(0.75)
38
- circle.stroke_width(6)
39
- circle.stroke_linecap('round')
40
- circle.stroke_linejoin('round')
41
- circle.ellipse(canvas.rows / 2, canvas.columns / 2, 80, 80, 0, 315)
42
- circle.polyline(180, 70, 173, 78, 190, 78, 191, 62)
43
- circle.draw(canvas)
44
-
45
- # Label the axes and the circle.
46
- labels = Magick::Draw.new
47
- labels.font_weight(Magick::NormalWeight)
48
- labels.fill('black')
49
- labels.stroke('transparent')
50
- labels.font_style(Magick::ItalicStyle)
51
- labels.pointsize(14)
52
- labels.gravity(Magick::NorthWestGravity)
53
- labels.text(20, 30, "'0,0'")
54
- labels.gravity(Magick::NorthEastGravity)
55
- labels.text(20, 30, "'+x'")
56
- labels.gravity(Magick::SouthWestGravity)
57
- labels.text(20, 20, "'+y'")
58
- labels.gravity(Magick::CenterGravity)
59
- labels.text(0, 0, 'Rotation')
60
- labels.draw(canvas)
61
-
62
- # canvas.display
63
- canvas.write('axes.gif')
64
- exit
@@ -1,17 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(150, 100) do |canvas|
4
- canvas.background_fill = 'white'
5
- canvas.text(40, 35).styles(font_weight: 'bold', font_size: 28) do |txt|
6
- txt.tspan('H')
7
- txt.tspan('2').styles(font_size: 20, fill: 'red', baseline_shift: 'sub')
8
- txt.tspan('O')
9
- end
10
- canvas.text(40, 80).styles(font_style: 'italic', font_size: 28) do |txt|
11
- txt.tspan('e=mc')
12
- txt.tspan('2').styles(font_size: 20, fill: 'red', baseline_shift: 'super')
13
- end
14
- canvas.rect(149, 99).styles(fill: 'none', stroke: 'blue')
15
- end
16
-
17
- rvg.draw.write('baseline_shift01.gif')
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.read('images/Flower_Hat.jpg').first
6
- result = img.bilevel_channel(2 * Magick::QuantumRange / 3, Magick::RedChannel)
7
- result.write('bilevel_channel.jpg')
8
- exit
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#blur_image method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- # Make a blurry copy.
9
- img = img.blur_image(0.0, 2.5)
10
-
11
- img.write('blur_image.jpg')
12
- exit
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#border method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img.border!(10, 10, 'rgb(255,110,140)')
9
- img.write('border.jpg')
10
- exit
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- img = Magick::Image.new(200, 200) { self.background_color = '#ffffcc' }
5
-
6
- # Draw a blue circle.
7
- gc = Magick::Draw.new
8
- gc.stroke_width(5)
9
- gc.stroke('blue')
10
- gc.fill_opacity(0)
11
- gc.circle(100, 100, 100, 150)
12
- gc.draw(img)
13
-
14
- # Get the bounding box. Use the values to draw
15
- # a gray square surrounding the circle. Highlight
16
- # the corners with tiny red circles.
17
-
18
- bb = img.bounding_box
19
- gc = Magick::Draw.new
20
- gc.stroke('gray50')
21
- gc.fill_opacity(0)
22
- gc.rectangle(bb.x, bb.y, bb.x + bb.width, bb.y + bb.height)
23
- gc.stroke('red')
24
- gc.circle(bb.x, bb.y, bb.x + 2, bb.y + 2)
25
- gc.circle(bb.x + bb.width, bb.y, bb.x + bb.width + 2, bb.y + 2)
26
- gc.circle(bb.x, bb.y + bb.height, bb.x + 2, bb.y + bb.height + 2)
27
- gc.circle(bb.x + bb.width, bb.y + bb.height, bb.x + bb.width + 2, bb.y + bb.height + 2)
28
-
29
- gc.fill('black')
30
- gc.stroke('transparent')
31
- gc.font_weight(Magick::NormalWeight)
32
- gc.font_style(Magick::NormalStyle)
33
- gc.pointsize(9)
34
- gc.text(bb.x - 15, bb.y - 5, "\'#{bb.x},#{bb.y}\'")
35
- gc.text(bb.x + bb.width - 15, bb.y - 5, "\'#{bb.x + bb.width},#{bb.y}\'")
36
- gc.text(bb.x - 15, bb.y + bb.height + 15, "\'#{bb.x},#{bb.y + bb.height}\'")
37
- gc.text(bb.x + bb.width - 15, bb.y + bb.height + 15, "\'#{bb.x + bb.width},#{bb.y + bb.height}\'")
38
-
39
- gc.draw(img)
40
-
41
- img.write('bounding_box.gif')
42
- exit
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(390, 140, Magick::HatchFill.new('white', 'lightcyan2'))
6
- gc = Magick::Draw.new
7
-
8
- # Draw Bezier curve
9
- gc.stroke('red')
10
- gc.stroke_width(2)
11
- gc.fill_opacity(0)
12
- gc.bezier(20, 120, 20, 20, 320, 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, 20, 20)
22
- gc.line(320, 120, 320, 20)
23
- gc.fill_opacity(1)
24
- gc.fill('gray50')
25
- gc.circle(20, 20, 23, 23)
26
- gc.circle(320, 20, 323, 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(27, 120, "'20,120'")
34
- gc.text(27, 20, "'20,20'")
35
- gc.text(327, 120, "'320,120'")
36
- gc.text(327, 20, "'320,20'")
37
- gc.draw(imgl)
38
-
39
- imgl.border!(1, 1, 'lightcyan2')
40
- imgl.write('cbezier1.gif')
41
- exit(0)