rmagick 3.2.0 → 4.3.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 (420) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +63 -0
  3. data/.devcontainer/Dockerfile +14 -0
  4. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  5. data/.devcontainer/devcontainer.json +11 -0
  6. data/.devcontainer/setup-repo.sh +10 -0
  7. data/.devcontainer/setup-user.sh +45 -0
  8. data/.editorconfig +3 -0
  9. data/.github/ISSUE_TEMPLATE.md +17 -0
  10. data/.github/workflows/ci.yml +79 -0
  11. data/.gitignore +3 -1
  12. data/.rspec +1 -0
  13. data/.rubocop.yml +24 -0
  14. data/.rubocop_todo.yml +151 -297
  15. data/.yardopts +5 -0
  16. data/CHANGELOG.md +233 -0
  17. data/CODE_OF_CONDUCT.md +122 -7
  18. data/CONTRIBUTING.md +14 -10
  19. data/README.md +326 -0
  20. data/Rakefile +16 -22
  21. data/before_install_linux.sh +22 -28
  22. data/before_install_osx.sh +57 -2
  23. data/ext/RMagick/extconf.rb +149 -105
  24. data/ext/RMagick/rmagick.c +77 -104
  25. data/ext/RMagick/rmagick.h +121 -103
  26. data/ext/RMagick/rmdraw.c +364 -436
  27. data/ext/RMagick/rmenum.c +106 -114
  28. data/ext/RMagick/rmfill.c +149 -70
  29. data/ext/RMagick/rmilist.c +225 -367
  30. data/ext/RMagick/rmimage.c +4751 -4405
  31. data/ext/RMagick/rminfo.c +574 -787
  32. data/ext/RMagick/rmkinfo.c +51 -121
  33. data/ext/RMagick/rmmain.c +454 -286
  34. data/ext/RMagick/rmmontage.c +64 -130
  35. data/ext/RMagick/rmpixel.c +488 -437
  36. data/ext/RMagick/rmstruct.c +83 -96
  37. data/ext/RMagick/rmutil.c +302 -214
  38. data/lib/rmagick/version.rb +1 -1
  39. data/lib/rmagick_internal.rb +138 -93
  40. data/lib/rvg/clippath.rb +2 -1
  41. data/lib/rvg/container.rb +10 -5
  42. data/lib/rvg/describable.rb +1 -1
  43. data/lib/rvg/embellishable.rb +5 -4
  44. data/lib/rvg/misc.rb +15 -12
  45. data/lib/rvg/paint.rb +2 -1
  46. data/lib/rvg/pathdata.rb +12 -11
  47. data/lib/rvg/rvg.rb +12 -8
  48. data/lib/rvg/stylable.rb +9 -7
  49. data/lib/rvg/text.rb +11 -6
  50. data/lib/rvg/transformable.rb +3 -2
  51. data/lib/rvg/units.rb +1 -1
  52. data/rmagick.gemspec +10 -11
  53. metadata +52 -423
  54. data/.appveyor.yml +0 -45
  55. data/.circleci/config.yml +0 -56
  56. data/.ruby-version +0 -1
  57. data/.simplecov +0 -27
  58. data/.travis.yml +0 -62
  59. data/Doxyfile +0 -1514
  60. data/README.textile +0 -259
  61. data/benchmarks/memory/README.md +0 -50
  62. data/benchmarks/memory/image_new.rb +0 -8
  63. data/benchmarks/memory/rmagick.gnuplot +0 -16
  64. data/doc/.cvsignore +0 -1
  65. data/doc/comtasks.html +0 -287
  66. data/doc/constants.html +0 -1581
  67. data/doc/css/doc.css +0 -299
  68. data/doc/css/popup.css +0 -34
  69. data/doc/css/ref.css +0 -67
  70. data/doc/draw.html +0 -3272
  71. data/doc/ex/InitialCoords.rb +0 -22
  72. data/doc/ex/NewCoordSys.rb +0 -30
  73. data/doc/ex/OrigCoordSys.rb +0 -16
  74. data/doc/ex/PreserveAspectRatio.rb +0 -204
  75. data/doc/ex/RotateScale.rb +0 -36
  76. data/doc/ex/Skew.rb +0 -38
  77. data/doc/ex/Use01.rb +0 -15
  78. data/doc/ex/Use02.rb +0 -20
  79. data/doc/ex/Use03.rb +0 -16
  80. data/doc/ex/ViewBox.rb +0 -31
  81. data/doc/ex/adaptive_threshold.rb +0 -9
  82. data/doc/ex/add_noise.rb +0 -16
  83. data/doc/ex/affine.rb +0 -48
  84. data/doc/ex/affine_transform.rb +0 -20
  85. data/doc/ex/arc.rb +0 -49
  86. data/doc/ex/arcpath.rb +0 -32
  87. data/doc/ex/arcs01.rb +0 -28
  88. data/doc/ex/arcs02.rb +0 -59
  89. data/doc/ex/average.rb +0 -15
  90. data/doc/ex/axes.rb +0 -64
  91. data/doc/ex/baseline_shift01.rb +0 -17
  92. data/doc/ex/bilevel_channel.rb +0 -8
  93. data/doc/ex/blur_image.rb +0 -12
  94. data/doc/ex/border.rb +0 -10
  95. data/doc/ex/bounding_box.rb +0 -42
  96. data/doc/ex/cbezier1.rb +0 -41
  97. data/doc/ex/cbezier2.rb +0 -41
  98. data/doc/ex/cbezier3.rb +0 -41
  99. data/doc/ex/cbezier4.rb +0 -42
  100. data/doc/ex/cbezier5.rb +0 -42
  101. data/doc/ex/cbezier6.rb +0 -53
  102. data/doc/ex/channel.rb +0 -25
  103. data/doc/ex/charcoal.rb +0 -12
  104. data/doc/ex/chop.rb +0 -29
  105. data/doc/ex/circle.rb +0 -33
  106. data/doc/ex/circle01.rb +0 -16
  107. data/doc/ex/clip_path.rb +0 -60
  108. data/doc/ex/coalesce.rb +0 -57
  109. data/doc/ex/color_fill_to_border.rb +0 -29
  110. data/doc/ex/color_floodfill.rb +0 -28
  111. data/doc/ex/color_histogram.rb +0 -47
  112. data/doc/ex/color_reset.rb +0 -11
  113. data/doc/ex/colorize.rb +0 -16
  114. data/doc/ex/colors.rb +0 -64
  115. data/doc/ex/compose_mask.rb +0 -22
  116. data/doc/ex/composite.rb +0 -133
  117. data/doc/ex/composite_layers.rb +0 -52
  118. data/doc/ex/composite_tiled.rb +0 -21
  119. data/doc/ex/contrast.rb +0 -36
  120. data/doc/ex/crop.rb +0 -31
  121. data/doc/ex/crop_with_gravity.rb +0 -42
  122. data/doc/ex/cubic01.rb +0 -43
  123. data/doc/ex/cubic02.rb +0 -91
  124. data/doc/ex/cycle_colormap.rb +0 -21
  125. data/doc/ex/dissolve.rb +0 -12
  126. data/doc/ex/drawcomp.rb +0 -41
  127. data/doc/ex/drop_shadow.rb +0 -60
  128. data/doc/ex/edge.rb +0 -11
  129. data/doc/ex/ellipse.rb +0 -45
  130. data/doc/ex/ellipse01.rb +0 -21
  131. data/doc/ex/emboss.rb +0 -11
  132. data/doc/ex/enhance.rb +0 -28
  133. data/doc/ex/equalize.rb +0 -11
  134. data/doc/ex/evenodd.rb +0 -42
  135. data/doc/ex/fill_pattern.rb +0 -23
  136. data/doc/ex/flatten_images.rb +0 -36
  137. data/doc/ex/flip.rb +0 -11
  138. data/doc/ex/flop.rb +0 -11
  139. data/doc/ex/font_styles.rb +0 -32
  140. data/doc/ex/fonts.rb +0 -16
  141. data/doc/ex/frame.rb +0 -12
  142. data/doc/ex/gaussian_blur.rb +0 -11
  143. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  144. data/doc/ex/get_pixels.rb +0 -45
  145. data/doc/ex/get_type_metrics.rb +0 -142
  146. data/doc/ex/gradientfill.rb +0 -27
  147. data/doc/ex/grav.rb +0 -45
  148. data/doc/ex/gravity.rb +0 -78
  149. data/doc/ex/group.rb +0 -26
  150. data/doc/ex/hatchfill.rb +0 -27
  151. data/doc/ex/image.rb +0 -44
  152. data/doc/ex/images/Apple.miff +0 -0
  153. data/doc/ex/images/Ballerina.jpg +0 -0
  154. data/doc/ex/images/Ballerina3.jpg +0 -0
  155. data/doc/ex/images/Button_0.gif +0 -0
  156. data/doc/ex/images/Button_1.gif +0 -0
  157. data/doc/ex/images/Button_2.gif +0 -0
  158. data/doc/ex/images/Button_3.gif +0 -0
  159. data/doc/ex/images/Button_4.gif +0 -0
  160. data/doc/ex/images/Button_5.gif +0 -0
  161. data/doc/ex/images/Button_6.gif +0 -0
  162. data/doc/ex/images/Button_7.gif +0 -0
  163. data/doc/ex/images/Button_8.gif +0 -0
  164. data/doc/ex/images/Button_9.gif +0 -0
  165. data/doc/ex/images/Button_A.gif +0 -0
  166. data/doc/ex/images/Button_B.gif +0 -0
  167. data/doc/ex/images/Button_C.gif +0 -0
  168. data/doc/ex/images/Button_D.gif +0 -0
  169. data/doc/ex/images/Button_E.gif +0 -0
  170. data/doc/ex/images/Button_F.gif +0 -0
  171. data/doc/ex/images/Button_G.gif +0 -0
  172. data/doc/ex/images/Button_H.gif +0 -0
  173. data/doc/ex/images/Button_I.gif +0 -0
  174. data/doc/ex/images/Button_J.gif +0 -0
  175. data/doc/ex/images/Button_K.gif +0 -0
  176. data/doc/ex/images/Button_L.gif +0 -0
  177. data/doc/ex/images/Button_M.gif +0 -0
  178. data/doc/ex/images/Button_N.gif +0 -0
  179. data/doc/ex/images/Button_O.gif +0 -0
  180. data/doc/ex/images/Button_P.gif +0 -0
  181. data/doc/ex/images/Button_Q.gif +0 -0
  182. data/doc/ex/images/Button_R.gif +0 -0
  183. data/doc/ex/images/Button_S.gif +0 -0
  184. data/doc/ex/images/Button_T.gif +0 -0
  185. data/doc/ex/images/Button_U.gif +0 -0
  186. data/doc/ex/images/Button_V.gif +0 -0
  187. data/doc/ex/images/Button_W.gif +0 -0
  188. data/doc/ex/images/Button_X.gif +0 -0
  189. data/doc/ex/images/Button_Y.gif +0 -0
  190. data/doc/ex/images/Button_Z.gif +0 -0
  191. data/doc/ex/images/Cheetah.jpg +0 -0
  192. data/doc/ex/images/Coffee.png +0 -0
  193. data/doc/ex/images/Flower_Hat.jpg +0 -0
  194. data/doc/ex/images/Gold_Statue.jpg +0 -0
  195. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  196. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  197. data/doc/ex/images/Leaf.miff +0 -0
  198. data/doc/ex/images/No.png +0 -0
  199. data/doc/ex/images/Polynesia.jpg +0 -0
  200. data/doc/ex/images/Red_Rocks.jpg +0 -0
  201. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  202. data/doc/ex/images/Shorts.jpg +0 -0
  203. data/doc/ex/images/Snake.png +0 -0
  204. data/doc/ex/images/Violin.jpg +0 -0
  205. data/doc/ex/images/Yellow_Rose.miff +0 -0
  206. data/doc/ex/images/big-duck.gif +0 -0
  207. data/doc/ex/images/duck.gif +0 -0
  208. data/doc/ex/images/duck0.gif +0 -0
  209. data/doc/ex/images/duck1.gif +0 -0
  210. data/doc/ex/images/duck10.gif +0 -0
  211. data/doc/ex/images/duck11.gif +0 -0
  212. data/doc/ex/images/duck12.gif +0 -0
  213. data/doc/ex/images/duck13.gif +0 -0
  214. data/doc/ex/images/duck14.gif +0 -0
  215. data/doc/ex/images/duck15.gif +0 -0
  216. data/doc/ex/images/duck2.gif +0 -0
  217. data/doc/ex/images/duck3.gif +0 -0
  218. data/doc/ex/images/duck4.gif +0 -0
  219. data/doc/ex/images/duck5.gif +0 -0
  220. data/doc/ex/images/duck6.gif +0 -0
  221. data/doc/ex/images/duck7.gif +0 -0
  222. data/doc/ex/images/duck8.gif +0 -0
  223. data/doc/ex/images/duck9.gif +0 -0
  224. data/doc/ex/images/graydient230x6.gif +0 -0
  225. data/doc/ex/images/image_with_profile.jpg +0 -0
  226. data/doc/ex/images/logo400x83.gif +0 -0
  227. data/doc/ex/images/model.miff +0 -0
  228. data/doc/ex/images/notimplemented.gif +0 -0
  229. data/doc/ex/images/smile.miff +0 -0
  230. data/doc/ex/images/spin.gif +0 -0
  231. data/doc/ex/implode.rb +0 -34
  232. data/doc/ex/level.rb +0 -11
  233. data/doc/ex/level_colors.rb +0 -11
  234. data/doc/ex/line.rb +0 -41
  235. data/doc/ex/line01.rb +0 -21
  236. data/doc/ex/mask.rb +0 -35
  237. data/doc/ex/matte_fill_to_border.rb +0 -39
  238. data/doc/ex/matte_floodfill.rb +0 -32
  239. data/doc/ex/matte_replace.rb +0 -39
  240. data/doc/ex/median_filter.rb +0 -28
  241. data/doc/ex/modulate.rb +0 -11
  242. data/doc/ex/mono.rb +0 -23
  243. data/doc/ex/morph.rb +0 -25
  244. data/doc/ex/mosaic.rb +0 -37
  245. data/doc/ex/motion_blur.rb +0 -11
  246. data/doc/ex/negate.rb +0 -11
  247. data/doc/ex/negate_channel.rb +0 -9
  248. data/doc/ex/nested_rvg.rb +0 -21
  249. data/doc/ex/nonzero.rb +0 -42
  250. data/doc/ex/normalize.rb +0 -11
  251. data/doc/ex/oil_paint.rb +0 -11
  252. data/doc/ex/opacity.rb +0 -37
  253. data/doc/ex/ordered_dither.rb +0 -11
  254. data/doc/ex/path.rb +0 -63
  255. data/doc/ex/pattern1.rb +0 -25
  256. data/doc/ex/pattern2.rb +0 -26
  257. data/doc/ex/polaroid.rb +0 -26
  258. data/doc/ex/polygon.rb +0 -23
  259. data/doc/ex/polygon01.rb +0 -21
  260. data/doc/ex/polyline.rb +0 -22
  261. data/doc/ex/polyline01.rb +0 -21
  262. data/doc/ex/posterize.rb +0 -8
  263. data/doc/ex/preview.rb +0 -8
  264. data/doc/ex/qbezierpath.rb +0 -52
  265. data/doc/ex/quad01.rb +0 -34
  266. data/doc/ex/quantize-m.rb +0 -25
  267. data/doc/ex/radial_blur.rb +0 -9
  268. data/doc/ex/raise.rb +0 -8
  269. data/doc/ex/random_threshold_channel.rb +0 -13
  270. data/doc/ex/rect01.rb +0 -14
  271. data/doc/ex/rect02.rb +0 -20
  272. data/doc/ex/rectangle.rb +0 -34
  273. data/doc/ex/reduce_noise.rb +0 -28
  274. data/doc/ex/remap.rb +0 -11
  275. data/doc/ex/remap_images.rb +0 -19
  276. data/doc/ex/resize_to_fill.rb +0 -8
  277. data/doc/ex/resize_to_fit.rb +0 -8
  278. data/doc/ex/roll.rb +0 -9
  279. data/doc/ex/rotate.rb +0 -44
  280. data/doc/ex/rotate_f.rb +0 -14
  281. data/doc/ex/roundrect.rb +0 -33
  282. data/doc/ex/rubyname.rb +0 -30
  283. data/doc/ex/rvg_clippath.rb +0 -12
  284. data/doc/ex/rvg_linecap.rb +0 -42
  285. data/doc/ex/rvg_linejoin.rb +0 -40
  286. data/doc/ex/rvg_opacity.rb +0 -18
  287. data/doc/ex/rvg_pattern.rb +0 -26
  288. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  289. data/doc/ex/segment.rb +0 -11
  290. data/doc/ex/sepiatone.rb +0 -7
  291. data/doc/ex/shade.rb +0 -11
  292. data/doc/ex/shadow.rb +0 -30
  293. data/doc/ex/shave.rb +0 -15
  294. data/doc/ex/shear.rb +0 -10
  295. data/doc/ex/sketch.rb +0 -17
  296. data/doc/ex/skewx.rb +0 -51
  297. data/doc/ex/skewy.rb +0 -47
  298. data/doc/ex/smile.rb +0 -126
  299. data/doc/ex/solarize.rb +0 -11
  300. data/doc/ex/sparse_color.rb +0 -55
  301. data/doc/ex/splice.rb +0 -8
  302. data/doc/ex/spread.rb +0 -11
  303. data/doc/ex/stegano.rb +0 -54
  304. data/doc/ex/stroke_dasharray.rb +0 -42
  305. data/doc/ex/stroke_fill.rb +0 -10
  306. data/doc/ex/stroke_linecap.rb +0 -44
  307. data/doc/ex/stroke_linejoin.rb +0 -48
  308. data/doc/ex/stroke_width.rb +0 -49
  309. data/doc/ex/swirl.rb +0 -17
  310. data/doc/ex/text.rb +0 -37
  311. data/doc/ex/text01.rb +0 -16
  312. data/doc/ex/text_align.rb +0 -36
  313. data/doc/ex/text_antialias.rb +0 -37
  314. data/doc/ex/text_styles.rb +0 -19
  315. data/doc/ex/text_undercolor.rb +0 -28
  316. data/doc/ex/texture_fill_to_border.rb +0 -34
  317. data/doc/ex/texture_floodfill.rb +0 -32
  318. data/doc/ex/texturefill.rb +0 -24
  319. data/doc/ex/threshold.rb +0 -13
  320. data/doc/ex/to_blob.rb +0 -13
  321. data/doc/ex/translate.rb +0 -39
  322. data/doc/ex/transparent.rb +0 -38
  323. data/doc/ex/transpose.rb +0 -9
  324. data/doc/ex/transverse.rb +0 -9
  325. data/doc/ex/tref01.rb +0 -24
  326. data/doc/ex/triangle01.rb +0 -15
  327. data/doc/ex/trim.rb +0 -23
  328. data/doc/ex/tspan01.rb +0 -17
  329. data/doc/ex/tspan02.rb +0 -17
  330. data/doc/ex/tspan03.rb +0 -19
  331. data/doc/ex/unsharp_mask.rb +0 -28
  332. data/doc/ex/viewex.rb +0 -33
  333. data/doc/ex/vignette.rb +0 -12
  334. data/doc/ex/watermark.rb +0 -27
  335. data/doc/ex/wave.rb +0 -9
  336. data/doc/ex/wet_floor.rb +0 -58
  337. data/doc/ex/writing_mode01.rb +0 -26
  338. data/doc/ex/writing_mode02.rb +0 -26
  339. data/doc/ilist.html +0 -2056
  340. data/doc/image1.html +0 -4680
  341. data/doc/image2.html +0 -3665
  342. data/doc/image3.html +0 -4522
  343. data/doc/imageattrs.html +0 -1638
  344. data/doc/imusage.html +0 -514
  345. data/doc/index.html +0 -416
  346. data/doc/info.html +0 -1499
  347. data/doc/magick.html +0 -570
  348. data/doc/optequiv.html +0 -2435
  349. data/doc/rvg.html +0 -975
  350. data/doc/rvgclip.html +0 -248
  351. data/doc/rvggroup.html +0 -305
  352. data/doc/rvgimage.html +0 -289
  353. data/doc/rvgpattern.html +0 -475
  354. data/doc/rvgshape.html +0 -406
  355. data/doc/rvgstyle.html +0 -270
  356. data/doc/rvgtext.html +0 -465
  357. data/doc/rvgtspan.html +0 -238
  358. data/doc/rvgtut.html +0 -530
  359. data/doc/rvguse.html +0 -145
  360. data/doc/rvgxform.html +0 -294
  361. data/doc/scripts/doc.js +0 -22
  362. data/doc/scripts/stripeTables.js +0 -23
  363. data/doc/struct.html +0 -1339
  364. data/doc/usage.html +0 -1621
  365. data/examples/constitute.rb +0 -7
  366. data/examples/crop_with_gravity.rb +0 -42
  367. data/examples/demo.rb +0 -323
  368. data/examples/describe.rb +0 -41
  369. data/examples/find_similar_region.rb +0 -34
  370. data/examples/histogram.rb +0 -312
  371. data/examples/identify.rb +0 -174
  372. data/examples/image_opacity.rb +0 -28
  373. data/examples/import_export.rb +0 -31
  374. data/examples/pattern_fill.rb +0 -37
  375. data/examples/rotating_text.rb +0 -45
  376. data/examples/spinner.rb +0 -49
  377. data/examples/thumbnail.rb +0 -64
  378. data/examples/vignette.rb +0 -78
  379. data/lib/obsolete.rb +0 -66
  380. data/spec/rmagick/ImageList1_spec.rb +0 -24
  381. data/spec/rmagick/draw_spec.rb +0 -155
  382. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  383. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  384. data/spec/rmagick/image/composite_spec.rb +0 -72
  385. data/spec/rmagick/image/constitute_spec.rb +0 -13
  386. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  387. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  388. data/spec/rmagick/image/ping_spec.rb +0 -12
  389. data/spec/rmagick/image/properties_spec.rb +0 -27
  390. data/spec/rmagick/image/read_spec.rb +0 -28
  391. data/spec/spec_helper.rb +0 -10
  392. data/spec/support/issue_200/app.rb +0 -8
  393. data/test/Draw.rb +0 -351
  394. data/test/Enum.rb +0 -228
  395. data/test/Fill.rb +0 -93
  396. data/test/Image1.rb +0 -627
  397. data/test/Image2.rb +0 -1426
  398. data/test/Image3.rb +0 -1091
  399. data/test/ImageList1.rb +0 -858
  400. data/test/ImageList2.rb +0 -406
  401. data/test/Image_attributes.rb +0 -666
  402. data/test/Import_Export.rb +0 -115
  403. data/test/Info.rb +0 -444
  404. data/test/KernelInfo.rb +0 -67
  405. data/test/Magick.rb +0 -311
  406. data/test/Pixel.rb +0 -285
  407. data/test/PolaroidOptions.rb +0 -23
  408. data/test/Preview.rb +0 -26
  409. data/test/Struct.rb +0 -45
  410. data/test/appearance/Montage.rb +0 -26
  411. data/test/appearance/appearance_assertion.rb +0 -13
  412. data/test/appearance/expected/montage_border_color.jpg +0 -0
  413. data/test/cmyk.icm +0 -0
  414. data/test/lib/Obsolete.rb +0 -30
  415. data/test/lib/internal/Draw.rb +0 -823
  416. data/test/lib/internal/Geometry.rb +0 -98
  417. data/test/lib/internal/Magick.rb +0 -40
  418. data/test/srgb.icm +0 -0
  419. data/test/test_all_basic.rb +0 -49
  420. data/test/tmpnam_test.rb +0 -50
