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,28 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Draw#text_undercolor method
5
-
6
- canvas = Magick::Image.new(250, 100) { self.background_color = 'white' }
7
-
8
- gc = Magick::Draw.new
9
-
10
- gc.font_weight(Magick::NormalWeight)
11
- gc.font_style(Magick::NormalStyle)
12
- gc.stroke('transparent')
13
- gc.pointsize(16)
14
- gc.gravity(Magick::CenterGravity)
15
-
16
- gc.text_undercolor('cyan')
17
- gc.text(0, -20, "text_undercolor('cyan')")
18
-
19
- gc.text_undercolor('yellow')
20
- gc.text(0, 0, "text_undercolor('yellow')")
21
-
22
- gc.text_undercolor('pink')
23
- gc.text(0, 20, "text_undercolor('pink')")
24
-
25
- gc.draw(canvas)
26
-
27
- canvas.write('text_undercolor.gif')
28
- exit
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#texture_fill_to_border method
5
- # This example is nearly identical to the color_fill_to_border example.
6
-
7
- before = Magick::Image.new(200, 200) do
8
- self.background_color = 'white'
9
- self.border_color = 'black'
10
- end
11
- before.border!(1, 1, 'black')
12
-
13
- circle = Magick::Draw.new
14
- circle.fill('transparent')
15
- circle.stroke('black')
16
- circle.stroke_width(2)
17
- circle.circle(100, 100, 180, 100)
18
- circle.fill('plum1')
19
- circle.stroke('transparent')
20
- circle.circle(60, 100, 40, 100)
21
- circle.circle(140, 100, 120, 100)
22
- circle.circle(100, 60, 100, 40)
23
- circle.circle(100, 140, 100, 120)
24
- circle.draw(before)
25
-
26
- before.compression = Magick::LZWCompression
27
- before.write('texture_fill_to_border_before.gif')
28
-
29
- hat = Magick::Image.read('images/Flower_Hat.jpg').first
30
- hat.resize!(0.3)
31
- after = before.texture_fill_to_border(100, 100, hat)
32
-
33
- after.write('texture_fill_to_border_after.gif')
34
- exit
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#texture_floodfill method
5
- # This example is nearly identical to the color_floodfill example.
6
-
7
- before = Magick::Image.new(200, 200) { self.background_color = 'white' }
8
- before.border!(1, 1, 'black')
9
-
10
- circle = Magick::Draw.new
11
- circle.fill('transparent')
12
- circle.stroke_width(2)
13
- circle.stroke('black')
14
- circle.circle(100, 100, 180, 100)
15
- circle.fill('plum1')
16
- circle.stroke('transparent')
17
- circle.circle(60, 100, 40, 100)
18
- circle.circle(140, 100, 120, 100)
19
- circle.circle(100, 60, 100, 40)
20
- circle.circle(100, 140, 100, 120)
21
- circle.draw(before)
22
-
23
- before.compression = Magick::LZWCompression
24
- before.write('texture_floodfill_before.gif')
25
-
26
- hat = Magick::Image.read('images/Flower_Hat.jpg').first
27
- hat.resize!(0.3)
28
- before.fuzz = 25
29
- after = before.texture_floodfill(100, 100, hat)
30
-
31
- after.write('texture_floodfill_after.gif')
32
- exit
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Magick::TextureFill class.
5
-
6
- granite = Magick::Image.read('granite:').first
7
- fill = Magick::TextureFill.new(granite)
8
- img = Magick::ImageList.new
9
- img.new_image(300, 100, fill)
10
-
11
- # Annotate the filled image with the code that created the fill.
12
-
13
- ann = Magick::Draw.new
14
- ann.annotate(img, 0, 0, 0, 0, 'TextureFill.new(granite)') do
15
- self.gravity = Magick::CenterGravity
16
- self.fill = 'white'
17
- self.font_weight = Magick::BoldWeight
18
- self.stroke = 'transparent'
19
- self.pointsize = 14
20
- end
21
-
22
- # img.display
23
- img.write('texturefill.gif')
24
- exit
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#threshold method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- # Use a threshold of 55% of QuantumRange.
9
- img = img.threshold(Magick::QuantumRange * 0.55)
10
-
11
- # img.display
12
- img.write('threshold.jpg')
13
- exit
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- before = Magick::Image.read('images/Flower_Hat.jpg').first
5
- before.resize!(0.50) # make it small so this example will run fast
6
-
7
- blob = before.to_blob
8
- # We could pass the format, depth, and geometry as optional
9
- # arguments to `from_blob' but that is not required.
10
- after = Magick::Image.from_blob(blob)
11
-
12
- after[0].write('to_blob.gif')
13
- exit
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(250, 250, Magick::HatchFill.new('white', 'lightcyan2'))
6
-
7
- gc = Magick::Draw.new
8
- gc.stroke('red')
9
- gc.stroke_width(2)
10
-
11
- # Move the origin to the center.
12
- gc.translate(125, 125)
13
- max_x = imgl.columns / 2
14
- max_y = imgl.rows / 2
15
-
16
- # Draw down-pointing arrow
17
- gc.line(0, -max_y, 0, max_y)
18
- gc.line(0, max_y, 10, max_y - 10)
19
- gc.line(0, max_y, -10, max_y - 10)
20
-
21
- # Draw right-pointing arrow
22
- gc.line(-max_x, 0, max_x, 0)
23
- gc.line(max_x, 0, max_x - 10, -10)
24
- gc.line(max_x, 0, max_x - 10, 10)
25
-
26
- # Add labels
27
- gc.font_weight(Magick::NormalWeight)
28
- gc.font_style(Magick::NormalStyle)
29
- gc.fill('black')
30
- gc.stroke('transparent')
31
- gc.text(8, 15, "'0,0'")
32
- gc.text(105, 16, 'x')
33
- gc.text(12, 115, 'y')
34
-
35
- gc.draw(imgl)
36
-
37
- imgl.border!(1, 1, 'lightcyan2')
38
-
39
- imgl.write('translate.gif')
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#transparent method.
5
- # Change all black pixels in the image to transparent.
6
-
7
- before = Magick::Image.new(200, 200) do
8
- self.background_color = 'black'
9
- end
10
-
11
- circle = Magick::Draw.new
12
- circle.fill('transparent')
13
- circle.stroke('white')
14
- circle.stroke_width(8)
15
- circle.circle(100, 100, 180, 100)
16
- circle.fill('transparent')
17
- circle.stroke('white')
18
- circle.circle(60, 100, 40, 100)
19
- circle.circle(140, 100, 120, 100)
20
- circle.circle(100, 60, 100, 40)
21
- circle.circle(100, 140, 100, 120)
22
- circle.draw(before)
23
-
24
- before.compression = Magick::LZWCompression
25
- before.write('transparent_before.gif')
26
-
27
- before.fuzz = 100
28
- after = before.transparent('black', Magick::TransparentOpacity)
29
-
30
- # Different way of reading an image - start with an imagelist.
31
- # Use the plasma image as a background so we can see that
32
- # the black pixels have been made transparent.
33
- bg = Magick::ImageList.new
34
- bg.read('plasma:purple-gold') { self.size = '200x200' }
35
-
36
- after = bg.composite(after, Magick::CenterGravity, Magick::OverCompositeOp)
37
- after.write('transparent_after.gif')
38
- exit
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#transpose method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- img = img.transpose
8
- img.write('transpose.jpg')
9
- exit
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#transverse method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- img = img.transverse
8
- img.write('transverse.jpg')
9
- exit
@@ -1,24 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
- Fill = %w[yellow pink green blue cyan red purple brown]
5
-
6
- rvg = Magick::RVG.new(6.cm, 6.cm).viewbox(0, 0, 600, 600) do |canvas|
7
- canvas.background_fill = 'white'
8
-
9
- ref_text = Magick::RVG::Tspan.new('Referenced').styles(font_size: 52, font_weight: 'bold')
10
-
11
- canvas.g.translate(300, 270) do |grp|
12
- angle = 0
13
- 8.times do |n|
14
- grp.text do |txt|
15
- txt.tref(ref_text).d(0, 30).rotate(angle).styles(fill: Fill[n])
16
- angle += 45
17
- end
18
- end
19
- end
20
-
21
- canvas.rect(596, 596).styles(fill: 'none', stroke: 'blue')
22
- end
23
-
24
- rvg.draw.write('tref01.gif')
@@ -1,15 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(4.cm, 4.cm).viewbox(0, 0, 400, 400) do |canvas|
6
- canvas.title = "Example triangle01 - simple example of a 'path'"
7
- canvas.desc = 'A path that draws a triangle'
8
-
9
- canvas.background_fill = 'white'
10
- canvas.rect(395, 395, 1, 1).styles(fill: 'none', stroke: 'blue')
11
-
12
- canvas.path('M 100 100 L 300 100 L 200 300 z').styles(fill: 'red', stroke: 'blue', stroke_width: 3)
13
- end
14
-
15
- rvg.draw.write('triangle01.gif')
@@ -1,23 +0,0 @@
1
- require 'rmagick'
2
-
3
- # Demonstrate the trim method
4
-
5
- # Read the Flower_Hat image and reduce it to 80% of its original size.
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- cols = img.columns
8
- rows = img.rows
9
- img.resize!(0.80)
10
-
11
- # Add a gray border to bring it back up to size
12
- before = img.border((cols - img.columns) / 2, (rows - img.rows) / 2, '#999')
13
-
14
- # Trim away the gray border
15
- after = before.trim
16
-
17
- # Add a white border to bring it back up to size
18
- after.border!((cols - img.columns) / 2, (rows - img.rows) / 2, 'white')
19
-
20
- # Need GIF for tranparency
21
- before.write('trim_before.jpg')
22
- after.write('trim_after.jpg')
23
- exit
@@ -1,17 +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, 1000, 300) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = 'Example tspan01 - using tspan to change visual attributes'
8
- canvas.g.styles(font_family: 'Verdana', font_size: 45) do |grp|
9
- grp.text(200, 150, 'You are').styles(fill: 'blue') do |txt|
10
- txt.tspan(' not').styles(font_weight: 'bold', fill: 'red')
11
- txt.tspan(' a banana')
12
- end
13
- end
14
- canvas.rect(997, 297).styles(fill: 'none', stroke: 'blue')
15
- end
16
-
17
- rvg.draw.write('tspan01.gif')
@@ -1,17 +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, 1000, 300) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = "Example tspan02 - using tspan's dx and dy attributes for incremental positioning adjustments"
8
- canvas.g.styles(font_family: 'Verdana', font_size: 45) do |g|
9
- g.text(200, 150, 'But you').styles(fill: 'blue') do |txt|
10
- txt.tspan('are').d(100, -50).styles(font_weight: 'bold', fill: 'red')
11
- txt.tspan(' a peach!').d(0, 100)
12
- end
13
- end
14
- canvas.rect(996, 296, 1, 1).styles(fill: 'none', stroke: 'blue')
15
- end
16
-
17
- rvg.draw.write('tspan02.gif')
@@ -1,19 +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, 1000, 300) do |canvas|
6
- canvas.background_fill = 'white'
7
-
8
- canvas.g.translate(100, 60) do |grp|
9
- grp.text.styles(font_family: 'Verdana', font_size: 45) do |txt|
10
- txt.tspan('Rotation')
11
- txt.tspan(' propogates').rotate(20).styles(fill: 'red') do |tsp|
12
- tsp.tspan(' to descendents').styles(fill: 'green')
13
- end
14
- end
15
- end
16
- canvas.rect(997, 297).styles(fill: 'none', stroke: 'blue')
17
- end
18
-
19
- rvg.draw.write('tspan03.gif')
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#enhance method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- eimg = img.unsharp_mask(3.0, 1.0, 1.0, 0.05)
9
-
10
- img.resize!(3)
11
- eimg.resize!(3)
12
-
13
- # Make a before-and-after composite
14
- eimg.crop!(eimg.columns / 2, 0, eimg.columns / 2, eimg.rows)
15
- img = img.composite(eimg, Magick::EastGravity, Magick::OverCompositeOp)
16
-
17
- # Draw a black line between the before and after parts.
18
- line = Magick::Draw.new
19
- line.line(img.columns / 2, 0, img.columns / 2, img.rows)
20
- line.draw(img)
21
-
22
- # Zoom in so we can see the change,
23
- # then crop everything but the face.
24
- img.crop!(Magick::CenterGravity, 250, 200)
25
-
26
- # img.display
27
- img.write('unsharp_mask.jpg')
28
- exit
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.new(40, 40) { self.background_color = 'lightcyan2' }
6
-
7
- # The view is 400 pixels square, starting
8
- # column 10, row 5 from the top of the image.
9
- img.view(10, 5, 20, 20) do |view|
10
- # Set all the pixels in the view to green.
11
- view[][] = Magick::Pixel.new(0, Magick::QuantumRange)
12
-
13
- # Change the top and bottom rows to red.
14
- view[0][] = 'red'
15
- view[-1, 1][] = 'red'
16
-
17
- # Set 6 pixels to black.
18
- view[[13, 15]][[12, 14, 16]] = 'black'
19
-
20
- # Set 1 pixel to yellow.
21
- view[5][7] = 'yellow'
22
-
23
- # Change the green channel of all the
24
- # pixels on row 8.
25
- view[8][].green = Magick::QuantumRange / 2
26
-
27
- # Change the blue channel of 8 pixels
28
- # on column 10.
29
- view[4, 8][10].blue = Magick::QuantumRange
30
- end
31
-
32
- img.scale(5).write('viewex.gif')
33
- exit
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- # Demonstrate the Image#vignette method.
6
- # Compare this example with the vignette.rb script in the examples directory.
7
-
8
- img = Magick::Image.read('images/Flower_Hat.jpg').first
9
- vignette = img.vignette
10
- vignette.write('vignette.jpg')
11
-
12
- exit