rmagick-windows 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +14 -0
  3. data/.gitignore +23 -0
  4. data/.hound.yml +2 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +340 -0
  7. data/.simplecov +27 -0
  8. data/.travis.yml +60 -0
  9. data/CHANGELOG.md +915 -0
  10. data/CODE_OF_CONDUCT.md +13 -0
  11. data/CONTRIBUTING.md +50 -0
  12. data/Doxyfile +1514 -0
  13. data/Gemfile +10 -0
  14. data/LICENSE +20 -0
  15. data/README.textile +257 -0
  16. data/Rakefile +188 -0
  17. data/before_install_linux.sh +32 -0
  18. data/before_install_osx.sh +2 -0
  19. data/deprecated/RMagick.rb +6 -0
  20. data/doc/.cvsignore +1 -0
  21. data/doc/comtasks.html +287 -0
  22. data/doc/constants.html +1581 -0
  23. data/doc/css/doc.css +299 -0
  24. data/doc/css/popup.css +34 -0
  25. data/doc/css/ref.css +67 -0
  26. data/doc/draw.html +3272 -0
  27. data/doc/ex/InitialCoords.rb +22 -0
  28. data/doc/ex/NewCoordSys.rb +30 -0
  29. data/doc/ex/OrigCoordSys.rb +16 -0
  30. data/doc/ex/PreserveAspectRatio.rb +204 -0
  31. data/doc/ex/RotateScale.rb +36 -0
  32. data/doc/ex/Skew.rb +38 -0
  33. data/doc/ex/Use01.rb +15 -0
  34. data/doc/ex/Use02.rb +20 -0
  35. data/doc/ex/Use03.rb +16 -0
  36. data/doc/ex/ViewBox.rb +31 -0
  37. data/doc/ex/adaptive_threshold.rb +9 -0
  38. data/doc/ex/add_noise.rb +16 -0
  39. data/doc/ex/affine.rb +48 -0
  40. data/doc/ex/affine_transform.rb +20 -0
  41. data/doc/ex/arc.rb +49 -0
  42. data/doc/ex/arcpath.rb +32 -0
  43. data/doc/ex/arcs01.rb +28 -0
  44. data/doc/ex/arcs02.rb +59 -0
  45. data/doc/ex/average.rb +15 -0
  46. data/doc/ex/axes.rb +64 -0
  47. data/doc/ex/baseline_shift01.rb +17 -0
  48. data/doc/ex/bilevel_channel.rb +8 -0
  49. data/doc/ex/blur_image.rb +12 -0
  50. data/doc/ex/border.rb +10 -0
  51. data/doc/ex/bounding_box.rb +42 -0
  52. data/doc/ex/cbezier1.rb +41 -0
  53. data/doc/ex/cbezier2.rb +41 -0
  54. data/doc/ex/cbezier3.rb +41 -0
  55. data/doc/ex/cbezier4.rb +42 -0
  56. data/doc/ex/cbezier5.rb +42 -0
  57. data/doc/ex/cbezier6.rb +53 -0
  58. data/doc/ex/channel.rb +25 -0
  59. data/doc/ex/charcoal.rb +12 -0
  60. data/doc/ex/chop.rb +29 -0
  61. data/doc/ex/circle.rb +33 -0
  62. data/doc/ex/circle01.rb +16 -0
  63. data/doc/ex/clip_path.rb +60 -0
  64. data/doc/ex/coalesce.rb +57 -0
  65. data/doc/ex/color_fill_to_border.rb +29 -0
  66. data/doc/ex/color_floodfill.rb +28 -0
  67. data/doc/ex/color_histogram.rb +47 -0
  68. data/doc/ex/color_reset.rb +11 -0
  69. data/doc/ex/colorize.rb +16 -0
  70. data/doc/ex/colors.rb +64 -0
  71. data/doc/ex/compose_mask.rb +22 -0
  72. data/doc/ex/composite.rb +133 -0
  73. data/doc/ex/composite_layers.rb +53 -0
  74. data/doc/ex/composite_tiled.rb +21 -0
  75. data/doc/ex/contrast.rb +36 -0
  76. data/doc/ex/crop.rb +31 -0
  77. data/doc/ex/crop_with_gravity.rb +42 -0
  78. data/doc/ex/cubic01.rb +43 -0
  79. data/doc/ex/cubic02.rb +91 -0
  80. data/doc/ex/cycle_colormap.rb +21 -0
  81. data/doc/ex/dissolve.rb +12 -0
  82. data/doc/ex/drawcomp.rb +42 -0
  83. data/doc/ex/drop_shadow.rb +60 -0
  84. data/doc/ex/edge.rb +11 -0
  85. data/doc/ex/ellipse.rb +45 -0
  86. data/doc/ex/ellipse01.rb +21 -0
  87. data/doc/ex/emboss.rb +11 -0
  88. data/doc/ex/enhance.rb +28 -0
  89. data/doc/ex/equalize.rb +11 -0
  90. data/doc/ex/evenodd.rb +42 -0
  91. data/doc/ex/fill_pattern.rb +23 -0
  92. data/doc/ex/flatten_images.rb +36 -0
  93. data/doc/ex/flip.rb +11 -0
  94. data/doc/ex/flop.rb +11 -0
  95. data/doc/ex/font_styles.rb +32 -0
  96. data/doc/ex/fonts.rb +20 -0
  97. data/doc/ex/frame.rb +12 -0
  98. data/doc/ex/gaussian_blur.rb +11 -0
  99. data/doc/ex/get_multiline_type_metrics.rb +41 -0
  100. data/doc/ex/get_pixels.rb +47 -0
  101. data/doc/ex/get_type_metrics.rb +141 -0
  102. data/doc/ex/gradientfill.rb +27 -0
  103. data/doc/ex/grav.rb +45 -0
  104. data/doc/ex/gravity.rb +80 -0
  105. data/doc/ex/group.rb +26 -0
  106. data/doc/ex/hatchfill.rb +27 -0
  107. data/doc/ex/image.rb +44 -0
  108. data/doc/ex/images/Apple.miff +0 -0
  109. data/doc/ex/images/Ballerina.jpg +0 -0
  110. data/doc/ex/images/Ballerina3.jpg +0 -0
  111. data/doc/ex/images/Button_0.gif +0 -0
  112. data/doc/ex/images/Button_1.gif +0 -0
  113. data/doc/ex/images/Button_2.gif +0 -0
  114. data/doc/ex/images/Button_3.gif +0 -0
  115. data/doc/ex/images/Button_4.gif +0 -0
  116. data/doc/ex/images/Button_5.gif +0 -0
  117. data/doc/ex/images/Button_6.gif +0 -0
  118. data/doc/ex/images/Button_7.gif +0 -0
  119. data/doc/ex/images/Button_8.gif +0 -0
  120. data/doc/ex/images/Button_9.gif +0 -0
  121. data/doc/ex/images/Button_A.gif +0 -0
  122. data/doc/ex/images/Button_B.gif +0 -0
  123. data/doc/ex/images/Button_C.gif +0 -0
  124. data/doc/ex/images/Button_D.gif +0 -0
  125. data/doc/ex/images/Button_E.gif +0 -0
  126. data/doc/ex/images/Button_F.gif +0 -0
  127. data/doc/ex/images/Button_G.gif +0 -0
  128. data/doc/ex/images/Button_H.gif +0 -0
  129. data/doc/ex/images/Button_I.gif +0 -0
  130. data/doc/ex/images/Button_J.gif +0 -0
  131. data/doc/ex/images/Button_K.gif +0 -0
  132. data/doc/ex/images/Button_L.gif +0 -0
  133. data/doc/ex/images/Button_M.gif +0 -0
  134. data/doc/ex/images/Button_N.gif +0 -0
  135. data/doc/ex/images/Button_O.gif +0 -0
  136. data/doc/ex/images/Button_P.gif +0 -0
  137. data/doc/ex/images/Button_Q.gif +0 -0
  138. data/doc/ex/images/Button_R.gif +0 -0
  139. data/doc/ex/images/Button_S.gif +0 -0
  140. data/doc/ex/images/Button_T.gif +0 -0
  141. data/doc/ex/images/Button_U.gif +0 -0
  142. data/doc/ex/images/Button_V.gif +0 -0
  143. data/doc/ex/images/Button_W.gif +0 -0
  144. data/doc/ex/images/Button_X.gif +0 -0
  145. data/doc/ex/images/Button_Y.gif +0 -0
  146. data/doc/ex/images/Button_Z.gif +0 -0
  147. data/doc/ex/images/Cheetah.jpg +0 -0
  148. data/doc/ex/images/Coffee.wmf +0 -0
  149. data/doc/ex/images/Flower_Hat.jpg +0 -0
  150. data/doc/ex/images/Gold_Statue.jpg +0 -0
  151. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  152. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  153. data/doc/ex/images/Leaf.miff +0 -0
  154. data/doc/ex/images/No.wmf +0 -0
  155. data/doc/ex/images/Polynesia.jpg +0 -0
  156. data/doc/ex/images/Red_Rocks.jpg +0 -0
  157. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  158. data/doc/ex/images/Shorts.jpg +0 -0
  159. data/doc/ex/images/Snake.wmf +0 -0
  160. data/doc/ex/images/Violin.jpg +0 -0
  161. data/doc/ex/images/Yellow_Rose.miff +0 -0
  162. data/doc/ex/images/big-duck.gif +0 -0
  163. data/doc/ex/images/duck.gif +0 -0
  164. data/doc/ex/images/duck0.gif +0 -0
  165. data/doc/ex/images/duck1.gif +0 -0
  166. data/doc/ex/images/duck10.gif +0 -0
  167. data/doc/ex/images/duck11.gif +0 -0
  168. data/doc/ex/images/duck12.gif +0 -0
  169. data/doc/ex/images/duck13.gif +0 -0
  170. data/doc/ex/images/duck14.gif +0 -0
  171. data/doc/ex/images/duck15.gif +0 -0
  172. data/doc/ex/images/duck2.gif +0 -0
  173. data/doc/ex/images/duck3.gif +0 -0
  174. data/doc/ex/images/duck4.gif +0 -0
  175. data/doc/ex/images/duck5.gif +0 -0
  176. data/doc/ex/images/duck6.gif +0 -0
  177. data/doc/ex/images/duck7.gif +0 -0
  178. data/doc/ex/images/duck8.gif +0 -0
  179. data/doc/ex/images/duck9.gif +0 -0
  180. data/doc/ex/images/graydient230x6.gif +0 -0
  181. data/doc/ex/images/image_with_profile.jpg +0 -0
  182. data/doc/ex/images/logo400x83.gif +0 -0
  183. data/doc/ex/images/model.miff +0 -0
  184. data/doc/ex/images/notimplemented.gif +0 -0
  185. data/doc/ex/images/smile.miff +0 -0
  186. data/doc/ex/images/spin.gif +0 -0
  187. data/doc/ex/implode.rb +34 -0
  188. data/doc/ex/level.rb +11 -0
  189. data/doc/ex/level_colors.rb +11 -0
  190. data/doc/ex/line.rb +41 -0
  191. data/doc/ex/line01.rb +21 -0
  192. data/doc/ex/mask.rb +35 -0
  193. data/doc/ex/matte_fill_to_border.rb +39 -0
  194. data/doc/ex/matte_floodfill.rb +32 -0
  195. data/doc/ex/matte_replace.rb +39 -0
  196. data/doc/ex/median_filter.rb +28 -0
  197. data/doc/ex/modulate.rb +11 -0
  198. data/doc/ex/mono.rb +23 -0
  199. data/doc/ex/morph.rb +25 -0
  200. data/doc/ex/mosaic.rb +35 -0
  201. data/doc/ex/motion_blur.rb +11 -0
  202. data/doc/ex/negate.rb +11 -0
  203. data/doc/ex/negate_channel.rb +9 -0
  204. data/doc/ex/nested_rvg.rb +21 -0
  205. data/doc/ex/nonzero.rb +42 -0
  206. data/doc/ex/normalize.rb +11 -0
  207. data/doc/ex/oil_paint.rb +11 -0
  208. data/doc/ex/opacity.rb +37 -0
  209. data/doc/ex/ordered_dither.rb +11 -0
  210. data/doc/ex/path.rb +63 -0
  211. data/doc/ex/pattern1.rb +25 -0
  212. data/doc/ex/pattern2.rb +26 -0
  213. data/doc/ex/polaroid.rb +27 -0
  214. data/doc/ex/polygon.rb +23 -0
  215. data/doc/ex/polygon01.rb +21 -0
  216. data/doc/ex/polyline.rb +22 -0
  217. data/doc/ex/polyline01.rb +21 -0
  218. data/doc/ex/posterize.rb +8 -0
  219. data/doc/ex/preview.rb +8 -0
  220. data/doc/ex/qbezierpath.rb +52 -0
  221. data/doc/ex/quad01.rb +34 -0
  222. data/doc/ex/quantize-m.rb +25 -0
  223. data/doc/ex/radial_blur.rb +9 -0
  224. data/doc/ex/raise.rb +8 -0
  225. data/doc/ex/random_threshold_channel.rb +13 -0
  226. data/doc/ex/rect01.rb +14 -0
  227. data/doc/ex/rect02.rb +20 -0
  228. data/doc/ex/rectangle.rb +34 -0
  229. data/doc/ex/reduce_noise.rb +28 -0
  230. data/doc/ex/remap.rb +11 -0
  231. data/doc/ex/remap_images.rb +19 -0
  232. data/doc/ex/resize_to_fill.rb +8 -0
  233. data/doc/ex/resize_to_fit.rb +8 -0
  234. data/doc/ex/roll.rb +9 -0
  235. data/doc/ex/rotate.rb +44 -0
  236. data/doc/ex/rotate_f.rb +14 -0
  237. data/doc/ex/roundrect.rb +33 -0
  238. data/doc/ex/rubyname.rb +30 -0
  239. data/doc/ex/rvg_clippath.rb +12 -0
  240. data/doc/ex/rvg_linecap.rb +42 -0
  241. data/doc/ex/rvg_linejoin.rb +40 -0
  242. data/doc/ex/rvg_opacity.rb +18 -0
  243. data/doc/ex/rvg_pattern.rb +26 -0
  244. data/doc/ex/rvg_stroke_dasharray.rb +11 -0
  245. data/doc/ex/segment.rb +11 -0
  246. data/doc/ex/sepiatone.rb +7 -0
  247. data/doc/ex/shade.rb +11 -0
  248. data/doc/ex/shadow.rb +30 -0
  249. data/doc/ex/shave.rb +15 -0
  250. data/doc/ex/shear.rb +10 -0
  251. data/doc/ex/sketch.rb +17 -0
  252. data/doc/ex/skewx.rb +51 -0
  253. data/doc/ex/skewy.rb +47 -0
  254. data/doc/ex/smile.rb +125 -0
  255. data/doc/ex/solarize.rb +11 -0
  256. data/doc/ex/sparse_color.rb +54 -0
  257. data/doc/ex/splice.rb +8 -0
  258. data/doc/ex/spread.rb +11 -0
  259. data/doc/ex/stegano.rb +55 -0
  260. data/doc/ex/stroke_dasharray.rb +42 -0
  261. data/doc/ex/stroke_fill.rb +10 -0
  262. data/doc/ex/stroke_linecap.rb +44 -0
  263. data/doc/ex/stroke_linejoin.rb +48 -0
  264. data/doc/ex/stroke_width.rb +49 -0
  265. data/doc/ex/swirl.rb +17 -0
  266. data/doc/ex/text.rb +37 -0
  267. data/doc/ex/text01.rb +16 -0
  268. data/doc/ex/text_align.rb +36 -0
  269. data/doc/ex/text_antialias.rb +37 -0
  270. data/doc/ex/text_styles.rb +19 -0
  271. data/doc/ex/text_undercolor.rb +28 -0
  272. data/doc/ex/texture_fill_to_border.rb +34 -0
  273. data/doc/ex/texture_floodfill.rb +32 -0
  274. data/doc/ex/texturefill.rb +24 -0
  275. data/doc/ex/threshold.rb +13 -0
  276. data/doc/ex/to_blob.rb +13 -0
  277. data/doc/ex/translate.rb +39 -0
  278. data/doc/ex/transparent.rb +38 -0
  279. data/doc/ex/transpose.rb +9 -0
  280. data/doc/ex/transverse.rb +9 -0
  281. data/doc/ex/tref01.rb +24 -0
  282. data/doc/ex/triangle01.rb +15 -0
  283. data/doc/ex/trim.rb +23 -0
  284. data/doc/ex/tspan01.rb +17 -0
  285. data/doc/ex/tspan02.rb +17 -0
  286. data/doc/ex/tspan03.rb +19 -0
  287. data/doc/ex/unsharp_mask.rb +28 -0
  288. data/doc/ex/viewex.rb +33 -0
  289. data/doc/ex/vignette.rb +12 -0
  290. data/doc/ex/watermark.rb +27 -0
  291. data/doc/ex/wave.rb +9 -0
  292. data/doc/ex/wet_floor.rb +58 -0
  293. data/doc/ex/writing_mode01.rb +26 -0
  294. data/doc/ex/writing_mode02.rb +26 -0
  295. data/doc/ilist.html +2056 -0
  296. data/doc/image1.html +4680 -0
  297. data/doc/image2.html +3665 -0
  298. data/doc/image3.html +4522 -0
  299. data/doc/imageattrs.html +1638 -0
  300. data/doc/imusage.html +514 -0
  301. data/doc/index.html +416 -0
  302. data/doc/info.html +1499 -0
  303. data/doc/magick.html +565 -0
  304. data/doc/optequiv.html +2435 -0
  305. data/doc/rvg.html +975 -0
  306. data/doc/rvgclip.html +248 -0
  307. data/doc/rvggroup.html +305 -0
  308. data/doc/rvgimage.html +289 -0
  309. data/doc/rvgpattern.html +475 -0
  310. data/doc/rvgshape.html +406 -0
  311. data/doc/rvgstyle.html +270 -0
  312. data/doc/rvgtext.html +465 -0
  313. data/doc/rvgtspan.html +238 -0
  314. data/doc/rvgtut.html +530 -0
  315. data/doc/rvguse.html +145 -0
  316. data/doc/rvgxform.html +294 -0
  317. data/doc/scripts/doc.js +22 -0
  318. data/doc/scripts/stripeTables.js +23 -0
  319. data/doc/struct.html +1339 -0
  320. data/doc/usage.html +1621 -0
  321. data/examples/constitute.rb +7 -0
  322. data/examples/crop_with_gravity.rb +42 -0
  323. data/examples/demo.rb +324 -0
  324. data/examples/describe.rb +43 -0
  325. data/examples/find_similar_region.rb +34 -0
  326. data/examples/histogram.rb +321 -0
  327. data/examples/identify.rb +185 -0
  328. data/examples/image_opacity.rb +29 -0
  329. data/examples/import_export.rb +31 -0
  330. data/examples/pattern_fill.rb +38 -0
  331. data/examples/rotating_text.rb +44 -0
  332. data/examples/spinner.rb +49 -0
  333. data/examples/thumbnail.rb +64 -0
  334. data/examples/vignette.rb +78 -0
  335. data/ext/RMagick/extconf.rb +548 -0
  336. data/ext/RMagick/rmagick.c +401 -0
  337. data/ext/RMagick/rmagick.h +1287 -0
  338. data/ext/RMagick/rmdraw.c +2022 -0
  339. data/ext/RMagick/rmenum.c +1235 -0
  340. data/ext/RMagick/rmfill.c +720 -0
  341. data/ext/RMagick/rmilist.c +1270 -0
  342. data/ext/RMagick/rmimage.c +15427 -0
  343. data/ext/RMagick/rminfo.c +2590 -0
  344. data/ext/RMagick/rmmain.c +1741 -0
  345. data/ext/RMagick/rmmontage.c +519 -0
  346. data/ext/RMagick/rmpixel.c +1114 -0
  347. data/ext/RMagick/rmstruct.c +1124 -0
  348. data/ext/RMagick/rmutil.c +1754 -0
  349. data/lib/rmagick.rb +1 -0
  350. data/lib/rmagick/version.rb +6 -0
  351. data/lib/rmagick_internal.rb +1947 -0
  352. data/lib/rvg/clippath.rb +45 -0
  353. data/lib/rvg/container.rb +122 -0
  354. data/lib/rvg/deep_equal.rb +52 -0
  355. data/lib/rvg/describable.rb +47 -0
  356. data/lib/rvg/embellishable.rb +391 -0
  357. data/lib/rvg/misc.rb +723 -0
  358. data/lib/rvg/paint.rb +50 -0
  359. data/lib/rvg/pathdata.rb +126 -0
  360. data/lib/rvg/rvg.rb +283 -0
  361. data/lib/rvg/stretchable.rb +165 -0
  362. data/lib/rvg/stylable.rb +116 -0
  363. data/lib/rvg/text.rb +172 -0
  364. data/lib/rvg/transformable.rb +126 -0
  365. data/lib/rvg/units.rb +63 -0
  366. data/rmagick.gemspec +46 -0
  367. data/spec/rmagick/ImageList1_spec.rb +24 -0
  368. data/spec/rmagick/draw_spec.rb +156 -0
  369. data/spec/rmagick/image/blue_shift_spec.rb +16 -0
  370. data/spec/rmagick/image/composite_spec.rb +140 -0
  371. data/spec/rmagick/image/constitute_spec.rb +15 -0
  372. data/spec/rmagick/image/dispatch_spec.rb +18 -0
  373. data/spec/rmagick/image/from_blob_spec.rb +14 -0
  374. data/spec/rmagick/image/ping_spec.rb +14 -0
  375. data/spec/rmagick/image/properties_spec.rb +29 -0
  376. data/spec/spec_helper.rb +4 -0
  377. data/test/Image1.rb +565 -0
  378. data/test/Image2.rb +1304 -0
  379. data/test/Image3.rb +1030 -0
  380. data/test/ImageList1.rb +806 -0
  381. data/test/ImageList2.rb +385 -0
  382. data/test/Image_attributes.rb +697 -0
  383. data/test/Import_Export.rb +121 -0
  384. data/test/Info.rb +345 -0
  385. data/test/Magick.rb +321 -0
  386. data/test/Pixel.rb +116 -0
  387. data/test/Preview.rb +57 -0
  388. data/test/cmyk.icm +0 -0
  389. data/test/srgb.icm +0 -0
  390. data/test/test_all_basic.rb +38 -0
  391. data/test/tmpnam_test.rb +50 -0
  392. data/wercker.yml +10 -0
  393. metadata +509 -0
