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
@@ -0,0 +1,519 @@
1
+ /**************************************************************************//**
2
+ * Contains Montage class methods.
3
+ *
4
+ * Copyright © 2002 - 2009 by Timothy P. Hunter
5
+ *
6
+ * Changes since Nov. 2009 copyright © by Benjamin Thomas and Omer Bar-or
7
+ *
8
+ * @file rmmontage.c
9
+ * @version $Id: rmmontage.c,v 1.5 2009/12/20 02:33:33 baror Exp $
10
+ * @author Tim Hunter
11
+ ******************************************************************************/
12
+
13
+ #include "rmagick.h"
14
+
15
+
16
+
17
+
18
+
19
+ /**
20
+ * Destory the MontageInfo struct and free the Montage struct.
21
+ *
22
+ * No Ruby usage (internal function)
23
+ *
24
+ * Notes:
25
+ * - If the Magick::Montage#texture method wrote a texture file, the file is
26
+ * deleted here.
27
+ *
28
+ * @param obj the montage object
29
+ */
30
+ static void
31
+ destroy_Montage(void *obj)
32
+ {
33
+ Montage *montage = obj;
34
+
35
+ // If we saved a temporary texture image, delete it now.
36
+ if (montage->info && montage->info->texture != NULL)
37
+ {
38
+ rm_delete_temp_image(montage->info->texture);
39
+ magick_free(montage->info->texture);
40
+ montage->info->texture = NULL;
41
+ }
42
+ if (montage->info)
43
+ {
44
+ (void) DestroyMontageInfo(montage->info);
45
+ montage->info = NULL;
46
+ }
47
+ xfree(montage);
48
+ }
49
+
50
+
51
+ /**
52
+ * Create a new Montage object.
53
+ *
54
+ * Ruby usage:
55
+ * - @verbatim Montage.new @endverbatim
56
+ *
57
+ * @param class the Ruby class to use
58
+ * @return a new Montage object
59
+ */
60
+ VALUE
61
+ Montage_alloc(VALUE class)
62
+ {
63
+ MontageInfo *montage_info;
64
+ Montage *montage;
65
+ Info *image_info;
66
+ VALUE montage_obj;
67
+
68
+ // DO NOT call rm_info_new - we don't want to support an Info parm block.
69
+ image_info = CloneImageInfo(NULL);
70
+ if (!image_info)
71
+ {
72
+ rb_raise(rb_eNoMemError, "not enough memory to initialize Info object");
73
+ }
74
+
75
+ montage_info = CloneMontageInfo(image_info, NULL);
76
+ (void) (void) DestroyImageInfo(image_info);
77
+
78
+ if (!montage_info)
79
+ {
80
+ rb_raise(rb_eNoMemError, "not enough memory to initialize Magick::Montage object");
81
+ }
82
+
83
+ montage = ALLOC(Montage);
84
+ montage->info = montage_info;
85
+ montage->compose = OverCompositeOp;
86
+ montage_obj = Data_Wrap_Struct(class, NULL, destroy_Montage, montage);
87
+
88
+ RB_GC_GUARD(montage_obj);
89
+
90
+ return montage_obj;
91
+ }
92
+
93
+
94
+ /**
95
+ * Set background_color value.
96
+ *
97
+ * Ruby usage:
98
+ * - @verbatim Magick::Montage#background_color(color-name) @endverbatim
99
+ *
100
+ * @param self this object
101
+ * @param color the color name
102
+ * @return self
103
+ */
104
+ VALUE
105
+ Montage_background_color_eq(VALUE self, VALUE color)
106
+ {
107
+ Montage *montage;
108
+
109
+ Data_Get_Struct(self, Montage, montage);
110
+ Color_to_PixelPacket(&montage->info->background_color, color);
111
+ return self;
112
+ }
113
+
114
+
115
+ /**
116
+ * Set border_color value.
117
+ *
118
+ * Ruby usage:
119
+ * - @verbatim Magick::Montage#border_color(color-name) @endverbatim
120
+ *
121
+ * @param self this object
122
+ * @param color the color name
123
+ * @return self
124
+ */
125
+ VALUE
126
+ Montage_border_color_eq(VALUE self, VALUE color)
127
+ {
128
+ Montage *montage;
129
+
130
+ Data_Get_Struct(self, Montage, montage);
131
+ Color_to_PixelPacket(&montage->info->border_color, color);
132
+ return self;
133
+ }
134
+
135
+
136
+ /**
137
+ * Set border_width value.
138
+ *
139
+ * Ruby usage:
140
+ * - @verbatim Magick::Montage#border_width(width) @endverbatim
141
+ *
142
+ * @param self this object
143
+ * @param width the width
144
+ * @return self
145
+ */
146
+ VALUE
147
+ Montage_border_width_eq(VALUE self, VALUE width)
148
+ {
149
+ Montage *montage;
150
+
151
+ Data_Get_Struct(self, Montage, montage);
152
+ montage->info->border_width = NUM2ULONG(width);
153
+ return self;
154
+ }
155
+
156
+
157
+ /**
158
+ * Set a composition operator.
159
+ *
160
+ * Ruby usage:
161
+ * - @verbatim Magick::Montage#compose(width) @endverbatim
162
+ *
163
+ * @param self this object
164
+ * @param compose the composition operator
165
+ * @return self
166
+ */
167
+ VALUE
168
+ Montage_compose_eq(VALUE self, VALUE compose)
169
+ {
170
+ Montage *montage;
171
+
172
+ Data_Get_Struct(self, Montage, montage);
173
+ VALUE_TO_ENUM(compose, montage->compose, CompositeOperator);
174
+ return self;
175
+ }
176
+
177
+
178
+ /**
179
+ * Set filename value.
180
+ *
181
+ * Ruby usage:
182
+ * - @verbatim Magick::Montage#filename(name) @endverbatim
183
+ *
184
+ * @param self this object
185
+ * @param filename the filename
186
+ * @return self
187
+ */
188
+ VALUE
189
+ Montage_filename_eq(VALUE self, VALUE filename)
190
+ {
191
+ Montage *montage;
192
+
193
+ Data_Get_Struct(self, Montage, montage);
194
+ strncpy(montage->info->filename, StringValuePtr(filename), MaxTextExtent-1);
195
+ return self;
196
+ }
197
+
198
+
199
+ /**
200
+ * Set fill value.
201
+ *
202
+ * Ruby usage:
203
+ * - @verbatim Magick::Montage#fill(color-name) @endverbatim
204
+ *
205
+ * @param self this object
206
+ * @param color the color name
207
+ * @return self
208
+ */
209
+ VALUE
210
+ Montage_fill_eq(VALUE self, VALUE color)
211
+ {
212
+ Montage *montage;
213
+
214
+ Data_Get_Struct(self, Montage, montage);
215
+ Color_to_PixelPacket(&montage->info->fill, color);
216
+ return self;
217
+ }
218
+
219
+
220
+ /**
221
+ * Set font value.
222
+ *
223
+ * Ruby usage:
224
+ * - @verbatim Magick::Montage#font(font-name) @endverbatim
225
+ *
226
+ * @param self this object
227
+ * @param font the font name
228
+ * @return self
229
+ */
230
+ VALUE
231
+ Montage_font_eq(VALUE self, VALUE font)
232
+ {
233
+ Montage *montage;
234
+
235
+ Data_Get_Struct(self, Montage, montage);
236
+ magick_clone_string(&montage->info->font, StringValuePtr(font));
237
+
238
+ return self;
239
+ }
240
+
241
+
242
+ /**
243
+ * Set frame value.
244
+ *
245
+ * Ruby usage:
246
+ * - @verbatim Magick::Montage#frame(frame-geometry) @endverbatim
247
+ *
248
+ * Notes:
249
+ * - The geometry is a string in the form:
250
+ * @verbatim <width>x<height>+<outer-bevel-width>+<inner-bevel-width> @endverbatim
251
+ * or a Geometry object
252
+ *
253
+ * @param self this object
254
+ * @param frame_arg the frame geometry
255
+ * @return self
256
+ */
257
+ VALUE
258
+ Montage_frame_eq(VALUE self, VALUE frame_arg)
259
+ {
260
+ Montage *montage;
261
+ VALUE frame;
262
+
263
+ Data_Get_Struct(self, Montage, montage);
264
+ frame = rm_to_s(frame_arg);
265
+ magick_clone_string(&montage->info->frame, StringValuePtr(frame));
266
+
267
+ RB_GC_GUARD(frame);
268
+
269
+ return self;
270
+ }
271
+
272
+
273
+ /**
274
+ * Set geometry value.
275
+ *
276
+ * Ruby usage:
277
+ * - @verbatim Magick::Montage#geometry(geometry) @endverbatim
278
+ *
279
+ * @param self this object
280
+ * @param geometry_arg the geometry
281
+ * @return self
282
+ */
283
+ VALUE
284
+ Montage_geometry_eq(VALUE self, VALUE geometry_arg)
285
+ {
286
+ Montage *montage;
287
+ VALUE geometry;
288
+
289
+ Data_Get_Struct(self, Montage, montage);
290
+ geometry = rm_to_s(geometry_arg);
291
+ magick_clone_string(&montage->info->geometry, StringValuePtr(geometry));
292
+
293
+ RB_GC_GUARD(geometry);
294
+
295
+ return self;
296
+ }
297
+
298
+
299
+ /**
300
+ * Set gravity value.
301
+ *
302
+ * Ruby usage:
303
+ * - @verbatim Magick::Montage#gravity(gravity-type) @endverbatim
304
+ *
305
+ * @param self this object
306
+ * @param gravity the gravity type
307
+ * @return self
308
+ */
309
+ VALUE
310
+ Montage_gravity_eq(VALUE self, VALUE gravity)
311
+ {
312
+ Montage *montage;
313
+
314
+ Data_Get_Struct(self, Montage, montage);
315
+ VALUE_TO_ENUM(gravity, montage->info->gravity, GravityType);
316
+ return self;
317
+ }
318
+
319
+
320
+ /**
321
+ * Initialize a Montage object. Does nothing currently.
322
+ *
323
+ * Ruby usage:
324
+ * - @verbatim Magick::Montage#initialize @endverbatim
325
+ *
326
+ * @param self this object
327
+ * @return self
328
+ */
329
+ VALUE
330
+ Montage_initialize(VALUE self)
331
+ {
332
+ // Nothing to do!
333
+ return self;
334
+ }
335
+
336
+
337
+ /**
338
+ * Set matte_color value.
339
+ *
340
+ * Ruby usage:
341
+ * - @verbatim Magick::Montage#matte_color(color-name) @endverbatim
342
+ *
343
+ * @param self this object
344
+ * @param color the color name
345
+ * @return self
346
+ */
347
+ VALUE
348
+ Montage_matte_color_eq(VALUE self, VALUE color)
349
+ {
350
+ Montage *montage;
351
+
352
+ Data_Get_Struct(self, Montage, montage);
353
+ Color_to_PixelPacket(&montage->info->matte_color, color);
354
+ return self;
355
+ }
356
+
357
+
358
+ /**
359
+ * Set pointsize value.
360
+ *
361
+ * Ruby usage:
362
+ * - @verbatim Magick::Montage#pointsize= @endverbatim
363
+ *
364
+ * @param self this object
365
+ * @param size the point size
366
+ * @return self
367
+ */
368
+ VALUE
369
+ Montage_pointsize_eq(VALUE self, VALUE size)
370
+ {
371
+ Montage *montage;
372
+
373
+ Data_Get_Struct(self, Montage, montage);
374
+ montage->info->pointsize = NUM2DBL(size);
375
+ return self;
376
+ }
377
+
378
+
379
+ /**
380
+ * Set shadow value.
381
+ *
382
+ * Ruby usage:
383
+ * - @verbatim Magick::Montage#shadow= @endverbatim
384
+ *
385
+ * @param self this object
386
+ * @param shadow the shadow
387
+ * @return self
388
+ */
389
+ VALUE
390
+ Montage_shadow_eq(VALUE self, VALUE shadow)
391
+ {
392
+ Montage *montage;
393
+
394
+ Data_Get_Struct(self, Montage, montage);
395
+ montage->info->shadow = (MagickBooleanType) RTEST(shadow);
396
+ return self;
397
+ }
398
+
399
+
400
+ /**
401
+ * Set stroke value.
402
+ *
403
+ * Ruby usage:
404
+ * - @verbatim Magick::Montage#stroke(color-name) @endverbatim
405
+ *
406
+ * @param self this object
407
+ * @param color the color name
408
+ * @return self
409
+ */
410
+ VALUE
411
+ Montage_stroke_eq(VALUE self, VALUE color)
412
+ {
413
+ Montage *montage;
414
+
415
+ Data_Get_Struct(self, Montage, montage);
416
+ Color_to_PixelPacket(&montage->info->stroke, color);
417
+ return self;
418
+ }
419
+
420
+
421
+ /**
422
+ * Set texture value.
423
+ *
424
+ * Ruby usage:
425
+ * - @verbatim Montage#texture(texture-image) @endverbatim
426
+ *
427
+ * @param self this object
428
+ * @param texture the texture image
429
+ * @return self
430
+ */
431
+ VALUE
432
+ Montage_texture_eq(VALUE self, VALUE texture)
433
+ {
434
+ Montage *montage;
435
+ Image *texture_image;
436
+ char temp_name[MaxTextExtent];
437
+
438
+ Data_Get_Struct(self, Montage, montage);
439
+
440
+ // If we had a previously defined temp texture image,
441
+ // remove it now in preparation for this new one.
442
+ if (montage->info->texture)
443
+ {
444
+ rm_delete_temp_image(montage->info->texture);
445
+ magick_free(montage->info->texture);
446
+ montage->info->texture = NULL;
447
+ }
448
+
449
+ texture = rm_cur_image(texture);
450
+ texture_image = rm_check_destroyed(texture);
451
+
452
+ // Write a temp copy of the image & save its name.
453
+ rm_write_temp_image(texture_image, temp_name);
454
+ magick_clone_string(&montage->info->texture, temp_name);
455
+
456
+ return self;
457
+ }
458
+
459
+
460
+ /**
461
+ * Set tile value.
462
+ *
463
+ * Ruby usage:
464
+ * - @verbatim Magick::Montage#tile(tile) @endverbatim
465
+ *
466
+ * @param self this object
467
+ * @param tile_arg the tile
468
+ * @return self
469
+ */
470
+ VALUE
471
+ Montage_tile_eq(VALUE self, VALUE tile_arg)
472
+ {
473
+ Montage *montage;
474
+ VALUE tile;
475
+
476
+ Data_Get_Struct(self, Montage, montage);
477
+ tile = rm_to_s(tile_arg);
478
+ magick_clone_string(&montage->info->tile, StringValuePtr(tile));
479
+
480
+ RB_GC_GUARD(tile);
481
+
482
+ return self;
483
+ }
484
+
485
+
486
+ /**
487
+ * Set title value.
488
+ *
489
+ * Ruby usage:
490
+ * - @verbatim Magick::Montage#title(title) @endverbatim
491
+ *
492
+ * @param self this object
493
+ * @param title the title
494
+ * @return self
495
+ */
496
+ VALUE
497
+ Montage_title_eq(VALUE self, VALUE title)
498
+ {
499
+ Montage *montage;
500
+
501
+ Data_Get_Struct(self, Montage, montage);
502
+ magick_clone_string(&montage->info->title, StringValuePtr(title));
503
+ return self;
504
+ }
505
+
506
+
507
+ /**
508
+ * Return a new Magick::Montage object.
509
+ *
510
+ * No Ruby usage (internal function)
511
+ *
512
+ * @return a new Magick::Montage object
513
+ */
514
+ VALUE
515
+ rm_montage_new(void)
516
+ {
517
+ return Montage_initialize(Montage_alloc(Class_Montage));
518
+ }
519
+