@@ -1,22 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(300, 100) do |canvas|
4
- canvas.desc = "Example InitialCoords - SVG's initial coordinate system"
5
- canvas.background_fill = 'white'
6
- canvas.g.styles(fill: 'none', stroke: 'black', stroke_width: 3) do |grp|
7
- grp.line(0, 1.5, 300, 1.5)
8
- grp.line(1.5, 0, 1.5, 100)
9
- end
10
- canvas.g.styles(fill: 'red', stroke: 'none') do |grp|
11
- grp.rect(3, 3)
12
- grp.rect(3, 3, 297, 0)
13
- grp.rect(3, 3, 0, 97)
14
- end
15
- canvas.g.styles(font_size: 14, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal') do |grp|
16
- grp.text(10, 20, '(0,0)')
17
- grp.text(240, 20, '(300,0)')
18
- grp.text(10, 90, '(0,100)')
19
- end
20
- end
21
-
22
- rvg.draw.write('InitialCoords.gif')
@@ -1,30 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(400, 150) do |canvas|
4
- canvas.background_fill = 'white'
5
- canvas.desc = 'Example NewCoordSys - New user coordinate system'
6
- canvas.g.styles(fill: 'none', stroke: 'black', stroke_width: 3) do |grp|
7
- # Draw the axes of the original coordinate system
8
- grp.line(0, 1.5, 400, 1.5)
9
- grp.line(1.5, 0, 1.5, 150)
10
- end
11
-
12
- canvas.g do |grp|
13
- grp.text(30, 30, 'ABC (orig coord system)').styles(font_size: 20, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
14
- end
15
-
16
- # Establish a new coordinate system, which is
17
- # shifted (i.e., translated) from the initial coordinate
18
- # system by 50 user units along each axis.
19
- canvas.g.translate(50, 50) do |grp|
20
- grp.g.styles(fill: 'none', stroke: 'red', stroke_width: 3) do |grp2|
21
- # Draw lines of length 50 user units along
22
- # the axes of the new coordinate system
23
- grp2.line(0, 0, 50, 0)
24
- grp2.line(0, 0, 0, 50)
25
- end
26
- grp.text(30, 30, 'ABC (translated coord system)').styles(font_size: 20, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
27
- end
28
- end
29
-
30
- rvg.draw.write('NewCoordSys.gif')
@@ -1,16 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(400, 150) do |canvas|
4
- canvas.desc = 'Example OrigCoordSys - Simple transformations: original picture'
5
- canvas.background_fill = 'white'
6
-
7
- canvas.g.styles(fill: 'none', stroke: 'black', stroke_width: 3) do |grp|
8
- # Draw the axes of the original coordinate system
9
- grp.line(0, 1.5, 400, 1.5)
10
- grp.line(1.5, 0, 1.5, 150)
11
- end
12
-
13
- canvas.text(30, 30, 'ABC (orig coord system)').styles(font_size: 20, font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
14
- end
15
-
16
- rvg.draw.write('OrigCoordSys.gif')
@@ -1,204 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(450, 300) do |canvas|
4
- canvas.desc = 'Example Preserve Aspect Ratio'
5
- canvas.background_fill = 'white'
6
-
7
- canvas.rect(448, 298, 1, 1).styles(fill: 'none', stroke: 'blue')
8
-
9
- # Define the smiley-face
10
- smile = Magick::RVG::Group.new do |grp|
11
- grp.translate(0, 5)
12
- grp.circle(10, 15, 15).styles(fill: 'yellow', stroke: 'none')
13
- grp.circle(1.5, 12, 12).styles(fill: 'black', stroke: 'none')
14
- grp.circle(1.5, 17, 12).styles(fill: 'black', stroke: 'none')
15
- grp.path('M10 19 A 8 8 0 0 0 20 19').styles(stroke: 'black', stroke_width: 2)
16
- end
17
-
18
- viewport1 = Magick::RVG::Group.new do |grp|
19
- grp.rect(49, 29, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
20
- end
21
-
22
- viewport2 = Magick::RVG::Group.new do |grp|
23
- grp.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
24
- end
25
-
26
- # SVG to fit
27
- canvas.g.styles(font_size: 9) do |grp|
28
- grp.text(10, 30, 'SVG to fit')
29
- grp.g.translate(20, 40) do |grp2|
30
- grp2.use(viewport2)
31
- grp2.use(smile)
32
- end
33
-
34
- # Viewport 1
35
- grp.g.translate(10, 120) do |grp2|
36
- grp2.use(viewport1)
37
- end
38
- grp.text(10, 110, 'Viewport 1')
39
-
40
- # Viewport 2
41
- grp.g.translate(20, 190) do |grp2|
42
- grp2.rect(29, 50, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
43
- end
44
- grp.text(10, 180, 'Viewport 2')
45
-
46
- # meet-group-1
47
- grp.g.translate(100, 60) do |grp2|
48
- grp2.text(0, -30, '--------------- meet ---------------')
49
- grp2.g do |grp3|
50
- grp3.text(0, -10, 'xMin*')
51
- grp3.use(viewport1)
52
-
53
- # xMin
54
- grp3.rvg(50, 30).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2|
55
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
56
- canvas2.use(smile)
57
- end
58
- end
59
-
60
- # xMid
61
- grp2.g.translate(70, 0) do |grp3|
62
- grp3.text(0, -10, 'xMid*')
63
- grp3.use(viewport1)
64
- grp3.rvg(50, 30).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2|
65
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
66
- canvas2.use(smile)
67
- end
68
- end
69
-
70
- # xMax
71
- grp2.g.translate(0, 70) do |grp3|
72
- grp3.text(0, -10, 'xMax*')
73
- grp3.use(viewport1)
74
- grp3.rvg(50, 30).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2|
75
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
76
- canvas2.use(smile)
77
- end
78
- end
79
- end
80
-
81
- # meet-group-2
82
- grp.g.translate(250, 60) do |grp2|
83
- grp2.text(0, -30, '--------------- meet ---------------')
84
-
85
- # xMin
86
- grp2.g do |grp3|
87
- grp3.text(0, -10, '*YMin')
88
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
89
- grp3.rvg(30, 60).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMinYMin', 'meet') do |canvas2|
90
- canvas2.use(viewport2)
91
- canvas2.use(smile)
92
- end
93
- end
94
-
95
- # xMid
96
- grp2.g.translate(50, 0) do |grp3|
97
- grp3.text(0, -10, '*YMid')
98
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
99
- grp3.rvg(30, 60).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMidYMid', 'meet') do |canvas2|
100
- canvas2.use(viewport2)
101
- canvas2.use(smile)
102
- end
103
- end
104
-
105
- # xMax
106
- grp2.g.translate(100, 0) do |grp3|
107
- grp3.text(0, -10, '*YMax')
108
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
109
- grp3.rvg(30, 60).viewbox(0, 0, 30, 40).preserve_aspect_ratio('xMaxYMax', 'meet') do |canvas2|
110
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
111
- canvas2.use(smile)
112
- end
113
- end
114
- end
115
-
116
- # slice-group-1
117
- grp.g.translate(100, 220) do |grp2|
118
- grp2.text(0, -30, '--------------- slice ---------------')
119
-
120
- # xMin
121
- grp2.g do |grp3|
122
- grp3.text(0, -10, 'xMin*')
123
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
124
- grp3.rvg(30, 60) do |canvas2|
125
- canvas2.preserve_aspect_ratio('xMinYMin', 'slice')
126
- canvas2.viewbox(0, 0, 30, 40)
127
- canvas2.use(viewport2)
128
- canvas2.use(smile)
129
- end
130
- end
131
-
132
- # xMid
133
- grp2.g do |grp3|
134
- grp3.text(0, -10, 'xMid*')
135
- grp3.translate(50, 0)
136
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
137
- grp3.rvg(30, 60) do |canvas2|
138
- canvas2.preserve_aspect_ratio('xMidYMid', 'slice')
139
- canvas2.viewbox(0, 0, 30, 40)
140
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
141
- canvas2.use(smile)
142
- end
143
- end
144
-
145
- # xMax
146
- grp2.g do |grp3|
147
- grp3.text(0, -10, 'xMax*')
148
- grp3.translate(100, 0)
149
- grp3.rect(29, 59, 0.5, 0.5).styles(fill: 'none', stroke: 'blue')
150
- grp3.rvg(30, 60) do |canvas2|
151
- canvas2.preserve_aspect_ratio('xMaxYMax', 'slice')
152
- canvas2.viewbox(0, 0, 30, 40)
153
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
154
- canvas2.use(smile)
155
- end
156
- end
157
- end
158
-
159
- # slice-group-2
160
- grp.g.translate(250, 200) do |grp2|
161
- grp2.text(0, -30, '--------------- slice ---------------')
162
-
163
- # YMin
164
- grp2.g do |grp3|
165
- grp3.text(0, -10, '*YMin')
166
- grp3.use(viewport1)
167
- grp3.rvg(50, 30) do |canvas2|
168
- canvas2.preserve_aspect_ratio('xMinYMin', 'slice')
169
- canvas2.viewbox(0, 0, 30, 40)
170
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
171
- canvas2.use(smile)
172
- end
173
- end
174
-
175
- # YMid
176
- grp2.g do |grp3|
177
- grp3.text(0, -10, '*YMid')
178
- grp3.translate(70, 0)
179
- grp3.use(viewport1)
180
- grp3.rvg(50, 30) do |canvas2|
181
- canvas2.preserve_aspect_ratio('xMidYMid', 'slice')
182
- canvas2.viewbox(0, 0, 30, 40)
183
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
184
- canvas2.use(smile)
185
- end
186
- end
187
-
188
- # YMax
189
- grp2.g do |grp3|
190
- grp3.text(0, -10, '*YMax')
191
- grp3.translate(140, 0)
192
- grp3.use(viewport1)
193
- grp3.rvg(50, 30) do |canvas2|
194
- canvas2.preserve_aspect_ratio('xMaxYMax', 'slice')
195
- canvas2.viewbox(0, 0, 30, 40)
196
- canvas2.rect(29, 39, 0.5, 0.5).styles(fill: 'black', stroke: 'red')
197
- canvas2.use(smile)
198
- end
199
- end
200
- end
201
- end
202
- end
203
-
204
- rvg.draw.write('PreserveAspectRatio.gif')
@@ -1,36 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(400, 120) do |canvas|
4
- canvas.desc = 'Example RotateScale - Rotate and scale transforms'
5
- canvas.background_fill = 'white'
6
- canvas.g.styles(fill: 'none', stroke: 'black', stroke_width: 3) do |grp|
7
- # Draw the axes of the original coordinate system
8
- grp.line(0, 1.5, 400, 1.5)
9
- grp.line(1.5, 0, 1.5, 120)
10
- end
11
- # Establish a new coordinate system whose origin is at (50,30)
12
- # in the original coord. system and which is rotated by 30 degrees.
13
- canvas.g.translate(50, 30) do |grp|
14
- grp.g.rotate(30) do |grp2|
15
- grp2.g.styles(fill: 'none', stroke: 'red', stroke_width: 3) do |grp3|
16
- grp3.line(0, 0, 50, 0)
17
- grp3.line(0, 0, 0, 50)
18
- end
19
- grp2.text(0, 0, 'ABC (rotate)').styles(font_size: 20, fill: 'blue', font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
20
- end
21
- end
22
-
23
- # Establish a new coordinate system whose origin is at (200,40)
24
- # in the original coord. systm and which is scaled by 1.5
25
- canvas.g.translate(200, 40) do |grp|
26
- grp.g.scale(1.5) do |grp2|
27
- grp2.g.styles(fill: 'none', stroke: 'red', stroke_width: 3) do |grp3|
28
- grp3.line(0, 0, 50, 0)
29
- grp3.line(0, 0, 0, 50)
30
- end
31
- grp2.text(0, 0, 'ABC (scale)').styles(font_size: 20, fill: 'blue', font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
32
- end
33
- end
34
- end
35
-
36
- rvg.draw.write('RotateScale.gif')
data/doc/ex/Skew.rb DELETED
@@ -1,38 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- rvg = Magick::RVG.new(400, 120) do |canvas|
4
- canvas.desc = 'Example Skew - Show effects of skewX and skewY'
5
- canvas.background_fill = 'white'
6
-
7
- canvas.g.styles(fill: 'none', stroke: 'black', stroke_width: 3) do |grp|
8
- # Draw the axes of the original coordinate system
9
- grp.line(0, 1.5, 400, 1.5)
10
- grp.line(1.5, 0, 1.5, 120)
11
- end
12
-
13
- # Establisha new coordinate system whose origin is at (30,30)
14
- # in the initial coord. system and which is skewed in X by 30 degrees.
15
- canvas.g.translate(30, 30) do |grp|
16
- grp.skewX(30) do |grp2|
17
- grp2.g.styles(fill: 'none', stroke: 'red', stroke_width: 3) do |grp3|
18
- grp3.line(0, 0, 50, 0)
19
- grp3.line(0, 0, 0, 50)
20
- end
21
- grp.text(0, 0, 'ABC (skewX)').styles(font_size: 20, fill: 'blue', font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
22
- end
23
- end
24
-
25
- # Establish a new coordinate system whose origin is at (200,30)
26
- # in the initial coord. system and which is skewed in Y by 30 degrees.
27
- canvas.g.translate(200, 30) do |grp|
28
- grp.skewY(30) do |grp2|
29
- grp2.g.styles(fill: 'none', stroke: 'red', stroke_width: 3) do |grp3|
30
- grp3.line(0, 0, 50, 0)
31
- grp3.line(0, 0, 0, 50)
32
- end
33
- grp.text(0, 0, 'ABC (skewY)').styles(font_size: 20, fill: 'blue', font_family: 'Verdana', font_weight: 'normal', font_style: 'normal')
34
- end
35
- end
36
- end
37
-
38
- rvg.draw.write('Skew.gif')
data/doc/ex/Use01.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(10.cm, 3.cm).viewbox(0, 0, 100, 30) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = "Example Use01 - Simple case of 'use' on a 'rect'"
8
- r = Magick::RVG::Group.new do |grp|
9
- grp.rect(60, 10)
10
- end
11
- canvas.rect(99.6, 29.6, 0.1, 0.1).styles(fill: 'none', stroke: 'blue', stroke_width: 0.2)
12
- canvas.use(r, 20, 10)
13
- end
14
-
15
- rvg.draw.write('Use01.gif')
data/doc/ex/Use02.rb DELETED
@@ -1,20 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(10.cm, 3.5.cm).viewbox(0, 0, 100, 35) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = "Example Use02 - Chain 'styles' to 'use'"
8
- r = Magick::RVG::Group.new do |grp|
9
- grp.rect(60, 10).styles(fill: 'yellow')
10
- end
11
- canvas.rect(99.6, 34.6, 0.1, 0.1).styles(fill: 'none', stroke: 'blue', stroke_width: 0.2)
12
-
13
- # Since the rectangle specified the fill color the :fill style is ignored here.
14
- # However, since the rectangle did not specify a stroke color, the :stroke style
15
- # specified here is respected.
16
- canvas.use(r, 20, 5).styles(fill: 'green', stroke: 'red')
17
- canvas.use(r, 20, 20).styles(fill: 'green', stroke: 'blue')
18
- end
19
-
20
- rvg.draw.write('Use02.gif')
data/doc/ex/Use03.rb DELETED
@@ -1,16 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(10.cm, 3.cm).viewbox(0, 0, 100, 30) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = "Example Use03 - 'use' with a 'transform' attribute"
8
-
9
- myrect = Magick::RVG::Group.new do |grp|
10
- grp.rect(60, 10)
11
- end
12
- canvas.rect(99.6, 29.6, 0.1, 0.1).styles(fill: 'none', stroke: 'blue', stroke_width: 0.2)
13
- canvas.use(myrect).translate(20, 2.5).rotate(10)
14
- end
15
-
16
- rvg.draw.write('Use03.gif')
data/doc/ex/ViewBox.rb DELETED
@@ -1,31 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- def example(cols, rows)
4
- rvg = Magick::RVG.new(cols, rows) do |canvas|
5
- canvas.background_fill = 'white'
6
- canvas.desc = <<-'END_DESC'
7
- Example ViewBox - uses the viewBox attribute to automatically create an
8
- initial user coordinate system which causes the graphic to scale to fit
9
- into the viewport no matter what size the viewport is.
10
- END_DESC
11
-
12
- canvas.viewbox(0, 0, 1500, 1000)
13
- canvas.preserve_aspect_ratio('none')
14
-
15
- # This rectangle goes from (0,0) to (1500,1000) in user space.
16
- # Because of the viewBox attribute above,
17
- # the rectangle will end up filling the entire area
18
- # reserved for the SVG content.
19
- canvas.rect(1500, 1000).styles(fill: 'yellow', stroke: 'blue', stroke_width: 12)
20
-
21
- # A large, red triangle
22
- canvas.path('M 750,100 L 250,900 L 1250,900 z').styles(fill: 'red')
23
-
24
- # A text string that spans most of the viewport
25
- canvas.text(100, 600, 'Stretch to fit').styles(font_size: 200, font_style: 'normal', font_weight: 'normal', font_family: 'Verdana')
26
- end
27
- rvg.draw
28
- end
29
-
30
- example(300, 200).write('ViewBox_300x200.gif')
31
- example(150, 200).write('ViewBox_150x200.gif')
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#adaptive_threshold method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- result = img.adaptive_threshold
8
- result.write('adaptive_threshold.jpg')
9
- exit
data/doc/ex/add_noise.rb DELETED
@@ -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
data/doc/ex/affine.rb DELETED
@@ -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
data/doc/ex/arc.rb DELETED
@@ -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')
data/doc/ex/arcpath.rb DELETED
@@ -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')
data/doc/ex/arcs01.rb DELETED
@@ -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')