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#equalize method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.equalize
9
-
10
- img.write('equalize.jpg')
11
- exit
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rvg/rvg'
3
-
4
- Magick::RVG.dpi = 90
5
-
6
- rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
- canvas.background_fill = 'white'
8
- canvas.desc = "Example fillrule - nonzero - demonstrates fill_rule=>'nonzero'"
9
-
10
- canvas.rect(1195, 393, 1, 1).styles(fill: 'none', stroke: 'blue')
11
-
12
- triangle = Magick::RVG::Group.new do |defs|
13
- defs.path('M 16,0 L -8,9 v-18 z').styles(fill: 'black', stroke: 'none')
14
- end
15
-
16
- canvas.g.styles(clip_rule: 'evenodd', fill: 'red', stroke: 'black', stroke_width: 3) do |grp|
17
- grp.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
18
- grp.use(triangle).translate(306.21, 249).rotate(72)
19
- grp.use(triangle).translate(175.16, 193.2).rotate(216)
20
- grp.use(triangle).translate(314.26, 161).rotate(0)
21
- grp.use(triangle).translate(221.16, 268.8).rotate(144)
22
- grp.use(triangle).translate(233.21, 126.98).rotate(288)
23
- grp.path('M 600,81 A 107,107 0 0,1 600,295 A 107,107 0 0,1 600,81 z' \
24
- 'M 600,139 A 49,49 0 0,1 600,237 A 49,49 0 0,1 600,139 z')
25
- grp.use(triangle).translate(600, 188).rotate(0).translate(107, 0).rotate(90)
26
- grp.use(triangle).translate(600, 188).rotate(120).translate(107, 0).rotate(90)
27
- grp.use(triangle).translate(600, 188).rotate(240).translate(107, 0).rotate(90)
28
- grp.use(triangle).translate(600, 188).rotate(60).translate(49, 0).rotate(90)
29
- grp.use(triangle).translate(600, 188).rotate(180).translate(49, 0).rotate(90)
30
- grp.use(triangle).translate(600, 188).rotate(300).translate(49, 0).rotate(90)
31
- grp.path('M 950,81 A 107,107 0 0,1 950,295 A 107,107 0 0,1 950,81 z' \
32
- 'M 950,139 A 49,49 0 0,0 950,237 A 49,49 0 0,0 950,139 z')
33
- grp.use(triangle).translate(950, 188).rotate(0).translate(107, 0).rotate(90)
34
- grp.use(triangle).translate(950, 188).rotate(120).translate(107, 0).rotate(90)
35
- grp.use(triangle).translate(950, 188).rotate(240).translate(107, 0).rotate(90)
36
- grp.use(triangle).translate(950, 188).rotate(60).translate(49, 0).rotate(-90)
37
- grp.use(triangle).translate(950, 188).rotate(180).translate(49, 0).rotate(-90)
38
- grp.use(triangle).translate(950, 188).rotate(300).translate(49, 0).rotate(-90)
39
- end
40
- end
41
-
42
- rvg.draw.write('evenodd.gif')
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Magick::Draw#fill_pattern and #stroke_pattern attributes.
5
-
6
- temp = Magick::ImageList.new
7
- temp << Magick::Image.new(5, 10) { self.background_color = 'black' }
8
- temp << Magick::Image.new(5, 10) { self.background_color = 'gold' }
9
- stroke_pattern = temp.append(false)
10
-
11
- img = Magick::Image.new(280, 250) { self.background_color = 'none' }
12
-
13
- gc = Magick::Draw.new
14
- gc.annotate(img, 0, 0, 0, 0, "PATT\nERNS") do
15
- self.gravity = Magick::CenterGravity
16
- self.font_weight = Magick::BoldWeight
17
- self.pointsize = 100
18
- self.fill_pattern = Magick::Image.read('images/Flower_Hat.jpg').first
19
- self.stroke_width = 5
20
- self.stroke_pattern = stroke_pattern
21
- end
22
-
23
- img.write('fill_pattern.gif')
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- # Demonstrate flatten_images method. Create an image with a drop-shadow effect.
4
-
5
- require 'rmagick'
6
-
7
- RMagick = 'RMagick'
8
-
9
- i = Magick::ImageList.new
10
-
11
- # Create a background image with a gradient fill
12
- i.new_image(200, 100, Magick::GradientFill.new(100, 50, 100, 50, 'khaki1', 'turquoise'))
13
-
14
- # Create a transparent image for the text shadow
15
- i.new_image(200, 100) { self.background_color = 'transparent' }
16
- primitives = Magick::Draw.new
17
- primitives.annotate i, 0, 0, 2, 2, RMagick do
18
- self.pointsize = 32
19
- self.fill = 'gray50'
20
- self.gravity = Magick::CenterGravity
21
- end
22
-
23
- # Create another transparent image for the text itself
24
- i.new_image(200, 100) { self.background_color = 'transparent' }
25
- primitives = Magick::Draw.new
26
- primitives.annotate i, 0, 0, -2, -2, RMagick do
27
- self.pointsize = 32
28
- self.fill = 'red'
29
- self.stroke = 'black'
30
- self.gravity = Magick::CenterGravity
31
- end
32
-
33
- # Flatten all 3 into a single image.
34
- # i.display
35
- i.flatten_images.write 'flatten_images.gif'
36
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#flip method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img.flip!
9
-
10
- img.write('flip.jpg')
11
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#flop method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img.flop!
9
-
10
- img.write('flop.jpg')
11
- exit
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rvg/rvg'
3
-
4
- rvg = Magick::RVG.new(200, 250) do |canvas|
5
- canvas.background_fill = 'white'
6
-
7
- canvas.g do |grp|
8
- grp.g.styles(font_weight: 'normal', font_style: 'normal') do |grp2|
9
- grp2.text(10, 30, 'default size')
10
- grp2.text(10, 50, ':font_size=>14').styles(font_size: 14)
11
- grp2.text(10, 70, ':font_size=>16').styles(font_size: 16)
12
- grp2.text(10, 100, ':font_size=>24').styles(font_size: 24)
13
- end
14
- end
15
-
16
- canvas.g.styles(font_size: 14, font_weight: 'normal', font_style: 'normal') do |grp|
17
- if RUBY_PLATFORM =~ /mswin32/
18
- grp.text(8, 120, ":font_family=>'Courier-New'").styles(font_family: 'Courier-New')
19
- else
20
- grp.text(8, 120, ":font_family=>'Courier'").styles(font_family: 'Courier')
21
- end
22
- grp.text(10, 140, ":font_weight=>'bold'").styles(font_weight: 'bold')
23
- grp.text(10, 160, ":font_stretch=>'normal'").styles(font_stretch: 'normal')
24
- grp.text(10, 180, ":font_stretch=>'condensed'").styles(font_stretch: 'condensed')
25
- grp.text(10, 200, ":font_style=>'italic'").styles(font_style: 'italic')
26
- grp.text(10, 220, ':font_weight=>900').styles(font_weight: 900)
27
- end
28
-
29
- canvas.rect(199, 249).styles(fill: 'none', stroke: 'blue')
30
- end
31
-
32
- rvg.draw.write('font_styles.gif')
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Compute column widths
5
- name_length = 0
6
- family_length = 0
7
- Magick.fonts do |font|
8
- name_length = font.name.length if font.name.length > name_length
9
- family_length = font.family.length if font.family.length > family_length
10
- end
11
-
12
- # Print all fonts
13
- Magick.fonts do |font|
14
- printf("%-*s %-*s %d %s\t%s\n", name_length, font.name,
15
- family_length, font.family, font.weight, font.style, font.stretch)
16
- end
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#frame method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img.matte_color = 'gray75'
9
- img = img.frame
10
-
11
- img.write('frame.jpg')
12
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#gaussian_blur method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.gaussian_blur(0.0, 3.0)
9
-
10
- img.write('gaussian_blur.jpg')
11
- exit
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- TEXT = 'get\nmultiline\ntype\nmetrics'
5
-
6
- background = Magick::Image.new(200, 200)
7
- gc = Magick::Draw.new
8
-
9
- # Draw the text centered on the background
10
- gc.annotate(background, 0, 0, 0, 0, TEXT) do
11
- gc.font_family = 'Verdana'
12
- gc.pointsize = 36
13
- gc.gravity = Magick::CenterGravity
14
- gc.stroke = 'none'
15
- end
16
-
17
- # Get the metrics
18
- metrics = gc.get_multiline_type_metrics(background, TEXT)
19
-
20
- # Compute the corners for a rectangle surrounding the text
21
- x = (background.columns - metrics.width) / 2
22
- y = (background.rows - metrics.height) / 2
23
-
24
- # Draw 2 rectangles over the text.
25
- gc = Magick::Draw.new
26
- gc.stroke('red')
27
- gc.stroke_width(5)
28
- gc.stroke_linejoin('round')
29
- gc.fill('cyan')
30
- gc.fill_opacity(0.10)
31
- gc.rectangle(x, y, x + metrics.width, y + metrics.height)
32
-
33
- gc.stroke('white')
34
- gc.stroke_width(1)
35
- gc.fill('none')
36
- gc.rectangle(x, y, x + metrics.width, y + metrics.height)
37
- gc.draw(background)
38
-
39
- background.border!(1, 1, 'blue')
40
-
41
- background.write('get_multiline_type_metrics.gif')
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate partial transparency and the get_pixels and
5
- # store_pixels methods by creating an image that goes from
6
- # full-color on the left to monochrome on the right.
7
-
8
- # Read the colorful picture of a rock formation. Scale
9
- # it to 300 pixels high because we don't want a big picture.
10
- rocks = Magick::Image.read('images/Red_Rocks.jpg').first
11
- rocks.scale!(250.0 / rocks.rows)
12
-
13
- # Make a monochrome copy. See Image#quantize for details
14
- grayrocks = rocks.quantize(256, Magick::GRAYColorspace)
15
-
16
- rows = grayrocks.rows
17
- cols = grayrocks.columns
18
-
19
- # Create an array of opacity values, proceeding from
20
- # transparent to opaque. The array should have as many
21
- # elements as there are columns in the image. The first
22
- # element should be TransparentOpacity and each succeeding
23
- # element slightly more opaque than its predecessor.
24
- step = Magick::TransparentOpacity / cols.to_f
25
- opacity_steps = Array.new(cols)
26
- cols.times do |x|
27
- opacity_steps[x] = Magick::TransparentOpacity - Integer(x * step)
28
- opacity_steps[x] = Magick::OpaqueOpacity if opacity_steps[x] < Magick::OpaqueOpacity
29
- end
30
-
31
- # Get each row of pixels from the mono image.
32
- # Copy the pre-computed opacity values to the pixels.
33
- # Store the pixels back.
34
- rows.times do |y|
35
- pixels = grayrocks.get_pixels(0, y, cols, 1)
36
- pixels.each_with_index { |p, x| p.opacity = opacity_steps[x] }
37
- grayrocks.store_pixels(0, y, cols, 1, pixels)
38
- end
39
-
40
- # Composite the mono version of the image over the color version.
41
- grayrocks.alpha(Magick::ActivateAlphaChannel)
42
- combine = rocks.composite(grayrocks, Magick::CenterGravity, Magick::OverCompositeOp)
43
- # combine.display
44
- combine.write 'get_pixels.jpg'
45
- exit
@@ -1,142 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Add a method for drawing braces.
5
- module Magick
6
- class Draw
7
- # (w,h) - width & height of rectangle enclosing brace.
8
- # Normally the brace is drawn with its opening to the
9
- # left and its lower point on the origin.
10
- #
11
- # Set w < 0 to draw right-opening brace. Set h < 0 to
12
- # position top point at origin.
13
- #
14
- # The placement & orientation is affected by the
15
- # current user coordinate system.
16
- def brace(w, h)
17
- raise(ArgumentError, 'width must be != 0') unless w != 0
18
- raise(ArgumentError, 'height must be != 0') unless h != 0
19
-
20
- path("M0,0 Q#{w},0 #{w / 2.0},#{-h / 4.0} T#{w},#{-h / 2.0}" \
21
- "Q0,#{-h / 2.0} #{w / 2.0},#{-(3.0 * h / 4.0)} T0,#{-h}")
22
- end
23
- end
24
- end
25
-
26
- Origin_x = 110
27
- Origin_y = 230
28
- Glyph = 'g'
29
- Face = RUBY_PLATFORM =~ /mswin/ ? 'Verdana' : 'Times'
30
-
31
- canvas = Magick::Image.new(410, 320, Magick::HatchFill.new('white', 'lightcyan2'))
32
-
33
- # Draw a big lowercase 'g' on the canvas. Leave room on all sides for
34
- # the labels. Use 'undercolor' to set off the glyph.
35
- glyph = Magick::Draw.new
36
- glyph.annotate(canvas, 0, 0, Origin_x, Origin_y, Glyph) do
37
- glyph.pointsize = 124
38
- glyph.stroke = 'none'
39
- glyph.fill = 'black'
40
- glyph.font_family = Face
41
- glyph.undercolor = '#ffff00c0'
42
- end
43
-
44
- # Call get_type_metrics. This is what this example's all about.
45
- metrics = glyph.get_type_metrics(canvas, Glyph)
46
-
47
- gc = Magick::Draw.new
48
- gc.translate(Origin_x, Origin_y)
49
-
50
- # Draw the origin as a big red dot.
51
- gc.stroke('red')
52
- gc.fill('red')
53
- gc.circle(0, 0, 0, 2)
54
-
55
- # All our lines will be medium-gray, dashed, and thin.
56
- gc.stroke('gray50')
57
- gc.stroke_dasharray(5, 2)
58
- gc.stroke_width(1)
59
- gc.fill('none')
60
-
61
- # baseline
62
- gc.line(-10, 0, metrics.width + 20, 0)
63
-
64
- # a vertical line through the origin
65
- gc.line(0, -metrics.descent - metrics.height - 10, 0, -metrics.descent + 15)
66
-
67
- # descent
68
- gc.line(-10, -metrics.descent, metrics.width + 20, -metrics.descent)
69
-
70
- # ascent
71
- gc.line(-10, -metrics.ascent, metrics.width + 20, -metrics.ascent)
72
-
73
- # height
74
- gc.line(-10, -metrics.descent - metrics.height,
75
- metrics.width + 10, -metrics.descent - metrics.height)
76
-
77
- # width
78
- gc.line(metrics.width, -metrics.descent - metrics.height - 10,
79
- metrics.width, -metrics.descent + 20)
80
-
81
- # max_advance
82
- gc.line(metrics.max_advance, -10, metrics.max_advance, -metrics.descent + 20)
83
-
84
- gc.draw(canvas)
85
-
86
- # Draw the braces and labels. Position the braces by transforming the
87
- # user coordinate system with translate and rotate methods.
88
- gc = Magick::Draw.new
89
- gc.font_family('Face')
90
- gc.pointsize(13)
91
- gc.fill('none')
92
- gc.stroke('black')
93
- gc.stroke_width(1)
94
- gc.translate(Origin_x, Origin_y)
95
-
96
- # between origin and descent
97
- gc.push
98
- gc.translate(metrics.width + 23, 0)
99
- gc.brace(10, metrics.descent)
100
- gc.pop
101
-
102
- # between origin and ascent
103
- gc.push
104
- gc.translate(metrics.width + 23, 0)
105
- gc.brace(10, metrics.ascent)
106
- gc.pop
107
-
108
- # between origin and height
109
- gc.push
110
- gc.translate(-13, -metrics.descent - metrics.height)
111
- gc.rotate(180)
112
- gc.brace(10, metrics.height)
113
- gc.pop
114
-
115
- # between origin and width
116
- gc.push
117
- gc.translate(metrics.width, -metrics.descent - metrics.height - 10 - 3)
118
- gc.rotate(-90)
119
- gc.brace(10, metrics.width)
120
- gc.pop
121
-
122
- # between origin and max_advance
123
- gc.push
124
- gc.translate(0, -metrics.descent + 15)
125
- gc.rotate(90)
126
- gc.brace(10, metrics.max_advance)
127
- gc.pop
128
-
129
- # Add labels
130
- gc.font_weight(Magick::NormalWeight)
131
- gc.font_style(Magick::NormalStyle)
132
- gc.stroke('none')
133
- gc.fill('black')
134
- gc.text(metrics.width + 40, -(metrics.ascent / 2) + 4, 'ascent')
135
- gc.text(metrics.width + 40, -(metrics.descent / 2) + 4, 'descent')
136
- gc.text(-60, -metrics.descent - metrics.height / 2 + 4, 'height')
137
- gc.text((metrics.width / 2) - 15, -metrics.descent - metrics.height - 25, 'width')
138
- gc.text(metrics.max_advance / 2 - 38, -metrics.descent + 35, 'max_advance')
139
-
140
- gc.draw(canvas)
141
- canvas.border!(1, 1, 'blue')
142
- canvas.write('get_type_metrics.gif')