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,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')
@@ -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')
@@ -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')
@@ -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')
@@ -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')
@@ -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