rmagick-windows 2.16.1

Sign up to get free protection for your applications and to get access to all the features.
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
+