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,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#normalize method
5
-
6
- img = Magick::Image.read('images/Hot_Air_Balloons.jpg').first
7
-
8
- img = img.normalize
9
-
10
- img.write('normalize.jpg')
11
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#oil_paint method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.oil_paint
9
-
10
- img.write('oil_paint.jpg')
11
- exit
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- canvas = Magick::Image.new(260, 125)
5
- gc = Magick::Draw.new
6
- gc.fill('black')
7
- gc.rectangle(10, 20, 250, 90)
8
-
9
- gc.stroke('blue')
10
- gc.fill('yellow')
11
- gc.stroke_width(10)
12
-
13
- gc.opacity('25%')
14
- gc.roundrectangle(20, 20, 60, 90, 5, 5)
15
-
16
- gc.opacity('50%')
17
- gc.roundrectangle(80, 20, 120, 90, 5, 5)
18
-
19
- gc.opacity(0.75)
20
- gc.roundrectangle(140, 20, 180, 90, 5, 5)
21
-
22
- gc.opacity(1)
23
- gc.roundrectangle(200, 20, 240, 90, 5, 5)
24
-
25
- gc.font_weight(Magick::NormalWeight)
26
- gc.font_style(Magick::NormalStyle)
27
- gc.stroke('transparent')
28
- gc.fill('black')
29
- gc.gravity(Magick::SouthGravity)
30
- gc.text(-90, 15, '"25%"')
31
- gc.text(-30, 15, '"50%"')
32
- gc.text(30, 15, '"75%"')
33
- gc.text(90, 15, '"100%"')
34
-
35
- gc.draw(canvas)
36
- canvas.write('opacity.png')
37
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#ordered_dither method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.ordered_dither
9
-
10
- img.write('ordered_dither.jpg')
11
- exit
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(390, 240, Magick::HatchFill.new('white', 'lightcyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- # Draw path
10
- gc.fill_opacity 0
11
- gc.stroke 'red'
12
- gc.stroke_width 3
13
- gc.path 'M20,120 C20,20 170,20 170,120 S320,220 320,120'
14
-
15
- # Annotate
16
- # Show end points
17
- gc.fill_opacity 0
18
- gc.stroke 'gray50'
19
- gc.stroke_width 1
20
- gc.circle 20, 120, 23, 123
21
- gc.circle 170, 120, 173, 123
22
- gc.circle 320, 120, 323, 123
23
-
24
- # Show control points
25
- gc.fill_opacity 1
26
- gc.circle 20, 20, 23, 23
27
- gc.circle 170, 20, 173, 23
28
- gc.circle 320, 220, 323, 223
29
-
30
- # Show connector lines
31
- gc.line 20, 120, 20, 20
32
- gc.line 170, 20, 170, 220
33
- gc.line 320, 220, 320, 120
34
-
35
- # Show auto control point
36
- gc.fill_opacity 0
37
- gc.stroke 'blue'
38
- gc.stroke_width 3
39
- gc.circle 170, 220, 173, 223
40
-
41
- # Add labels
42
- gc.font_weight Magick::NormalWeight
43
- gc.font_style Magick::NormalStyle
44
- gc.stroke 'none' # unset stroke color
45
- gc.fill 'black'
46
-
47
- # Add end point labels
48
- gc.text 30, 125, "'20,120'"
49
- gc.text 180, 125, "'170,120'"
50
- gc.text 330, 125, "'320,120'"
51
-
52
- # Add control point labels
53
- gc.text 30, 25, "'20,20'"
54
- gc.text 180, 25, "'170,20'"
55
- gc.text 330, 225, "'320,220'"
56
-
57
- # Add auto control point label
58
- gc.text 180, 225, "'auto ctl point'"
59
-
60
- gc.draw imgl
61
-
62
- imgl.border!(1, 1, 'lightcyan2')
63
- imgl.write 'path.gif'
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- gc = Magick::Draw.new
6
- gc.pattern('triangles', 0, 0, 16, 16) do
7
- gc.fill('darkblue')
8
- gc.rectangle(0, 0, 16, 16)
9
- gc.fill('yellow')
10
- gc.stroke('red')
11
- gc.polygon(0, 0, 8, 16, 16, 0, 0, 0)
12
- end
13
-
14
- gc.stroke('triangles')
15
- gc.stroke_width(16)
16
- gc.fill('none')
17
- gc.ellipse(150, 75, 130, 60, 0, 360)
18
-
19
- img = Magick::Image.new(300, 150, Magick::HatchFill.new('white', 'lightcyan2', 8))
20
- gc.draw(img)
21
-
22
- img.border!(1, 1, 'lightcyan2')
23
-
24
- img.write('pattern1.gif')
25
- exit
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- hat = Magick::Image.read('images/Flower_Hat.jpg').first
6
- hat.resize!(0.25)
7
-
8
- # Construct a pattern using the hat image
9
- gc = Magick::Draw.new
10
- gc.pattern('hat', 0, 0, hat.columns, hat.rows) do
11
- gc.composite(0, 0, 0, 0, hat)
12
- end
13
-
14
- # Set the fill to the hat "pattern." Draw an ellipse
15
- gc.fill('hat')
16
- gc.ellipse(150, 75, 140, 70, 0, 360)
17
-
18
- # Create a canvas to draw on
19
- img = Magick::Image.new(300, 150, Magick::HatchFill.new('white', 'lightcyan2', 8))
20
-
21
- # Draw the ellipse using the fill
22
- gc.draw(img)
23
-
24
- img.border!(1, 1, 'lightcyan2')
25
- img.write('pattern2.gif')
26
- exit
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
- require 'date'
4
-
5
- # Demonstrate the Image#polaroid method
6
-
7
- img = Magick::Image.read('images/Flower_Hat.jpg').first
8
- img[:Caption] = "\nLosha\n" + Date.today.to_s
9
-
10
- begin
11
- picture = img.polaroid do
12
- self.font_weight = Magick::NormalWeight
13
- self.font_style = Magick::NormalStyle
14
- self.gravity = Magick::CenterGravity
15
- self.border_color = '#f0f0f8'
16
- end
17
-
18
- # Composite it on a white background so the result is opaque.
19
- background = Magick::Image.new(picture.columns, picture.rows)
20
- result = background.composite(picture, Magick::CenterGravity, Magick::OverCompositeOp)
21
- rescue NotImplementedError
22
- result = Magick::Image.read('images/notimplemented.gif').first
23
- result.resize!(img.columns, img.rows)
24
- end
25
-
26
- result.write('polaroid.jpg')
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(290, 200, Magick::HatchFill.new('white', 'lightcyan2'))
6
-
7
- gc = Magick::Draw.new
8
- gc.stroke('blue').stroke_width(3)
9
-
10
- # Draw red 5-pointed star
11
- gc.fill('red')
12
- gc.polygon(75, 37.5, 89.5, 80.5, 134.5, 80.5, 98.5, 107.5,
13
- 111.5, 150.5, 75, 125, 38.5, 150.5, 51.5, 107.5,
14
- 15.5, 80.5, 60.5, 80.5)
15
- # Draw green hexagon
16
- gc.fill('lime')
17
- gc.polygon(225, 37.5, 279, 68.75, 279, 131.25,
18
- 225, 162.5, 171, 131.3, 171, 68.75)
19
-
20
- gc.draw(imgl)
21
- imgl.border!(1, 1, 'lightcyan2')
22
-
23
- imgl.write('polygon.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 polygon01 - star and hexagon'
8
-
9
- # Show outline of canvas using the 'rect' method
10
- canvas.rect(1195, 395, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 2)
11
-
12
- canvas.polygon(350, 75, 379, 161, 469, 161, 397, 215,
13
- 423, 301, 350, 250, 277, 301, 303, 215,
14
- 231, 161, 321, 161).styles(fill: 'red', stroke: 'blue', stroke_width: 10)
15
-
16
- canvas.polygon(850, 75, 958, 137.5, 958, 262.5,
17
- 850, 325, 742, 262.6, 742, 137.5)
18
- .styles(fill: 'lime', stroke: 'blue', stroke_width: 10)
19
- end
20
-
21
- rvg.draw.write('polygon01.gif')
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(300, 100, Magick::HatchFill.new('white', 'lightcyan2'))
6
-
7
- points = [12, 93.75, 37, 93.75, 37, 81.25, 62, 81.25,
8
- 62, 93.75, 87, 93.75, 87, 62, 112, 62, 112, 93.75,
9
- 137, 93.75, 137, 43.75, 162, 43.75, 162, 93.75,
10
- 187, 93.75, 187, 25, 212, 25, 212, 93.75, 237, 93.75,
11
- 237, 6.25, 262, 6.25, 262, 93.75, 287, 93.75]
12
-
13
- gc = Magick::Draw.new
14
- gc.stroke('blue').stroke_width(3)
15
- gc.fill_opacity(0)
16
- gc.polyline(*points)
17
-
18
- gc.draw(imgl)
19
-
20
- imgl.border!(1, 1, 'lightcyan2')
21
-
22
- imgl.write('polyline.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 polyline01 - increasingly larger bars'
8
-
9
- # Show outline of canvas using the 'rect' method
10
- canvas.rect(1195, 395, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 2)
11
-
12
- canvas.polyline(50, 375,
13
- 150, 375, 150, 325, 250, 325, 250, 375,
14
- 350, 375, 350, 250, 450, 250, 450, 375,
15
- 550, 375, 550, 175, 650, 175, 650, 375,
16
- 750, 375, 750, 100, 850, 100, 850, 375,
17
- 950, 375, 950, 25, 1050, 25, 1050, 375,
18
- 1150, 375).styles(fill: 'none', stroke: 'blue', stroke_width: 10)
19
- end
20
-
21
- rvg.draw.write('polyline01.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.posterize
7
- result.write('posterize.jpg')
8
- exit
@@ -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
- preview = img.preview(Magick::SolarizePreview)
7
- preview.minify.write('preview.jpg')
8
- exit
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(500, 300, Magick::HatchFill.new('white', 'lightcyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- # Draw path with quadratic bezier commands
10
- gc.fill_opacity 0
11
- gc.stroke 'red'
12
- gc.stroke_width 3
13
- gc.path 'M20,150 Q120,25 220,150 T420,150'
14
-
15
- # Annotate
16
- # Show end points
17
- gc.fill_opacity 1
18
- gc.stroke 'grey50'
19
- gc.stroke_width 1
20
- gc.circle 20, 150, 23, 153
21
- gc.circle 220, 150, 223, 153
22
- gc.circle 420, 150, 423, 153
23
-
24
- # Show control points
25
- gc.fill 'black'
26
- gc.stroke 'transparent'
27
- gc.circle 120, 25, 123, 28
28
- gc.circle 320, 275, 323, 278
29
-
30
- # Show connector lines
31
- gc.line 20, 150, 120, 25
32
- gc.line 120, 25, 320, 275
33
- gc.line 320, 275, 420, 150
34
-
35
- # Add labels
36
- gc.font_weight Magick::NormalWeight
37
- gc.font_style Magick::NormalStyle
38
-
39
- # Add end point labels
40
- gc.text 30, 155, "'20,150'"
41
- gc.text 230, 155, "'220,150'"
42
- gc.text 430, 155, "'420,150'"
43
-
44
- # Add control point labels
45
- gc.text 130, 30, "'120,25'"
46
- gc.text 330, 280, "'320,275'"
47
-
48
- gc.draw imgl
49
-
50
- imgl.border!(1, 1, 'lightcyan2')
51
- # imgl.display
52
- imgl.write 'qbezierpath.gif'
@@ -1,34 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(12.cm, 6.cm).viewbox(0, 0, 1200, 600) do |canvas|
6
- canvas.title = 'Example quad01 - quadratic Bezier commands in path data'
7
- canvas.desc = <<-END_DESC
8
- Picture showing a "Q" a "T" command, along with annotations showing the
9
- control points and end points
10
- END_DESC
11
- canvas.background_fill = 'white'
12
- canvas.rect(1195, 592, 1, 1).styles(fill: 'none', stroke: 'blue', stroke_width: 1)
13
-
14
- canvas.path('M200,300 Q400,50 600,300 T1000,300')
15
- .styles(fill: 'none', stroke: 'red', stroke_width: 5)
16
-
17
- # End points
18
- canvas.g.styles(fill: 'black') do |grp|
19
- grp.circle(10, 200, 300)
20
- grp.circle(10, 600, 300)
21
- grp.circle(10, 1000, 300)
22
- end
23
-
24
- # Control points and lines from end points to control points
25
- canvas.g.styles(fill: '#888') do |grp|
26
- grp.circle(10, 400, 50)
27
- grp.circle(10, 800, 550)
28
- end
29
-
30
- canvas.path('M200,300 L400,50 L600,300 L800,550 L1000,300')
31
- .styles(fill: 'none', stroke: '#888', stroke_width: 2)
32
- end
33
-
34
- rvg.draw.write('quad01.gif')
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- # Demonstrate the ImageList#quantize method
4
-
5
- require 'rmagick'
6
-
7
- snapshots = Magick::ImageList.new 'images/Ballerina.jpg', 'images/Gold_Statue.jpg', 'images/Shorts.jpg'
8
-
9
- # Quantize all 3 images to a single set of 16 colors in the RGB colorspace
10
- $stdout.sync = true
11
- printf 'Quantizing... Please be patient, this may take a couple of seconds... '
12
- quant = snapshots.quantize 16
13
- puts 'Done.'
14
-
15
- # Now we create the "before" and "after" images.
16
- # Arrange the original images side-by-side into a
17
- # single image.
18
- old = snapshots.append false
19
- old.write('quantize-m_before.jpg')
20
-
21
- # Repeat for the quantized images.
22
- new = quant.append false
23
- new.write('quantize-m_after.jpg')
24
-
25
- exit