data/doc/ex/enhance.rb ADDED
@@ -0,0 +1,28 @@
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
+ img = img.add_noise(Magick::UniformNoise)
8
+
9
+ eimg = img.enhance
10
+
11
+ # Zoom in so we can see the change
12
+ img.resize!(3)
13
+ eimg.resize!(3)
14
+
15
+ # Make a before-and-after composite
16
+ eimg.crop!(Magick::EastGravity, eimg.columns/2, eimg.rows)
17
+ img = img.composite(eimg, Magick::EastGravity, Magick::OverCompositeOp)
18
+
19
+ # Draw a black line between the before and after parts.
20
+ line = Magick::Draw.new
21
+ line.line(img.columns/2, 0, img.columns/2, img.rows)
22
+ line.draw(img)
23
+
24
+ # Crop everything but the face.
25
+ img.crop!(Magick::CenterGravity, 250, 200)
26
+
27
+ img.write('enhance.jpg')
28
+ exit
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#equalize method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img = img.equalize
9
+
10
+ img.write('equalize.jpg')
11
+ exit
data/doc/ex/evenodd.rb ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rvg/rvg'
3
+
4
+ Magick::RVG.dpi = 90
5
+
6
+ rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
+ canvas.background_fill = 'white'
8
+ canvas.desc = "Example fillrule - nonzero - demonstrates fill_rule=>'nonzero'"
9
+
10
+ canvas.rect(1195, 393, 1, 1).styles(:fill=>'none', :stroke=>'blue')
11
+
12
+ triangle = Magick::RVG::Group.new do |defs|
13
+ defs.path('M 16,0 L -8,9 v-18 z').styles(:fill=>'black', :stroke=>'none')
14
+ end
15
+
16
+ canvas.g.styles(:clip_rule=>'evenodd', :fill=>'red', :stroke=>'black', :stroke_width=>3) do |grp|
17
+ grp.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
18
+ grp.use(triangle).translate(306.21, 249).rotate(72)
19
+ grp.use(triangle).translate(175.16,193.2).rotate(216)
20
+ grp.use(triangle).translate(314.26,161).rotate(0)
21
+ grp.use(triangle).translate(221.16,268.8).rotate(144)
22
+ grp.use(triangle).translate(233.21,126.98).rotate(288)
23
+ grp.path('M 600,81 A 107,107 0 0,1 600,295 A 107,107 0 0,1 600,81 z' \
24
+ 'M 600,139 A 49,49 0 0,1 600,237 A 49,49 0 0,1 600,139 z')
25
+ grp.use(triangle).translate(600,188).rotate(0).translate(107,0).rotate(90)
26
+ grp.use(triangle).translate(600,188).rotate(120).translate(107,0).rotate(90)
27
+ grp.use(triangle).translate(600,188).rotate(240).translate(107,0).rotate(90)
28
+ grp.use(triangle).translate(600,188).rotate(60).translate(49,0).rotate(90)
29
+ grp.use(triangle).translate(600,188).rotate(180).translate(49,0).rotate(90)
30
+ grp.use(triangle).translate(600,188).rotate(300).translate(49,0).rotate(90)
31
+ grp.path('M 950,81 A 107,107 0 0,1 950,295 A 107,107 0 0,1 950,81 z' \
32
+ 'M 950,139 A 49,49 0 0,0 950,237 A 49,49 0 0,0 950,139 z')
33
+ grp.use(triangle).translate(950,188).rotate(0).translate(107,0).rotate(90)
34
+ grp.use(triangle).translate(950,188).rotate(120).translate(107,0).rotate(90)
35
+ grp.use(triangle).translate(950,188).rotate(240).translate(107,0).rotate(90)
36
+ grp.use(triangle).translate(950,188).rotate(60).translate(49,0).rotate(-90)
37
+ grp.use(triangle).translate(950,188).rotate(180).translate(49,0).rotate(-90)
38
+ grp.use(triangle).translate(950,188).rotate(300).translate(49,0).rotate(-90)
39
+ end
40
+ end
41
+
42
+ rvg.draw.write('evenodd.gif')
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Magick::Draw#fill_pattern and #stroke_pattern attributes.
5
+
6
+ temp = Magick::ImageList.new
7
+ temp << Magick::Image.new(5, 10) {self.background_color = 'black'}
8
+ temp << Magick::Image.new(5, 10) {self.background_color = 'gold'}
9
+ stroke_pattern = temp.append(false)
10
+
11
+ img = Magick::Image.new(280, 250) {self.background_color = 'none'}
12
+
13
+ gc = Magick::Draw.new
14
+ gc.annotate(img, 0, 0, 0, 0, "PATT\nERNS") do
15
+ self.gravity = Magick::CenterGravity
16
+ self.font_weight = Magick::BoldWeight
17
+ self.pointsize = 100
18
+ self.fill_pattern = Magick::Image.read('images/Flower_Hat.jpg').first
19
+ self.stroke_width = 5
20
+ self.stroke_pattern = stroke_pattern
21
+ end
22
+
23
+ img.write('fill_pattern.gif')
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ # Demonstrate flatten_images method. Create an image with a drop-shadow effect.
4
+
5
+ require 'rmagick'
6
+
7
+ RMagick = 'RMagick'
8
+
9
+ i = Magick::ImageList.new
10
+
11
+ # Create a background image with a gradient fill
12
+ i.new_image(200, 100, Magick::GradientFill.new(100,50, 100, 50, 'khaki1', 'turquoise'))
13
+
14
+ # Create a transparent image for the text shadow
15
+ i.new_image(200, 100) { self.background_color = 'transparent' }
16
+ primitives = Magick::Draw.new
17
+ primitives.annotate i, 0, 0, 2, 2, RMagick do
18
+ self.pointsize = 32
19
+ self.fill = 'gray50'
20
+ self.gravity = Magick::CenterGravity
21
+ end
22
+
23
+ # Create another transparent image for the text itself
24
+ i.new_image(200, 100) { self.background_color = 'transparent' }
25
+ primitives = Magick::Draw.new
26
+ primitives.annotate i, 0, 0, -2, -2, RMagick do
27
+ self.pointsize = 32
28
+ self.fill = 'red'
29
+ self.stroke = 'black'
30
+ self.gravity = Magick::CenterGravity
31
+ end
32
+
33
+ # Flatten all 3 into a single image.
34
+ # i.display
35
+ i.flatten_images.write 'flatten_images.gif'
36
+ exit
data/doc/ex/flip.rb ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#flip method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img.flip!
9
+
10
+ img.write('flip.jpg')
11
+ exit
data/doc/ex/flop.rb ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#flop method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img.flop!
9
+
10
+ img.write('flop.jpg')
11
+ exit
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rvg/rvg'
3
+
4
+ rvg = Magick::RVG.new(200, 250) do |canvas|
5
+ canvas.background_fill = 'white'
6
+
7
+ canvas.g do |grp|
8
+ grp.g.styles(:font_weight=>'normal', :font_style=>'normal') do |grp2|
9
+ grp2.text(10, 30, 'default size')
10
+ grp2.text(10, 50, ':font_size=>14').styles(:font_size=>14)
11
+ grp2.text(10, 70, ':font_size=>16').styles(:font_size=>16)
12
+ grp2.text(10,100, ':font_size=>24').styles(:font_size=>24)
13
+ end
14
+ end
15
+
16
+ canvas.g.styles(:font_size=>14, :font_weight=>'normal', :font_style=>'normal') do |grp|
17
+ if RUBY_PLATFORM =~ /mswin32/
18
+ grp.text( 8, 120, ":font_family=>'Courier-New'").styles(:font_family=>'Courier-New')
19
+ else
20
+ grp.text( 8, 120, ":font_family=>'Courier'").styles(:font_family=>'Courier')
21
+ end
22
+ grp.text(10, 140, ":font_weight=>'bold'").styles(:font_weight=>'bold')
23
+ grp.text(10, 160, ":font_stretch=>'normal'").styles(:font_stretch=>'normal')
24
+ grp.text(10, 180, ":font_stretch=>'condensed'").styles(:font_stretch=>'condensed')
25
+ grp.text(10, 200, ":font_style=>'italic'").styles(:font_style=>'italic')
26
+ grp.text(10, 220, ':font_weight=>900').styles(:font_weight=>900)
27
+ end
28
+
29
+ canvas.rect(199, 249).styles(:fill=>'none', :stroke=>'blue')
30
+ end
31
+
32
+ rvg.draw.write('font_styles.gif')
data/doc/ex/fonts.rb ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Compute column widths
5
+ name_length = 0
6
+ family_length = 0
7
+ Magick.fonts do |font|
8
+ if font.name.length > name_length
9
+ name_length = font.name.length
10
+ end
11
+ if font.family.length > family_length
12
+ family_length = font.family.length
13
+ end
14
+ end
15
+
16
+ # Print all fonts
17
+ Magick.fonts do |font|
18
+ printf("%-*s %-*s %d %s\t%s\n", name_length, font.name,
19
+ family_length, font.family, font.weight, font.style, font.stretch)
20
+ end
data/doc/ex/frame.rb ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#frame method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img.matte_color='gray75'
9
+ img = img.frame
10
+
11
+ img.write('frame.jpg')
12
+ exit
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#gaussian_blur method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img = img.gaussian_blur(0.0, 3.0)
9
+
10
+ img.write('gaussian_blur.jpg')
11
+ exit
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ TEXT = 'get\nmultiline\ntype\nmetrics'
5
+
6
+ background = Magick::Image.new(200, 200)
7
+ gc = Magick::Draw.new
8
+
9
+ # Draw the text centered on the background
10
+ gc.annotate(background, 0, 0, 0, 0, TEXT) do
11
+ gc.font_family = 'Verdana'
12
+ gc.pointsize = 36
13
+ gc.gravity = Magick::CenterGravity
14
+ gc.stroke = 'none'
15
+ end
16
+
17
+ # Get the metrics
18
+ metrics = gc.get_multiline_type_metrics(background, TEXT)
19
+
20
+ # Compute the corners for a rectangle surrounding the text
21
+ x = (background.columns - metrics.width) / 2
22
+ y = (background.rows - metrics.height) / 2
23
+
24
+ # Draw 2 rectangles over the text.
25
+ gc = Magick::Draw.new
26
+ gc.stroke('red')
27
+ gc.stroke_width(5)
28
+ gc.stroke_linejoin('round')
29
+ gc.fill('cyan')
30
+ gc.fill_opacity(0.10)
31
+ gc.rectangle(x, y, x+metrics.width, y+metrics.height)
32
+
33
+ gc.stroke('white')
34
+ gc.stroke_width(1)
35
+ gc.fill('none')
36
+ gc.rectangle(x, y, x+metrics.width, y+metrics.height)
37
+ gc.draw(background)
38
+
39
+ background.border!(1,1, 'blue')
40
+
41
+ background.write('get_multiline_type_metrics.gif')
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate partial transparency and the get_pixels and
5
+ # store_pixels methods by creating an image that goes from
6
+ # full-color on the left to monochrome on the right.
7
+
8
+ # Read the colorful picture of a rock formation. Scale
9
+ # it to 300 pixels high because we don't want a big picture.
10
+ rocks = Magick::Image.read('images/Red_Rocks.jpg').first
11
+ rocks.scale!(250.0/rocks.rows)
12
+
13
+ # Make a monochrome copy. See Image#quantize for details
14
+ grayrocks = rocks.quantize(256, Magick::GRAYColorspace)
15
+
16
+ rows = grayrocks.rows
17
+ cols = grayrocks.columns
18
+
19
+ # Create an array of opacity values, proceeding from
20
+ # transparent to opaque. The array should have as many
21
+ # elements as there are columns in the image. The first
22
+ # element should be TransparentOpacity and each succeeding
23
+ # element slightly more opaque than its predecessor.
24
+ step = Magick::TransparentOpacity / cols.to_f
25
+ opacity_steps = Array.new(cols)
26
+ cols.times do |x|
27
+ opacity_steps[x] = Magick::TransparentOpacity - Integer(x * step)
28
+ if opacity_steps[x] < Magick::OpaqueOpacity
29
+ opacity_steps[x] = Magick::OpaqueOpacity
30
+ end
31
+ end
32
+
33
+ # Get each row of pixels from the mono image.
34
+ # Copy the pre-computed opacity values to the pixels.
35
+ # Store the pixels back.
36
+ rows.times do |y|
37
+ pixels = grayrocks.get_pixels(0, y, cols, 1)
38
+ pixels.each_with_index { |p,x| p.opacity = opacity_steps[x] }
39
+ grayrocks.store_pixels(0, y, cols, 1, pixels)
40
+ end
41
+
42
+ # Composite the mono version of the image over the color version.
43
+ grayrocks.matte = true
44
+ combine = rocks.composite(grayrocks, Magick::CenterGravity, Magick::OverCompositeOp)
45
+ #combine.display
46
+ combine.write 'get_pixels.jpg'
47
+ exit
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Add a method for drawing braces.
5
+ module Magick
6
+ class Draw
7
+ # (w,h) - width & height of rectangle enclosing brace.
8
+ # Normally the brace is drawn with its opening to the
9
+ # left and its lower point on the origin.
10
+ #
11
+ # Set w < 0 to draw right-opening brace. Set h < 0 to
12
+ # position top point at origin.
13
+ #
14
+ # The placement & orientation is affected by the
15
+ # current user coordinate system.
16
+ def brace(w, h)
17
+ fail(ArgumentError, 'width must be != 0') unless w != 0
18
+ fail(ArgumentError, 'height must be != 0') unless h != 0
19
+ path("M0,0 Q#{w},0 #{w/2.0},#{-h/4.0} T#{w},#{-h/2.0}" \
20
+ "Q0,#{-h/2.0} #{w/2.0},#{-(3.0*h/4.0)} T0,#{-h}")
21
+ end
22
+ end
23
+ end
24
+
25
+ Origin_x = 110
26
+ Origin_y = 230
27
+ Glyph = 'g'
28
+ Face = RUBY_PLATFORM =~ /mswin/ ? 'Verdana' : 'Times'
29
+
30
+ canvas = Magick::Image.new(410, 320, Magick::HatchFill.new('white', 'lightcyan2'))
31
+
32
+ # Draw a big lowercase 'g' on the canvas. Leave room on all sides for
33
+ # the labels. Use 'undercolor' to set off the glyph.
34
+ glyph = Magick::Draw.new
35
+ glyph.annotate(canvas, 0, 0, Origin_x, Origin_y, Glyph) do
36
+ glyph.pointsize = 124
37
+ glyph.stroke = 'none'
38
+ glyph.fill = 'black'
39
+ glyph.font_family = Face
40
+ glyph.undercolor = '#ffff00c0'
41
+ end
42
+
43
+ # Call get_type_metrics. This is what this example's all about.
44
+ metrics = glyph.get_type_metrics(canvas, Glyph)
45
+
46
+ gc = Magick::Draw.new
47
+ gc.translate(Origin_x, Origin_y)
48
+
49
+ # Draw the origin as a big red dot.
50
+ gc.stroke('red')
51
+ gc.fill('red')
52
+ gc.circle(0, 0, 0, 2)
53
+
54
+ # All our lines will be medium-gray, dashed, and thin.
55
+ gc.stroke('gray50')
56
+ gc.stroke_dasharray(5,2)
57
+ gc.stroke_width(1)
58
+ gc.fill('none')
59
+
60
+ # baseline
61
+ gc.line(-10, 0, metrics.width+20, 0)
62
+
63
+ # a vertical line through the origin
64
+ gc.line(0, -metrics.descent-metrics.height-10, 0, -metrics.descent+15)
65
+
66
+ # descent
67
+ gc.line(-10, -metrics.descent, metrics.width+20, -metrics.descent)
68
+
69
+ # ascent
70
+ gc.line(-10, -metrics.ascent, metrics.width+20, -metrics.ascent)
71
+
72
+ # height
73
+ gc.line(-10, -metrics.descent-metrics.height,
74
+ metrics.width+10, -metrics.descent-metrics.height)
75
+
76
+ # width
77
+ gc.line(metrics.width, -metrics.descent-metrics.height-10,
78
+ metrics.width, -metrics.descent+20)
79
+
80
+ # max_advance
81
+ gc.line(metrics.max_advance, -10, metrics.max_advance, -metrics.descent+20)
82
+
83
+ gc.draw(canvas)
84
+
85
+ # Draw the braces and labels. Position the braces by transforming the
86
+ # user coordinate system with translate and rotate methods.
87
+ gc = Magick::Draw.new
88
+ gc.font_family('Face')
89
+ gc.pointsize(13)
90
+ gc.fill('none')
91
+ gc.stroke('black')
92
+ gc.stroke_width(1)
93
+ gc.translate(Origin_x, Origin_y)
94
+
95
+ # between origin and descent
96
+ gc.push
97
+ gc.translate(metrics.width+23, 0)
98
+ gc.brace(10, metrics.descent)
99
+ gc.pop
100
+
101
+ # between origin and ascent
102
+ gc.push
103
+ gc.translate(metrics.width+23, 0)
104
+ gc.brace(10, metrics.ascent)
105
+ gc.pop
106
+
107
+ # between origin and height
108
+ gc.push
109
+ gc.translate(-13, -metrics.descent-metrics.height)
110
+ gc.rotate(180)
111
+ gc.brace(10, metrics.height)
112
+ gc.pop
113
+
114
+ # between origin and width
115
+ gc.push
116
+ gc.translate(metrics.width, -metrics.descent-metrics.height-10-3)
117
+ gc.rotate(-90)
118
+ gc.brace(10, metrics.width)
119
+ gc.pop
120
+
121
+ # between origin and max_advance
122
+ gc.push
123
+ gc.translate(0, -metrics.descent+15)
124
+ gc.rotate(90)
125
+ gc.brace(10, metrics.max_advance)
126
+ gc.pop
127
+
128
+ # Add labels
129
+ gc.font_weight(Magick::NormalWeight)
130
+ gc.font_style(Magick::NormalStyle)
131
+ gc.stroke('none')
132
+ gc.fill('black')
133
+ gc.text(metrics.width+40, -(metrics.ascent/2)+4, 'ascent')
134
+ gc.text(metrics.width+40, -(metrics.descent/2)+4, 'descent')
135
+ gc.text(-60, -metrics.descent-metrics.height/2+4, 'height')
136
+ gc.text((metrics.width/2)-15, -metrics.descent-metrics.height-25, 'width')
137
+ gc.text((metrics.max_advance)/2-38, -metrics.descent+35, 'max_advance')
138
+
139
+ gc.draw(canvas)
140
+ canvas.border!(1,1,'blue')
141
+ canvas.write('get_type_metrics.gif')