rmagick 2.16.0 → 5.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (441) hide show
  1. checksums.yaml +5 -5
  2. data/.devcontainer/Dockerfile +14 -0
  3. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  4. data/.devcontainer/devcontainer.json +11 -0
  5. data/.devcontainer/setup-repo.sh +10 -0
  6. data/.devcontainer/setup-user.sh +45 -0
  7. data/.editorconfig +3 -0
  8. data/.github/ISSUE_TEMPLATE.md +17 -0
  9. data/.github/workflows/ci.yml +157 -0
  10. data/.gitignore +9 -1
  11. data/.rspec +1 -0
  12. data/.rubocop.yml +37 -340
  13. data/.rubocop_todo.yml +456 -0
  14. data/.yardopts +5 -0
  15. data/CHANGELOG.md +536 -0
  16. data/CODE_OF_CONDUCT.md +122 -7
  17. data/CONTRIBUTING.md +37 -6
  18. data/Gemfile +18 -4
  19. data/README.md +319 -0
  20. data/Rakefile +83 -98
  21. data/before_install_linux.sh +65 -28
  22. data/before_install_osx.sh +58 -2
  23. data/ext/RMagick/extconf.rb +310 -393
  24. data/ext/RMagick/{rmagick.c → rmagick.cpp} +119 -127
  25. data/ext/RMagick/rmagick.h +290 -363
  26. data/ext/RMagick/rmagick_gvl.h +224 -0
  27. data/ext/RMagick/rmdraw.cpp +1696 -0
  28. data/ext/RMagick/rmenum.cpp +796 -0
  29. data/ext/RMagick/{rmfill.c → rmfill.cpp} +287 -197
  30. data/ext/RMagick/rmilist.cpp +1275 -0
  31. data/ext/RMagick/rmimage.cpp +16459 -0
  32. data/ext/RMagick/{rminfo.c → rminfo.cpp} +738 -910
  33. data/ext/RMagick/rmkinfo.cpp +210 -0
  34. data/ext/RMagick/rmmain.cpp +1923 -0
  35. data/ext/RMagick/rmmontage.cpp +474 -0
  36. data/ext/RMagick/rmpixel.cpp +1322 -0
  37. data/ext/RMagick/{rmstruct.c → rmstruct.cpp} +104 -284
  38. data/ext/RMagick/{rmutil.c → rmutil.cpp} +500 -433
  39. data/lib/rmagick/version.rb +5 -4
  40. data/lib/rmagick.rb +2 -0
  41. data/lib/rmagick_internal.rb +397 -459
  42. data/lib/rvg/clippath.rb +3 -4
  43. data/lib/rvg/container.rb +30 -22
  44. data/lib/rvg/deep_equal.rb +11 -11
  45. data/lib/rvg/describable.rb +2 -2
  46. data/lib/rvg/embellishable.rb +67 -68
  47. data/lib/rvg/misc.rb +139 -142
  48. data/lib/rvg/paint.rb +2 -1
  49. data/lib/rvg/pathdata.rb +7 -8
  50. data/lib/rvg/rvg.rb +49 -46
  51. data/lib/rvg/stretchable.rb +22 -28
  52. data/lib/rvg/stylable.rb +12 -10
  53. data/lib/rvg/text.rb +169 -165
  54. data/lib/rvg/transformable.rb +17 -16
  55. data/lib/rvg/units.rb +5 -5
  56. data/rmagick.gemspec +7 -41
  57. data/sig/rmagick/_draw_common_methods.rbs +64 -0
  58. data/sig/rmagick/_image_common_methods.rbs +389 -0
  59. data/sig/rmagick/draw.rbs +38 -0
  60. data/sig/rmagick/draw_attribute.rbs +28 -0
  61. data/sig/rmagick/enum.rbs +814 -0
  62. data/sig/rmagick/error.rbs +11 -0
  63. data/sig/rmagick/fill.rbs +21 -0
  64. data/sig/rmagick/geometry.rbs +14 -0
  65. data/sig/rmagick/image.rbs +194 -0
  66. data/sig/rmagick/image_list.rbs +181 -0
  67. data/sig/rmagick/iptc.rbs +101 -0
  68. data/sig/rmagick/kernel_info.rbs +12 -0
  69. data/sig/rmagick/optional_method_arguments.rbs +10 -0
  70. data/sig/rmagick/pixel.rbs +46 -0
  71. data/sig/rmagick/struct.rbs +90 -0
  72. data/sig/rmagick.rbs +43 -0
  73. data/sig/rvg/clippath.rbs +34 -0
  74. data/sig/rvg/container.rbs +78 -0
  75. data/sig/rvg/deep_equal.rbs +48 -0
  76. data/sig/rvg/describable.rbs +30 -0
  77. data/sig/rvg/embellishable.rbs +226 -0
  78. data/sig/rvg/misc.rbs +145 -0
  79. data/sig/rvg/paint.rbs +55 -0
  80. data/sig/rvg/pathdata.rbs +77 -0
  81. data/sig/rvg/rvg.rbs +125 -0
  82. data/sig/rvg/stretchable.rbs +56 -0
  83. data/sig/rvg/stylable.rbs +66 -0
  84. data/sig/rvg/text.rbs +118 -0
  85. data/sig/rvg/transformable.rbs +59 -0
  86. data/sig/rvg/units.rbs +33 -0
  87. metadata +68 -428
  88. data/.hound.yml +0 -2
  89. data/.simplecov +0 -27
  90. data/.travis.yml +0 -74
  91. data/Doxyfile +0 -1514
  92. data/README.textile +0 -251
  93. data/deprecated/RMagick.rb +0 -6
  94. data/doc/.cvsignore +0 -1
  95. data/doc/comtasks.html +0 -287
  96. data/doc/constants.html +0 -1581
  97. data/doc/css/doc.css +0 -299
  98. data/doc/css/popup.css +0 -34
  99. data/doc/css/ref.css +0 -67
  100. data/doc/draw.html +0 -3272
  101. data/doc/ex/InitialCoords.rb +0 -22
  102. data/doc/ex/NewCoordSys.rb +0 -30
  103. data/doc/ex/OrigCoordSys.rb +0 -16
  104. data/doc/ex/PreserveAspectRatio.rb +0 -204
  105. data/doc/ex/RotateScale.rb +0 -36
  106. data/doc/ex/Skew.rb +0 -38
  107. data/doc/ex/Use01.rb +0 -15
  108. data/doc/ex/Use02.rb +0 -20
  109. data/doc/ex/Use03.rb +0 -16
  110. data/doc/ex/ViewBox.rb +0 -31
  111. data/doc/ex/adaptive_threshold.rb +0 -9
  112. data/doc/ex/add_noise.rb +0 -16
  113. data/doc/ex/affine.rb +0 -48
  114. data/doc/ex/affine_transform.rb +0 -20
  115. data/doc/ex/arc.rb +0 -49
  116. data/doc/ex/arcpath.rb +0 -32
  117. data/doc/ex/arcs01.rb +0 -28
  118. data/doc/ex/arcs02.rb +0 -59
  119. data/doc/ex/average.rb +0 -15
  120. data/doc/ex/axes.rb +0 -64
  121. data/doc/ex/baseline_shift01.rb +0 -17
  122. data/doc/ex/bilevel_channel.rb +0 -8
  123. data/doc/ex/blur_image.rb +0 -12
  124. data/doc/ex/border.rb +0 -10
  125. data/doc/ex/bounding_box.rb +0 -42
  126. data/doc/ex/cbezier1.rb +0 -41
  127. data/doc/ex/cbezier2.rb +0 -41
  128. data/doc/ex/cbezier3.rb +0 -41
  129. data/doc/ex/cbezier4.rb +0 -42
  130. data/doc/ex/cbezier5.rb +0 -42
  131. data/doc/ex/cbezier6.rb +0 -53
  132. data/doc/ex/channel.rb +0 -25
  133. data/doc/ex/charcoal.rb +0 -12
  134. data/doc/ex/chop.rb +0 -29
  135. data/doc/ex/circle.rb +0 -33
  136. data/doc/ex/circle01.rb +0 -16
  137. data/doc/ex/clip_path.rb +0 -60
  138. data/doc/ex/coalesce.rb +0 -57
  139. data/doc/ex/color_fill_to_border.rb +0 -29
  140. data/doc/ex/color_floodfill.rb +0 -28
  141. data/doc/ex/color_histogram.rb +0 -47
  142. data/doc/ex/color_reset.rb +0 -11
  143. data/doc/ex/colorize.rb +0 -16
  144. data/doc/ex/colors.rb +0 -64
  145. data/doc/ex/compose_mask.rb +0 -22
  146. data/doc/ex/composite.rb +0 -133
  147. data/doc/ex/composite_layers.rb +0 -53
  148. data/doc/ex/composite_tiled.rb +0 -21
  149. data/doc/ex/contrast.rb +0 -36
  150. data/doc/ex/crop.rb +0 -31
  151. data/doc/ex/crop_with_gravity.rb +0 -42
  152. data/doc/ex/cubic01.rb +0 -43
  153. data/doc/ex/cubic02.rb +0 -91
  154. data/doc/ex/cycle_colormap.rb +0 -21
  155. data/doc/ex/dissolve.rb +0 -12
  156. data/doc/ex/drawcomp.rb +0 -42
  157. data/doc/ex/drop_shadow.rb +0 -60
  158. data/doc/ex/edge.rb +0 -11
  159. data/doc/ex/ellipse.rb +0 -45
  160. data/doc/ex/ellipse01.rb +0 -21
  161. data/doc/ex/emboss.rb +0 -11
  162. data/doc/ex/enhance.rb +0 -28
  163. data/doc/ex/equalize.rb +0 -11
  164. data/doc/ex/evenodd.rb +0 -42
  165. data/doc/ex/fill_pattern.rb +0 -23
  166. data/doc/ex/flatten_images.rb +0 -36
  167. data/doc/ex/flip.rb +0 -11
  168. data/doc/ex/flop.rb +0 -11
  169. data/doc/ex/font_styles.rb +0 -32
  170. data/doc/ex/fonts.rb +0 -20
  171. data/doc/ex/frame.rb +0 -12
  172. data/doc/ex/gaussian_blur.rb +0 -11
  173. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  174. data/doc/ex/get_pixels.rb +0 -47
  175. data/doc/ex/get_type_metrics.rb +0 -141
  176. data/doc/ex/gradientfill.rb +0 -27
  177. data/doc/ex/grav.rb +0 -45
  178. data/doc/ex/gravity.rb +0 -80
  179. data/doc/ex/group.rb +0 -26
  180. data/doc/ex/hatchfill.rb +0 -27
  181. data/doc/ex/image.rb +0 -44
  182. data/doc/ex/images/Apple.miff +0 -0
  183. data/doc/ex/images/Ballerina.jpg +0 -0
  184. data/doc/ex/images/Ballerina3.jpg +0 -0
  185. data/doc/ex/images/Button_0.gif +0 -0
  186. data/doc/ex/images/Button_1.gif +0 -0
  187. data/doc/ex/images/Button_2.gif +0 -0
  188. data/doc/ex/images/Button_3.gif +0 -0
  189. data/doc/ex/images/Button_4.gif +0 -0
  190. data/doc/ex/images/Button_5.gif +0 -0
  191. data/doc/ex/images/Button_6.gif +0 -0
  192. data/doc/ex/images/Button_7.gif +0 -0
  193. data/doc/ex/images/Button_8.gif +0 -0
  194. data/doc/ex/images/Button_9.gif +0 -0
  195. data/doc/ex/images/Button_A.gif +0 -0
  196. data/doc/ex/images/Button_B.gif +0 -0
  197. data/doc/ex/images/Button_C.gif +0 -0
  198. data/doc/ex/images/Button_D.gif +0 -0
  199. data/doc/ex/images/Button_E.gif +0 -0
  200. data/doc/ex/images/Button_F.gif +0 -0
  201. data/doc/ex/images/Button_G.gif +0 -0
  202. data/doc/ex/images/Button_H.gif +0 -0
  203. data/doc/ex/images/Button_I.gif +0 -0
  204. data/doc/ex/images/Button_J.gif +0 -0
  205. data/doc/ex/images/Button_K.gif +0 -0
  206. data/doc/ex/images/Button_L.gif +0 -0
  207. data/doc/ex/images/Button_M.gif +0 -0
  208. data/doc/ex/images/Button_N.gif +0 -0
  209. data/doc/ex/images/Button_O.gif +0 -0
  210. data/doc/ex/images/Button_P.gif +0 -0
  211. data/doc/ex/images/Button_Q.gif +0 -0
  212. data/doc/ex/images/Button_R.gif +0 -0
  213. data/doc/ex/images/Button_S.gif +0 -0
  214. data/doc/ex/images/Button_T.gif +0 -0
  215. data/doc/ex/images/Button_U.gif +0 -0
  216. data/doc/ex/images/Button_V.gif +0 -0
  217. data/doc/ex/images/Button_W.gif +0 -0
  218. data/doc/ex/images/Button_X.gif +0 -0
  219. data/doc/ex/images/Button_Y.gif +0 -0
  220. data/doc/ex/images/Button_Z.gif +0 -0
  221. data/doc/ex/images/Cheetah.jpg +0 -0
  222. data/doc/ex/images/Coffee.wmf +0 -0
  223. data/doc/ex/images/Flower_Hat.jpg +0 -0
  224. data/doc/ex/images/Gold_Statue.jpg +0 -0
  225. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  226. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  227. data/doc/ex/images/Leaf.miff +0 -0
  228. data/doc/ex/images/No.wmf +0 -0
  229. data/doc/ex/images/Polynesia.jpg +0 -0
  230. data/doc/ex/images/Red_Rocks.jpg +0 -0
  231. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  232. data/doc/ex/images/Shorts.jpg +0 -0
  233. data/doc/ex/images/Snake.wmf +0 -0
  234. data/doc/ex/images/Violin.jpg +0 -0
  235. data/doc/ex/images/Yellow_Rose.miff +0 -0
  236. data/doc/ex/images/big-duck.gif +0 -0
  237. data/doc/ex/images/duck.gif +0 -0
  238. data/doc/ex/images/duck0.gif +0 -0
  239. data/doc/ex/images/duck1.gif +0 -0
  240. data/doc/ex/images/duck10.gif +0 -0
  241. data/doc/ex/images/duck11.gif +0 -0
  242. data/doc/ex/images/duck12.gif +0 -0
  243. data/doc/ex/images/duck13.gif +0 -0
  244. data/doc/ex/images/duck14.gif +0 -0
  245. data/doc/ex/images/duck15.gif +0 -0
  246. data/doc/ex/images/duck2.gif +0 -0
  247. data/doc/ex/images/duck3.gif +0 -0
  248. data/doc/ex/images/duck4.gif +0 -0
  249. data/doc/ex/images/duck5.gif +0 -0
  250. data/doc/ex/images/duck6.gif +0 -0
  251. data/doc/ex/images/duck7.gif +0 -0
  252. data/doc/ex/images/duck8.gif +0 -0
  253. data/doc/ex/images/duck9.gif +0 -0
  254. data/doc/ex/images/graydient230x6.gif +0 -0
  255. data/doc/ex/images/image_with_profile.jpg +0 -0
  256. data/doc/ex/images/logo400x83.gif +0 -0
  257. data/doc/ex/images/model.miff +0 -0
  258. data/doc/ex/images/notimplemented.gif +0 -0
  259. data/doc/ex/images/smile.miff +0 -0
  260. data/doc/ex/images/spin.gif +0 -0
  261. data/doc/ex/implode.rb +0 -34
  262. data/doc/ex/level.rb +0 -11
  263. data/doc/ex/level_colors.rb +0 -11
  264. data/doc/ex/line.rb +0 -41
  265. data/doc/ex/line01.rb +0 -21
  266. data/doc/ex/mask.rb +0 -35
  267. data/doc/ex/matte_fill_to_border.rb +0 -39
  268. data/doc/ex/matte_floodfill.rb +0 -32
  269. data/doc/ex/matte_replace.rb +0 -39
  270. data/doc/ex/median_filter.rb +0 -28
  271. data/doc/ex/modulate.rb +0 -11
  272. data/doc/ex/mono.rb +0 -23
  273. data/doc/ex/morph.rb +0 -25
  274. data/doc/ex/mosaic.rb +0 -35
  275. data/doc/ex/motion_blur.rb +0 -11
  276. data/doc/ex/negate.rb +0 -11
  277. data/doc/ex/negate_channel.rb +0 -9
  278. data/doc/ex/nested_rvg.rb +0 -21
  279. data/doc/ex/nonzero.rb +0 -42
  280. data/doc/ex/normalize.rb +0 -11
  281. data/doc/ex/oil_paint.rb +0 -11
  282. data/doc/ex/opacity.rb +0 -37
  283. data/doc/ex/ordered_dither.rb +0 -11
  284. data/doc/ex/path.rb +0 -63
  285. data/doc/ex/pattern1.rb +0 -25
  286. data/doc/ex/pattern2.rb +0 -26
  287. data/doc/ex/polaroid.rb +0 -27
  288. data/doc/ex/polygon.rb +0 -23
  289. data/doc/ex/polygon01.rb +0 -21
  290. data/doc/ex/polyline.rb +0 -22
  291. data/doc/ex/polyline01.rb +0 -21
  292. data/doc/ex/posterize.rb +0 -8
  293. data/doc/ex/preview.rb +0 -8
  294. data/doc/ex/qbezierpath.rb +0 -52
  295. data/doc/ex/quad01.rb +0 -34
  296. data/doc/ex/quantize-m.rb +0 -25
  297. data/doc/ex/radial_blur.rb +0 -9
  298. data/doc/ex/raise.rb +0 -8
  299. data/doc/ex/random_threshold_channel.rb +0 -13
  300. data/doc/ex/rect01.rb +0 -14
  301. data/doc/ex/rect02.rb +0 -20
  302. data/doc/ex/rectangle.rb +0 -34
  303. data/doc/ex/reduce_noise.rb +0 -28
  304. data/doc/ex/remap.rb +0 -11
  305. data/doc/ex/remap_images.rb +0 -19
  306. data/doc/ex/resize_to_fill.rb +0 -8
  307. data/doc/ex/resize_to_fit.rb +0 -8
  308. data/doc/ex/roll.rb +0 -9
  309. data/doc/ex/rotate.rb +0 -44
  310. data/doc/ex/rotate_f.rb +0 -14
  311. data/doc/ex/roundrect.rb +0 -33
  312. data/doc/ex/rubyname.rb +0 -30
  313. data/doc/ex/rvg_clippath.rb +0 -12
  314. data/doc/ex/rvg_linecap.rb +0 -42
  315. data/doc/ex/rvg_linejoin.rb +0 -40
  316. data/doc/ex/rvg_opacity.rb +0 -18
  317. data/doc/ex/rvg_pattern.rb +0 -26
  318. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  319. data/doc/ex/segment.rb +0 -11
  320. data/doc/ex/sepiatone.rb +0 -7
  321. data/doc/ex/shade.rb +0 -11
  322. data/doc/ex/shadow.rb +0 -30
  323. data/doc/ex/shave.rb +0 -15
  324. data/doc/ex/shear.rb +0 -10
  325. data/doc/ex/sketch.rb +0 -17
  326. data/doc/ex/skewx.rb +0 -51
  327. data/doc/ex/skewy.rb +0 -47
  328. data/doc/ex/smile.rb +0 -125
  329. data/doc/ex/solarize.rb +0 -11
  330. data/doc/ex/sparse_color.rb +0 -54
  331. data/doc/ex/splice.rb +0 -8
  332. data/doc/ex/spread.rb +0 -11
  333. data/doc/ex/stegano.rb +0 -55
  334. data/doc/ex/stroke_dasharray.rb +0 -42
  335. data/doc/ex/stroke_fill.rb +0 -10
  336. data/doc/ex/stroke_linecap.rb +0 -44
  337. data/doc/ex/stroke_linejoin.rb +0 -48
  338. data/doc/ex/stroke_width.rb +0 -49
  339. data/doc/ex/swirl.rb +0 -17
  340. data/doc/ex/text.rb +0 -37
  341. data/doc/ex/text01.rb +0 -16
  342. data/doc/ex/text_align.rb +0 -36
  343. data/doc/ex/text_antialias.rb +0 -37
  344. data/doc/ex/text_styles.rb +0 -19
  345. data/doc/ex/text_undercolor.rb +0 -28
  346. data/doc/ex/texture_fill_to_border.rb +0 -34
  347. data/doc/ex/texture_floodfill.rb +0 -32
  348. data/doc/ex/texturefill.rb +0 -24
  349. data/doc/ex/threshold.rb +0 -13
  350. data/doc/ex/to_blob.rb +0 -13
  351. data/doc/ex/translate.rb +0 -39
  352. data/doc/ex/transparent.rb +0 -38
  353. data/doc/ex/transpose.rb +0 -9
  354. data/doc/ex/transverse.rb +0 -9
  355. data/doc/ex/tref01.rb +0 -24
  356. data/doc/ex/triangle01.rb +0 -15
  357. data/doc/ex/trim.rb +0 -23
  358. data/doc/ex/tspan01.rb +0 -17
  359. data/doc/ex/tspan02.rb +0 -17
  360. data/doc/ex/tspan03.rb +0 -19
  361. data/doc/ex/unsharp_mask.rb +0 -28
  362. data/doc/ex/viewex.rb +0 -33
  363. data/doc/ex/vignette.rb +0 -12
  364. data/doc/ex/watermark.rb +0 -27
  365. data/doc/ex/wave.rb +0 -9
  366. data/doc/ex/wet_floor.rb +0 -58
  367. data/doc/ex/writing_mode01.rb +0 -26
  368. data/doc/ex/writing_mode02.rb +0 -26
  369. data/doc/ilist.html +0 -2056
  370. data/doc/image1.html +0 -4680
  371. data/doc/image2.html +0 -3665
  372. data/doc/image3.html +0 -4522
  373. data/doc/imageattrs.html +0 -1638
  374. data/doc/imusage.html +0 -514
  375. data/doc/index.html +0 -416
  376. data/doc/info.html +0 -1499
  377. data/doc/magick.html +0 -565
  378. data/doc/optequiv.html +0 -2435
  379. data/doc/rvg.html +0 -975
  380. data/doc/rvgclip.html +0 -248
  381. data/doc/rvggroup.html +0 -305
  382. data/doc/rvgimage.html +0 -289
  383. data/doc/rvgpattern.html +0 -475
  384. data/doc/rvgshape.html +0 -406
  385. data/doc/rvgstyle.html +0 -270
  386. data/doc/rvgtext.html +0 -465
  387. data/doc/rvgtspan.html +0 -238
  388. data/doc/rvgtut.html +0 -530
  389. data/doc/rvguse.html +0 -145
  390. data/doc/rvgxform.html +0 -294
  391. data/doc/scripts/doc.js +0 -22
  392. data/doc/scripts/stripeTables.js +0 -23
  393. data/doc/struct.html +0 -1339
  394. data/doc/usage.html +0 -1621
  395. data/examples/constitute.rb +0 -7
  396. data/examples/crop_with_gravity.rb +0 -42
  397. data/examples/demo.rb +0 -324
  398. data/examples/describe.rb +0 -43
  399. data/examples/find_similar_region.rb +0 -34
  400. data/examples/histogram.rb +0 -321
  401. data/examples/identify.rb +0 -185
  402. data/examples/image_opacity.rb +0 -29
  403. data/examples/import_export.rb +0 -31
  404. data/examples/pattern_fill.rb +0 -38
  405. data/examples/rotating_text.rb +0 -44
  406. data/examples/spinner.rb +0 -49
  407. data/examples/thumbnail.rb +0 -64
  408. data/examples/vignette.rb +0 -78
  409. data/ext/RMagick/rmdraw.c +0 -2022
  410. data/ext/RMagick/rmenum.c +0 -1235
  411. data/ext/RMagick/rmilist.c +0 -1270
  412. data/ext/RMagick/rmimage.c +0 -15427
  413. data/ext/RMagick/rmmain.c +0 -1741
  414. data/ext/RMagick/rmmontage.c +0 -519
  415. data/ext/RMagick/rmpixel.c +0 -1114
  416. data/spec/rmagick/ImageList1_spec.rb +0 -24
  417. data/spec/rmagick/draw_spec.rb +0 -156
  418. data/spec/rmagick/image/blue_shift_spec.rb +0 -16
  419. data/spec/rmagick/image/composite_spec.rb +0 -140
  420. data/spec/rmagick/image/constitute_spec.rb +0 -15
  421. data/spec/rmagick/image/dispatch_spec.rb +0 -18
  422. data/spec/rmagick/image/from_blob_spec.rb +0 -14
  423. data/spec/rmagick/image/ping_spec.rb +0 -14
  424. data/spec/rmagick/image/properties_spec.rb +0 -29
  425. data/spec/spec_helper.rb +0 -4
  426. data/test/Image1.rb +0 -565
  427. data/test/Image2.rb +0 -1304
  428. data/test/Image3.rb +0 -1030
  429. data/test/ImageList1.rb +0 -806
  430. data/test/ImageList2.rb +0 -385
  431. data/test/Image_attributes.rb +0 -697
  432. data/test/Import_Export.rb +0 -121
  433. data/test/Info.rb +0 -345
  434. data/test/Magick.rb +0 -321
  435. data/test/Pixel.rb +0 -116
  436. data/test/Preview.rb +0 -57
  437. data/test/cmyk.icm +0 -0
  438. data/test/srgb.icm +0 -0
  439. data/test/test_all_basic.rb +0 -38
  440. data/test/tmpnam_test.rb +0 -50
  441. data/wercker.yml +0 -10
@@ -0,0 +1,1923 @@
1
+ /**************************************************************************//**
2
+ * Contains all module, class, method declarations. Defines all constants.
3
+ * Contains Magick module methods.
4
+ *
5
+ * Copyright © 2002 - 2009 by Timothy P. Hunter
6
+ *
7
+ * Changes since Nov. 2009 copyright © by Benjamin Thomas and Omer Bar-or
8
+ *
9
+ * @file rmmain.cpp
10
+ * @version $Id: rmmain.cpp,v 1.303 2009/12/20 02:33:33 baror Exp $
11
+ * @author Tim Hunter
12
+ ******************************************************************************/
13
+
14
+ #define MAIN // Define external variables
15
+ #include "rmagick.h"
16
+
17
+ #if defined(HAVE_SETMAGICKALIGNEDMEMORYMETHODS) && defined(HAVE_RB_GC_ADJUST_MEMORY_USAGE)
18
+ #if defined(HAVE_POSIX_MEMALIGN) || defined(HAVE__ALIGNED_MSIZE)
19
+ #define USE_RM_ALIGNED_MALLOC 1
20
+
21
+ #if defined(HAVE_MALLOC_H)
22
+ #include <malloc.h>
23
+ #elif defined(HAVE_MALLOC_MALLOC_H)
24
+ #include <malloc/malloc.h>
25
+ #endif
26
+ #endif
27
+ #endif
28
+
29
+ /*----------------------------------------------------------------------------\
30
+ | External declarations
31
+ \----------------------------------------------------------------------------*/
32
+ void Init_RMagick(void);
33
+
34
+ static void test_Magick_version(void);
35
+ static void version_constants(void);
36
+ static void features_constant(void);
37
+
38
+
39
+ /*
40
+ * Enum constants - define a subclass of Enum for the specified enumeration.
41
+ * Define an instance of the subclass for each member in the enumeration.
42
+ * Initialize each instance with its name and value.
43
+ */
44
+ //! define Ruby enum
45
+ #define DEF_ENUM(tag) {\
46
+ VALUE _klass, _enum;\
47
+ _klass = Class_##tag = rm_define_enum_type(#tag);
48
+
49
+ //! define Ruby enumerator elements
50
+ #define ENUMERATOR(val)\
51
+ _enum = rm_enum_new(_klass, ID2SYM(rb_intern(#val)), INT2NUM(val));\
52
+ rb_define_const(Module_Magick, #val, _enum);
53
+
54
+ //! define Ruby enumerator elements when name is different from the value
55
+ #define ENUMERATORV(name, val)\
56
+ _enum = rm_enum_new(_klass, ID2SYM(rb_intern(#name)), INT2NUM(val));\
57
+ rb_define_const(Module_Magick, #name, _enum);
58
+
59
+ //! end of an enumerator
60
+ #define END_ENUM }
61
+
62
+ /*
63
+ * Handle transferring ImageMagick memory allocations/frees to Ruby.
64
+ * These functions have the same signature as the equivalent C functions.
65
+ */
66
+
67
+ /**
68
+ * Allocate memory.
69
+ *
70
+ * No Ruby usage (internal function)
71
+ *
72
+ * @param size the size of memory to allocate
73
+ * @return pointer to a block of memory
74
+ */
75
+ static void *rm_malloc(size_t size)
76
+ {
77
+ return xmalloc((long)size);
78
+ }
79
+
80
+
81
+
82
+
83
+ /**
84
+ * Reallocate memory.
85
+ *
86
+ * No Ruby usage (internal function)
87
+ *
88
+ * @param ptr pointer to the existing block of memory
89
+ * @param size the new size of memory to allocate
90
+ * @return pointer to a block of memory
91
+ */
92
+ static void *rm_realloc(void *ptr, size_t size)
93
+ {
94
+ return xrealloc(ptr, (long)size);
95
+ }
96
+
97
+
98
+
99
+
100
+ /**
101
+ * Free memory.
102
+ *
103
+ * No Ruby usage (internal function)
104
+ *
105
+ * @param ptr pointer to the existing block of memory
106
+ */
107
+ static void rm_free(void *ptr)
108
+ {
109
+ xfree(ptr);
110
+ }
111
+
112
+
113
+
114
+ #if USE_RM_ALIGNED_MALLOC
115
+
116
+ static size_t
117
+ rm_aligned_malloc_size(void *ptr)
118
+ {
119
+ #if defined(HAVE_MALLOC_USABLE_SIZE)
120
+ return malloc_usable_size(ptr);
121
+ #elif defined(HAVE_MALLOC_SIZE)
122
+ return malloc_size(ptr);
123
+ #elif defined(HAVE__ALIGNED_MSIZE)
124
+ // Refered to https://github.com/ImageMagick/ImageMagick/blob/master/MagickCore/memory-private.h
125
+ #define MAGICKCORE_SIZEOF_VOID_P 8
126
+ #define CACHE_LINE_SIZE (8 * MAGICKCORE_SIZEOF_VOID_P)
127
+ size_t _aligned_msize(void *memblock, size_t alignment, size_t offset);
128
+ return _aligned_msize(ptr, CACHE_LINE_SIZE, 0);
129
+ #endif
130
+ }
131
+
132
+
133
+ /**
134
+ * Allocate aligned memory.
135
+ *
136
+ * No Ruby usage (internal function)
137
+ *
138
+ * @param size the size of memory to allocate
139
+ * @return pointer to a block of memory
140
+ */
141
+ static void *rm_aligned_malloc(size_t size, size_t alignment)
142
+ {
143
+ void *res;
144
+ size_t allocated_size;
145
+
146
+ #if defined(HAVE_POSIX_MEMALIGN)
147
+ if (posix_memalign(&res, alignment, size) != 0) {
148
+ return NULL;
149
+ }
150
+ #elif defined(HAVE__ALIGNED_MSIZE)
151
+ res = _aligned_malloc(size, alignment);
152
+ #endif
153
+
154
+ allocated_size = rm_aligned_malloc_size(res);
155
+ rb_gc_adjust_memory_usage(allocated_size);
156
+ return res;
157
+ }
158
+
159
+
160
+
161
+
162
+ /**
163
+ * Free aligned memory.
164
+ *
165
+ * No Ruby usage (internal function)
166
+ *
167
+ * @param ptr pointer to the existing block of memory
168
+ */
169
+ static void rm_aligned_free(void *ptr)
170
+ {
171
+ size_t allocated_size = rm_aligned_malloc_size(ptr);
172
+ rb_gc_adjust_memory_usage(-allocated_size);
173
+
174
+ #if defined(HAVE_POSIX_MEMALIGN)
175
+ free(ptr);
176
+ #elif defined(HAVE__ALIGNED_MSIZE)
177
+ _aligned_free(ptr);
178
+ #endif
179
+ }
180
+
181
+ #endif
182
+
183
+
184
+
185
+ /**
186
+ * Use managed memory.
187
+ *
188
+ * No Ruby usage (internal function)
189
+ */
190
+ static inline void managed_memory_enable(VALUE enable)
191
+ {
192
+ if (enable)
193
+ {
194
+ SetMagickMemoryMethods(rm_malloc, rm_realloc, rm_free);
195
+ #if USE_RM_ALIGNED_MALLOC
196
+ SetMagickAlignedMemoryMethods(rm_aligned_malloc, rm_aligned_free);
197
+ #endif
198
+ }
199
+ rb_define_const(Module_Magick, "MANAGED_MEMORY", enable);
200
+ }
201
+
202
+ static void set_managed_memory(void)
203
+ {
204
+ char *disable = getenv("RMAGICK_DISABLE_MANAGED_MEMORY");
205
+
206
+ if (disable)
207
+ {
208
+ managed_memory_enable(Qfalse);
209
+ return;
210
+ }
211
+
212
+ #if defined(_WIN32)
213
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_9_0)
214
+ managed_memory_enable(Qtrue);
215
+ #else
216
+ // Disable managed memory feature with ImageMagick 6.8.x or below because causes crash.
217
+ // Refer https://ci.appveyor.com/project/mockdeep/rmagick/builds/24706171
218
+ managed_memory_enable(Qfalse);
219
+ #endif
220
+ #else
221
+ // Not Windows
222
+ managed_memory_enable(Qtrue);
223
+ #endif
224
+ }
225
+
226
+
227
+
228
+
229
+ /**
230
+ * Define the classes and constants.
231
+ *
232
+ * No Ruby usage (internal function)
233
+ */
234
+ void
235
+ Init_RMagick2(void)
236
+ {
237
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
238
+ rb_ext_ractor_safe(true);
239
+ #endif
240
+
241
+ Module_Magick = rb_define_module("Magick");
242
+
243
+ set_managed_memory();
244
+
245
+ MagickCoreGenesis("RMagick", MagickFalse);
246
+
247
+ test_Magick_version();
248
+
249
+ /*-----------------------------------------------------------------------*/
250
+ /* Create IDs for frequently used methods, etc. */
251
+ /*-----------------------------------------------------------------------*/
252
+
253
+ rm_ID_call = rb_intern("call");
254
+ rm_ID_changed = rb_intern("changed");
255
+ rm_ID_cur_image = rb_intern("cur_image");
256
+ rm_ID_dup = rb_intern("dup");
257
+ rm_ID_fill = rb_intern("fill");
258
+ rm_ID_Geometry = rb_intern("Geometry");
259
+ rm_ID_height = rb_intern("height");
260
+ rm_ID_initialize_copy = rb_intern("initialize_copy");
261
+ rm_ID_notify_observers = rb_intern("notify_observers");
262
+ rm_ID_new = rb_intern("new");
263
+ rm_ID_push = rb_intern("push");
264
+ rm_ID_values = rb_intern("values");
265
+ rm_ID_width = rb_intern("width");
266
+
267
+ /*-----------------------------------------------------------------------*/
268
+ /* Module Magick methods */
269
+ /*-----------------------------------------------------------------------*/
270
+
271
+ rb_define_module_function(Module_Magick, "colors", RUBY_METHOD_FUNC(Magick_colors), 0);
272
+ rb_define_module_function(Module_Magick, "fonts", RUBY_METHOD_FUNC(Magick_fonts), 0);
273
+ rb_define_module_function(Module_Magick, "init_formats", RUBY_METHOD_FUNC(Magick_init_formats), 0);
274
+ rb_define_module_function(Module_Magick, "limit_resource", RUBY_METHOD_FUNC(Magick_limit_resource), -1);
275
+ rb_define_module_function(Module_Magick, "set_cache_threshold", RUBY_METHOD_FUNC(Magick_set_cache_threshold), 1);
276
+ rb_define_module_function(Module_Magick, "set_log_event_mask", RUBY_METHOD_FUNC(Magick_set_log_event_mask), -1);
277
+ rb_define_module_function(Module_Magick, "set_log_format", RUBY_METHOD_FUNC(Magick_set_log_format), 1);
278
+
279
+ /*-----------------------------------------------------------------------*/
280
+ /* Class Magick::Image methods */
281
+ /*-----------------------------------------------------------------------*/
282
+
283
+ Class_Image = rb_define_class_under(Module_Magick, "Image", rb_cObject);
284
+
285
+ // Define an alias for Object#display before we override it
286
+ rb_define_alias(Class_Image, "__display__", "display");
287
+
288
+ rb_define_alloc_func(Class_Image, Image_alloc);
289
+ rb_define_method(Class_Image, "initialize", RUBY_METHOD_FUNC(Image_initialize), -1);
290
+
291
+ rb_define_singleton_method(Class_Image, "constitute", RUBY_METHOD_FUNC(Image_constitute), 4);
292
+ rb_define_singleton_method(Class_Image, "_load", RUBY_METHOD_FUNC(Image__load), 1);
293
+ rb_define_singleton_method(Class_Image, "capture", RUBY_METHOD_FUNC(Image_capture), -1);
294
+ rb_define_singleton_method(Class_Image, "ping", RUBY_METHOD_FUNC(Image_ping), 1);
295
+ rb_define_singleton_method(Class_Image, "read", RUBY_METHOD_FUNC(Image_read), 1);
296
+ rb_define_singleton_method(Class_Image, "read_inline", RUBY_METHOD_FUNC(Image_read_inline), 1);
297
+ rb_define_singleton_method(Class_Image, "from_blob", RUBY_METHOD_FUNC(Image_from_blob), 1);
298
+
299
+ // Define the attributes
300
+ rb_define_method(Class_Image, "background_color", RUBY_METHOD_FUNC(Image_background_color), 0);
301
+ rb_define_method(Class_Image, "background_color=", RUBY_METHOD_FUNC(Image_background_color_eq), 1);
302
+ rb_define_method(Class_Image, "base_columns", RUBY_METHOD_FUNC(Image_base_columns), 0);
303
+ rb_define_method(Class_Image, "base_filename", RUBY_METHOD_FUNC(Image_base_filename), 0);
304
+ rb_define_method(Class_Image, "base_rows", RUBY_METHOD_FUNC(Image_base_rows), 0);
305
+ rb_define_method(Class_Image, "bias", RUBY_METHOD_FUNC(Image_bias), 0);
306
+ rb_define_method(Class_Image, "bias=", RUBY_METHOD_FUNC(Image_bias_eq), 1);
307
+ rb_define_method(Class_Image, "black_point_compensation", RUBY_METHOD_FUNC(Image_black_point_compensation), 0);
308
+ rb_define_method(Class_Image, "black_point_compensation=", RUBY_METHOD_FUNC(Image_black_point_compensation_eq), 1);
309
+ rb_define_method(Class_Image, "border_color", RUBY_METHOD_FUNC(Image_border_color), 0);
310
+ rb_define_method(Class_Image, "border_color=", RUBY_METHOD_FUNC(Image_border_color_eq), 1);
311
+ rb_define_method(Class_Image, "bounding_box", RUBY_METHOD_FUNC(Image_bounding_box), 0);
312
+ rb_define_method(Class_Image, "chromaticity", RUBY_METHOD_FUNC(Image_chromaticity), 0);
313
+ rb_define_method(Class_Image, "chromaticity=", RUBY_METHOD_FUNC(Image_chromaticity_eq), 1);
314
+ rb_define_method(Class_Image, "color_profile", RUBY_METHOD_FUNC(Image_color_profile), 0);
315
+ rb_define_method(Class_Image, "color_profile=", RUBY_METHOD_FUNC(Image_color_profile_eq), 1);
316
+ rb_define_method(Class_Image, "colors", RUBY_METHOD_FUNC(Image_colors), 0);
317
+ rb_define_method(Class_Image, "colorspace", RUBY_METHOD_FUNC(Image_colorspace), 0);
318
+ rb_define_method(Class_Image, "colorspace=", RUBY_METHOD_FUNC(Image_colorspace_eq), 1);
319
+ rb_define_method(Class_Image, "columns", RUBY_METHOD_FUNC(Image_columns), 0);
320
+ rb_define_method(Class_Image, "compose", RUBY_METHOD_FUNC(Image_compose), 0);
321
+ rb_define_method(Class_Image, "compose=", RUBY_METHOD_FUNC(Image_compose_eq), 1);
322
+ rb_define_method(Class_Image, "compression", RUBY_METHOD_FUNC(Image_compression), 0);
323
+ rb_define_method(Class_Image, "compression=", RUBY_METHOD_FUNC(Image_compression_eq), 1);
324
+ rb_define_method(Class_Image, "delay", RUBY_METHOD_FUNC(Image_delay), 0);
325
+ rb_define_method(Class_Image, "delay=", RUBY_METHOD_FUNC(Image_delay_eq), 1);
326
+ rb_define_method(Class_Image, "density", RUBY_METHOD_FUNC(Image_density), 0);
327
+ rb_define_method(Class_Image, "density=", RUBY_METHOD_FUNC(Image_density_eq), 1);
328
+ rb_define_method(Class_Image, "depth", RUBY_METHOD_FUNC(Image_depth), 0);
329
+ rb_define_method(Class_Image, "directory", RUBY_METHOD_FUNC(Image_directory), 0);
330
+ rb_define_method(Class_Image, "dispose", RUBY_METHOD_FUNC(Image_dispose), 0);
331
+ rb_define_method(Class_Image, "dispose=", RUBY_METHOD_FUNC(Image_dispose_eq), 1);
332
+ rb_define_method(Class_Image, "endian", RUBY_METHOD_FUNC(Image_endian), 0);
333
+ rb_define_method(Class_Image, "endian=", RUBY_METHOD_FUNC(Image_endian_eq), 1);
334
+ rb_define_method(Class_Image, "extract_info", RUBY_METHOD_FUNC(Image_extract_info), 0);
335
+ rb_define_method(Class_Image, "extract_info=", RUBY_METHOD_FUNC(Image_extract_info_eq), 1);
336
+ rb_define_method(Class_Image, "filename", RUBY_METHOD_FUNC(Image_filename), 0);
337
+ rb_define_method(Class_Image, "filesize", RUBY_METHOD_FUNC(Image_filesize), 0);
338
+ rb_define_method(Class_Image, "filter", RUBY_METHOD_FUNC(Image_filter), 0);
339
+ rb_define_method(Class_Image, "filter=", RUBY_METHOD_FUNC(Image_filter_eq), 1);
340
+ rb_define_method(Class_Image, "format", RUBY_METHOD_FUNC(Image_format), 0);
341
+ rb_define_method(Class_Image, "format=", RUBY_METHOD_FUNC(Image_format_eq), 1);
342
+ rb_define_method(Class_Image, "fuzz", RUBY_METHOD_FUNC(Image_fuzz), 0);
343
+ rb_define_method(Class_Image, "fuzz=", RUBY_METHOD_FUNC(Image_fuzz_eq), 1);
344
+ rb_define_method(Class_Image, "gamma", RUBY_METHOD_FUNC(Image_gamma), 0);
345
+ rb_define_method(Class_Image, "gamma=", RUBY_METHOD_FUNC(Image_gamma_eq), 1);
346
+ rb_define_method(Class_Image, "geometry", RUBY_METHOD_FUNC(Image_geometry), 0);
347
+ rb_define_method(Class_Image, "geometry=", RUBY_METHOD_FUNC(Image_geometry_eq), 1);
348
+ rb_define_method(Class_Image, "gravity", RUBY_METHOD_FUNC(Image_gravity), 0);
349
+ rb_define_method(Class_Image, "gravity=", RUBY_METHOD_FUNC(Image_gravity_eq), 1);
350
+ rb_define_method(Class_Image, "image_type", RUBY_METHOD_FUNC(Image_image_type), 0);
351
+ rb_define_method(Class_Image, "image_type=", RUBY_METHOD_FUNC(Image_image_type_eq), 1);
352
+ rb_define_method(Class_Image, "interlace", RUBY_METHOD_FUNC(Image_interlace), 0);
353
+ rb_define_method(Class_Image, "interlace=", RUBY_METHOD_FUNC(Image_interlace_eq), 1);
354
+ rb_define_method(Class_Image, "iptc_profile", RUBY_METHOD_FUNC(Image_iptc_profile), 0);
355
+ rb_define_method(Class_Image, "iptc_profile=", RUBY_METHOD_FUNC(Image_iptc_profile_eq), 1);
356
+ rb_define_method(Class_Image, "iterations", RUBY_METHOD_FUNC(Image_iterations), 0); // do not document! Only used by Image#iterations=
357
+ rb_define_method(Class_Image, "iterations=", RUBY_METHOD_FUNC(Image_iterations_eq), 1); // do not document! Only used by Image#iterations=
358
+ rb_define_method(Class_Image, "matte_color", RUBY_METHOD_FUNC(Image_matte_color), 0);
359
+ rb_define_method(Class_Image, "matte_color=", RUBY_METHOD_FUNC(Image_matte_color_eq), 1);
360
+ rb_define_method(Class_Image, "mean_error_per_pixel", RUBY_METHOD_FUNC(Image_mean_error_per_pixel), 0);
361
+ rb_define_method(Class_Image, "mime_type", RUBY_METHOD_FUNC(Image_mime_type), 0);
362
+ rb_define_method(Class_Image, "montage", RUBY_METHOD_FUNC(Image_montage), 0);
363
+ rb_define_method(Class_Image, "normalized_mean_error", RUBY_METHOD_FUNC(Image_normalized_mean_error), 0);
364
+ rb_define_method(Class_Image, "normalized_maximum_error", RUBY_METHOD_FUNC(Image_normalized_maximum_error), 0);
365
+ rb_define_method(Class_Image, "number_colors", RUBY_METHOD_FUNC(Image_number_colors), 0);
366
+ rb_define_method(Class_Image, "offset", RUBY_METHOD_FUNC(Image_offset), 0);
367
+ rb_define_method(Class_Image, "offset=", RUBY_METHOD_FUNC(Image_offset_eq), 1);
368
+ rb_define_method(Class_Image, "orientation", RUBY_METHOD_FUNC(Image_orientation), 0);
369
+ rb_define_method(Class_Image, "orientation=", RUBY_METHOD_FUNC(Image_orientation_eq), 1);
370
+ rb_define_method(Class_Image, "page", RUBY_METHOD_FUNC(Image_page), 0);
371
+ rb_define_method(Class_Image, "page=", RUBY_METHOD_FUNC(Image_page_eq), 1);
372
+ rb_define_method(Class_Image, "pixel_interpolation_method", RUBY_METHOD_FUNC(Image_pixel_interpolation_method), 0);
373
+ rb_define_method(Class_Image, "pixel_interpolation_method=", RUBY_METHOD_FUNC(Image_pixel_interpolation_method_eq), 1);
374
+ rb_define_method(Class_Image, "quality", RUBY_METHOD_FUNC(Image_quality), 0);
375
+ rb_define_method(Class_Image, "quantum_depth", RUBY_METHOD_FUNC(Image_quantum_depth), 0);
376
+ rb_define_method(Class_Image, "rendering_intent", RUBY_METHOD_FUNC(Image_rendering_intent), 0);
377
+ rb_define_method(Class_Image, "rendering_intent=", RUBY_METHOD_FUNC(Image_rendering_intent_eq), 1);
378
+ rb_define_method(Class_Image, "rows", RUBY_METHOD_FUNC(Image_rows), 0);
379
+ rb_define_method(Class_Image, "scene", RUBY_METHOD_FUNC(Image_scene), 0);
380
+ rb_define_method(Class_Image, "start_loop", RUBY_METHOD_FUNC(Image_start_loop), 0);
381
+ rb_define_method(Class_Image, "start_loop=", RUBY_METHOD_FUNC(Image_start_loop_eq), 1);
382
+ rb_define_method(Class_Image, "class_type", RUBY_METHOD_FUNC(Image_class_type), 0);
383
+ rb_define_method(Class_Image, "class_type=", RUBY_METHOD_FUNC(Image_class_type_eq), 1);
384
+ rb_define_method(Class_Image, "ticks_per_second", RUBY_METHOD_FUNC(Image_ticks_per_second), 0);
385
+ rb_define_method(Class_Image, "ticks_per_second=", RUBY_METHOD_FUNC(Image_ticks_per_second_eq), 1);
386
+ rb_define_method(Class_Image, "total_colors", RUBY_METHOD_FUNC(Image_total_colors), 0);
387
+ rb_define_method(Class_Image, "total_ink_density", RUBY_METHOD_FUNC(Image_total_ink_density), 0);
388
+ rb_define_method(Class_Image, "transparent_color", RUBY_METHOD_FUNC(Image_transparent_color), 0);
389
+ rb_define_method(Class_Image, "transparent_color=", RUBY_METHOD_FUNC(Image_transparent_color_eq), 1);
390
+ rb_define_method(Class_Image, "units", RUBY_METHOD_FUNC(Image_units), 0);
391
+ rb_define_method(Class_Image, "units=", RUBY_METHOD_FUNC(Image_units_eq), 1);
392
+ rb_define_method(Class_Image, "virtual_pixel_method", RUBY_METHOD_FUNC(Image_virtual_pixel_method), 0);
393
+ rb_define_method(Class_Image, "virtual_pixel_method=", RUBY_METHOD_FUNC(Image_virtual_pixel_method_eq), 1);
394
+ rb_define_method(Class_Image, "x_resolution", RUBY_METHOD_FUNC(Image_x_resolution), 0);
395
+ rb_define_method(Class_Image, "x_resolution=", RUBY_METHOD_FUNC(Image_x_resolution_eq), 1);
396
+ rb_define_method(Class_Image, "y_resolution", RUBY_METHOD_FUNC(Image_y_resolution), 0);
397
+ rb_define_method(Class_Image, "y_resolution=", RUBY_METHOD_FUNC(Image_y_resolution_eq), 1);
398
+
399
+ rb_define_method(Class_Image, "adaptive_blur", RUBY_METHOD_FUNC(Image_adaptive_blur), -1);
400
+ rb_define_method(Class_Image, "adaptive_blur_channel", RUBY_METHOD_FUNC(Image_adaptive_blur_channel), -1);
401
+ rb_define_method(Class_Image, "adaptive_resize", RUBY_METHOD_FUNC(Image_adaptive_resize), -1);
402
+ rb_define_method(Class_Image, "adaptive_sharpen", RUBY_METHOD_FUNC(Image_adaptive_sharpen), -1);
403
+ rb_define_method(Class_Image, "adaptive_sharpen_channel", RUBY_METHOD_FUNC(Image_adaptive_sharpen_channel), -1);
404
+ rb_define_method(Class_Image, "adaptive_threshold", RUBY_METHOD_FUNC(Image_adaptive_threshold), -1);
405
+ rb_define_method(Class_Image, "add_compose_mask", RUBY_METHOD_FUNC(Image_add_compose_mask), 1);
406
+ rb_define_method(Class_Image, "add_noise", RUBY_METHOD_FUNC(Image_add_noise), 1);
407
+ rb_define_method(Class_Image, "add_noise_channel", RUBY_METHOD_FUNC(Image_add_noise_channel), -1);
408
+ rb_define_method(Class_Image, "add_profile", RUBY_METHOD_FUNC(Image_add_profile), 1);
409
+ rb_define_method(Class_Image, "affine_transform", RUBY_METHOD_FUNC(Image_affine_transform), 1);
410
+ rb_define_method(Class_Image, "remap", RUBY_METHOD_FUNC(Image_remap), -1);
411
+ rb_define_method(Class_Image, "alpha", RUBY_METHOD_FUNC(Image_alpha), -1);
412
+ rb_define_method(Class_Image, "alpha?", RUBY_METHOD_FUNC(Image_alpha_q), 0);
413
+ rb_define_method(Class_Image, "[]", RUBY_METHOD_FUNC(Image_aref), 1);
414
+ rb_define_method(Class_Image, "[]=", RUBY_METHOD_FUNC(Image_aset), 2);
415
+ rb_define_method(Class_Image, "auto_gamma_channel", RUBY_METHOD_FUNC(Image_auto_gamma_channel), -1);
416
+ rb_define_method(Class_Image, "auto_level_channel", RUBY_METHOD_FUNC(Image_auto_level_channel), -1);
417
+ rb_define_method(Class_Image, "auto_orient", RUBY_METHOD_FUNC(Image_auto_orient), 0);
418
+ rb_define_method(Class_Image, "auto_orient!", RUBY_METHOD_FUNC(Image_auto_orient_bang), 0);
419
+ rb_define_method(Class_Image, "properties", RUBY_METHOD_FUNC(Image_properties), 0);
420
+ rb_define_method(Class_Image, "bilevel_channel", RUBY_METHOD_FUNC(Image_bilevel_channel), -1);
421
+ rb_define_method(Class_Image, "black_threshold", RUBY_METHOD_FUNC(Image_black_threshold), -1);
422
+ rb_define_method(Class_Image, "blend", RUBY_METHOD_FUNC(Image_blend), -1);
423
+ rb_define_method(Class_Image, "blue_shift", RUBY_METHOD_FUNC(Image_blue_shift), -1);
424
+ rb_define_method(Class_Image, "blur_image", RUBY_METHOD_FUNC(Image_blur_image), -1);
425
+ rb_define_method(Class_Image, "blur_channel", RUBY_METHOD_FUNC(Image_blur_channel), -1);
426
+ rb_define_method(Class_Image, "border", RUBY_METHOD_FUNC(Image_border), 3);
427
+ rb_define_method(Class_Image, "border!", RUBY_METHOD_FUNC(Image_border_bang), 3);
428
+ rb_define_method(Class_Image, "change_geometry", RUBY_METHOD_FUNC(Image_change_geometry), 1);
429
+ rb_define_method(Class_Image, "change_geometry!", RUBY_METHOD_FUNC(Image_change_geometry), 1);
430
+ rb_define_method(Class_Image, "changed?", RUBY_METHOD_FUNC(Image_changed_q), 0);
431
+ rb_define_method(Class_Image, "channel", RUBY_METHOD_FUNC(Image_channel), 1);
432
+ // An alias for compare_channel
433
+ rb_define_method(Class_Image, "channel_compare", RUBY_METHOD_FUNC(Image_compare_channel), -1);
434
+ rb_define_method(Class_Image, "check_destroyed", RUBY_METHOD_FUNC(Image_check_destroyed), 0);
435
+ rb_define_method(Class_Image, "compare_channel", RUBY_METHOD_FUNC(Image_compare_channel), -1);
436
+ rb_define_method(Class_Image, "channel_depth", RUBY_METHOD_FUNC(Image_channel_depth), -1);
437
+ rb_define_method(Class_Image, "channel_extrema", RUBY_METHOD_FUNC(Image_channel_extrema), -1);
438
+ rb_define_method(Class_Image, "channel_mean", RUBY_METHOD_FUNC(Image_channel_mean), -1);
439
+ rb_define_method(Class_Image, "channel_entropy", RUBY_METHOD_FUNC(Image_channel_entropy), -1);
440
+ rb_define_method(Class_Image, "charcoal", RUBY_METHOD_FUNC(Image_charcoal), -1);
441
+ rb_define_method(Class_Image, "chop", RUBY_METHOD_FUNC(Image_chop), 4);
442
+ rb_define_method(Class_Image, "clut_channel", RUBY_METHOD_FUNC(Image_clut_channel), -1);
443
+ rb_define_method(Class_Image, "clone", RUBY_METHOD_FUNC(Image_clone), 0);
444
+ rb_define_method(Class_Image, "color_flood_fill", RUBY_METHOD_FUNC(Image_color_flood_fill), 5);
445
+ rb_define_method(Class_Image, "color_histogram", RUBY_METHOD_FUNC(Image_color_histogram), 0);
446
+ rb_define_method(Class_Image, "colorize", RUBY_METHOD_FUNC(Image_colorize), -1);
447
+ rb_define_method(Class_Image, "colormap", RUBY_METHOD_FUNC(Image_colormap), -1);
448
+ rb_define_method(Class_Image, "composite", RUBY_METHOD_FUNC(Image_composite), -1);
449
+ rb_define_method(Class_Image, "composite!", RUBY_METHOD_FUNC(Image_composite_bang), -1);
450
+ rb_define_method(Class_Image, "composite_affine", RUBY_METHOD_FUNC(Image_composite_affine), 2);
451
+ rb_define_method(Class_Image, "composite_channel", RUBY_METHOD_FUNC(Image_composite_channel), -1);
452
+ rb_define_method(Class_Image, "composite_channel!", RUBY_METHOD_FUNC(Image_composite_channel_bang), -1);
453
+ rb_define_method(Class_Image, "composite_mathematics", RUBY_METHOD_FUNC(Image_composite_mathematics), -1);
454
+ rb_define_method(Class_Image, "composite_tiled", RUBY_METHOD_FUNC(Image_composite_tiled), -1);
455
+ rb_define_method(Class_Image, "composite_tiled!", RUBY_METHOD_FUNC(Image_composite_tiled_bang), -1);
456
+ rb_define_method(Class_Image, "compress_colormap!", RUBY_METHOD_FUNC(Image_compress_colormap_bang), 0);
457
+ rb_define_method(Class_Image, "contrast", RUBY_METHOD_FUNC(Image_contrast), -1);
458
+ rb_define_method(Class_Image, "contrast_stretch_channel", RUBY_METHOD_FUNC(Image_contrast_stretch_channel), -1);
459
+ rb_define_method(Class_Image, "convolve", RUBY_METHOD_FUNC(Image_convolve), 2);
460
+ rb_define_method(Class_Image, "convolve_channel", RUBY_METHOD_FUNC(Image_convolve_channel), -1);
461
+ rb_define_method(Class_Image, "morphology", RUBY_METHOD_FUNC(Image_morphology), 3);
462
+ rb_define_method(Class_Image, "morphology_channel", RUBY_METHOD_FUNC(Image_morphology_channel), 4);
463
+ rb_define_method(Class_Image, "copy", RUBY_METHOD_FUNC(Image_copy), 0);
464
+ rb_define_method(Class_Image, "crop", RUBY_METHOD_FUNC(Image_crop), -1);
465
+ rb_define_method(Class_Image, "crop!", RUBY_METHOD_FUNC(Image_crop_bang), -1);
466
+ rb_define_method(Class_Image, "cycle_colormap", RUBY_METHOD_FUNC(Image_cycle_colormap), 1);
467
+ rb_define_method(Class_Image, "decipher", RUBY_METHOD_FUNC(Image_decipher), 1);
468
+ rb_define_method(Class_Image, "define", RUBY_METHOD_FUNC(Image_define), 2);
469
+ rb_define_method(Class_Image, "deskew", RUBY_METHOD_FUNC(Image_deskew), -1);
470
+ rb_define_method(Class_Image, "delete_compose_mask", RUBY_METHOD_FUNC(Image_delete_compose_mask), 0);
471
+ rb_define_method(Class_Image, "delete_profile", RUBY_METHOD_FUNC(Image_delete_profile), 1);
472
+ rb_define_method(Class_Image, "despeckle", RUBY_METHOD_FUNC(Image_despeckle), 0);
473
+ rb_define_method(Class_Image, "destroy!", RUBY_METHOD_FUNC(Image_destroy_bang), 0);
474
+ rb_define_method(Class_Image, "destroyed?", RUBY_METHOD_FUNC(Image_destroyed_q), 0);
475
+ rb_define_method(Class_Image, "difference", RUBY_METHOD_FUNC(Image_difference), 1);
476
+ rb_define_method(Class_Image, "dispatch", RUBY_METHOD_FUNC(Image_dispatch), -1);
477
+ rb_define_method(Class_Image, "displace", RUBY_METHOD_FUNC(Image_displace), -1);
478
+ rb_define_method(Class_Image, "display", RUBY_METHOD_FUNC(Image_display), 0);
479
+ rb_define_method(Class_Image, "dissolve", RUBY_METHOD_FUNC(Image_dissolve), -1);
480
+ rb_define_method(Class_Image, "distort", RUBY_METHOD_FUNC(Image_distort), -1);
481
+ rb_define_method(Class_Image, "distortion_channel", RUBY_METHOD_FUNC(Image_distortion_channel), -1);
482
+ rb_define_method(Class_Image, "_dump", RUBY_METHOD_FUNC(Image__dump), 1);
483
+ rb_define_method(Class_Image, "dup", RUBY_METHOD_FUNC(Image_dup), 0);
484
+ rb_define_method(Class_Image, "each_profile", RUBY_METHOD_FUNC(Image_each_profile), 0);
485
+ rb_define_method(Class_Image, "edge", RUBY_METHOD_FUNC(Image_edge), -1);
486
+ rb_define_method(Class_Image, "emboss", RUBY_METHOD_FUNC(Image_emboss), -1);
487
+ rb_define_method(Class_Image, "encipher", RUBY_METHOD_FUNC(Image_encipher), 1);
488
+ rb_define_method(Class_Image, "enhance", RUBY_METHOD_FUNC(Image_enhance), 0);
489
+ rb_define_method(Class_Image, "equalize", RUBY_METHOD_FUNC(Image_equalize), 0);
490
+ rb_define_method(Class_Image, "equalize_channel", RUBY_METHOD_FUNC(Image_equalize_channel), -1);
491
+ rb_define_method(Class_Image, "erase!", RUBY_METHOD_FUNC(Image_erase_bang), 0);
492
+ rb_define_method(Class_Image, "excerpt", RUBY_METHOD_FUNC(Image_excerpt), 4);
493
+ rb_define_method(Class_Image, "excerpt!", RUBY_METHOD_FUNC(Image_excerpt_bang), 4);
494
+ rb_define_method(Class_Image, "export_pixels", RUBY_METHOD_FUNC(Image_export_pixels), -1);
495
+ rb_define_method(Class_Image, "export_pixels_to_str", RUBY_METHOD_FUNC(Image_export_pixels_to_str), -1);
496
+ rb_define_method(Class_Image, "extent", RUBY_METHOD_FUNC(Image_extent), -1);
497
+ rb_define_method(Class_Image, "find_similar_region", RUBY_METHOD_FUNC(Image_find_similar_region), -1);
498
+ rb_define_method(Class_Image, "flip", RUBY_METHOD_FUNC(Image_flip), 0);
499
+ rb_define_method(Class_Image, "flip!", RUBY_METHOD_FUNC(Image_flip_bang), 0);
500
+ rb_define_method(Class_Image, "flop", RUBY_METHOD_FUNC(Image_flop), 0);
501
+ rb_define_method(Class_Image, "flop!", RUBY_METHOD_FUNC(Image_flop_bang), 0);
502
+ rb_define_method(Class_Image, "frame", RUBY_METHOD_FUNC(Image_frame), -1);
503
+ rb_define_method(Class_Image, "function_channel", RUBY_METHOD_FUNC(Image_function_channel), -1);
504
+ rb_define_method(Class_Image, "fx", RUBY_METHOD_FUNC(Image_fx), -1);
505
+ rb_define_method(Class_Image, "gamma_channel", RUBY_METHOD_FUNC(Image_gamma_channel), -1);
506
+ rb_define_method(Class_Image, "gamma_correct", RUBY_METHOD_FUNC(Image_gamma_correct), -1);
507
+ rb_define_method(Class_Image, "gaussian_blur", RUBY_METHOD_FUNC(Image_gaussian_blur), -1);
508
+ rb_define_method(Class_Image, "gaussian_blur_channel", RUBY_METHOD_FUNC(Image_gaussian_blur_channel), -1);
509
+ rb_define_method(Class_Image, "get_pixels", RUBY_METHOD_FUNC(Image_get_pixels), 4);
510
+ rb_define_method(Class_Image, "gray?", RUBY_METHOD_FUNC(Image_gray_q), 0);
511
+ rb_define_method(Class_Image, "grey?", RUBY_METHOD_FUNC(Image_gray_q), 0);
512
+ rb_define_method(Class_Image, "histogram?", RUBY_METHOD_FUNC(Image_histogram_q), 0);
513
+ rb_define_method(Class_Image, "implode", RUBY_METHOD_FUNC(Image_implode), -1);
514
+ rb_define_method(Class_Image, "import_pixels", RUBY_METHOD_FUNC(Image_import_pixels), -1);
515
+ rb_define_method(Class_Image, "initialize_copy", RUBY_METHOD_FUNC(Image_init_copy), 1);
516
+ rb_define_method(Class_Image, "inspect", RUBY_METHOD_FUNC(Image_inspect), 0);
517
+ rb_define_method(Class_Image, "level2", RUBY_METHOD_FUNC(Image_level2), -1);
518
+ rb_define_method(Class_Image, "level_channel", RUBY_METHOD_FUNC(Image_level_channel), -1);
519
+ rb_define_method(Class_Image, "level_colors", RUBY_METHOD_FUNC(Image_level_colors), -1);
520
+ rb_define_method(Class_Image, "levelize_channel", RUBY_METHOD_FUNC(Image_levelize_channel), -1);
521
+ rb_define_method(Class_Image, "linear_stretch", RUBY_METHOD_FUNC(Image_linear_stretch), -1);
522
+ rb_define_method(Class_Image, "liquid_rescale", RUBY_METHOD_FUNC(Image_liquid_rescale), -1);
523
+ rb_define_method(Class_Image, "magnify", RUBY_METHOD_FUNC(Image_magnify), 0);
524
+ rb_define_method(Class_Image, "magnify!", RUBY_METHOD_FUNC(Image_magnify_bang), 0);
525
+ rb_define_method(Class_Image, "marshal_dump", RUBY_METHOD_FUNC(Image_marshal_dump), 0);
526
+ rb_define_method(Class_Image, "marshal_load", RUBY_METHOD_FUNC(Image_marshal_load), 1);
527
+ rb_define_method(Class_Image, "mask", RUBY_METHOD_FUNC(Image_mask), -1);
528
+ rb_define_method(Class_Image, "matte_flood_fill", RUBY_METHOD_FUNC(Image_matte_flood_fill), -1);
529
+ rb_define_method(Class_Image, "median_filter", RUBY_METHOD_FUNC(Image_median_filter), -1);
530
+ rb_define_method(Class_Image, "minify", RUBY_METHOD_FUNC(Image_minify), 0);
531
+ rb_define_method(Class_Image, "minify!", RUBY_METHOD_FUNC(Image_minify_bang), 0);
532
+ rb_define_method(Class_Image, "modulate", RUBY_METHOD_FUNC(Image_modulate), -1);
533
+ rb_define_method(Class_Image, "monochrome?", RUBY_METHOD_FUNC(Image_monochrome_q), 0);
534
+ rb_define_method(Class_Image, "motion_blur", RUBY_METHOD_FUNC(Image_motion_blur), -1);
535
+ rb_define_method(Class_Image, "negate", RUBY_METHOD_FUNC(Image_negate), -1);
536
+ rb_define_method(Class_Image, "negate_channel", RUBY_METHOD_FUNC(Image_negate_channel), -1);
537
+ rb_define_method(Class_Image, "normalize", RUBY_METHOD_FUNC(Image_normalize), 0);
538
+ rb_define_method(Class_Image, "normalize_channel", RUBY_METHOD_FUNC(Image_normalize_channel), -1);
539
+ rb_define_method(Class_Image, "oil_paint", RUBY_METHOD_FUNC(Image_oil_paint), -1);
540
+ rb_define_method(Class_Image, "opaque", RUBY_METHOD_FUNC(Image_opaque), 2);
541
+ rb_define_method(Class_Image, "opaque_channel", RUBY_METHOD_FUNC(Image_opaque_channel), -1);
542
+ rb_define_method(Class_Image, "opaque?", RUBY_METHOD_FUNC(Image_opaque_q), 0);
543
+ rb_define_method(Class_Image, "ordered_dither", RUBY_METHOD_FUNC(Image_ordered_dither), -1);
544
+ rb_define_method(Class_Image, "paint_transparent", RUBY_METHOD_FUNC(Image_paint_transparent), -1);
545
+ rb_define_method(Class_Image, "palette?", RUBY_METHOD_FUNC(Image_palette_q), 0);
546
+ rb_define_method(Class_Image, "pixel_color", RUBY_METHOD_FUNC(Image_pixel_color), -1);
547
+ rb_define_method(Class_Image, "polaroid", RUBY_METHOD_FUNC(Image_polaroid), -1);
548
+ rb_define_method(Class_Image, "posterize", RUBY_METHOD_FUNC(Image_posterize), -1);
549
+ // rb_define_method(Class_Image, "plasma", RUBY_METHOD_FUNC(Image_plasma), 6);
550
+ rb_define_method(Class_Image, "preview", RUBY_METHOD_FUNC(Image_preview), 1);
551
+ rb_define_method(Class_Image, "profile!", RUBY_METHOD_FUNC(Image_profile_bang), 2);
552
+ rb_define_method(Class_Image, "quantize", RUBY_METHOD_FUNC(Image_quantize), -1);
553
+ rb_define_method(Class_Image, "quantum_operator", RUBY_METHOD_FUNC(Image_quantum_operator), -1);
554
+ rb_define_method(Class_Image, "radial_blur", RUBY_METHOD_FUNC(Image_radial_blur), 1);
555
+ rb_define_method(Class_Image, "radial_blur_channel", RUBY_METHOD_FUNC(Image_radial_blur_channel), -1);
556
+ rb_define_method(Class_Image, "raise", RUBY_METHOD_FUNC(Image_raise), -1);
557
+ rb_define_method(Class_Image, "random_threshold_channel", RUBY_METHOD_FUNC(Image_random_threshold_channel), -1);
558
+ rb_define_method(Class_Image, "recolor", RUBY_METHOD_FUNC(Image_recolor), 1);
559
+ rb_define_method(Class_Image, "reduce_noise", RUBY_METHOD_FUNC(Image_reduce_noise), 1);
560
+ rb_define_method(Class_Image, "resample", RUBY_METHOD_FUNC(Image_resample), -1);
561
+ rb_define_method(Class_Image, "resample!", RUBY_METHOD_FUNC(Image_resample_bang), -1);
562
+ rb_define_method(Class_Image, "resize", RUBY_METHOD_FUNC(Image_resize), -1);
563
+ rb_define_method(Class_Image, "resize!", RUBY_METHOD_FUNC(Image_resize_bang), -1);
564
+ rb_define_method(Class_Image, "roll", RUBY_METHOD_FUNC(Image_roll), 2);
565
+ rb_define_method(Class_Image, "rotate", RUBY_METHOD_FUNC(Image_rotate), -1);
566
+ rb_define_method(Class_Image, "rotate!", RUBY_METHOD_FUNC(Image_rotate_bang), -1);
567
+ rb_define_method(Class_Image, "sample", RUBY_METHOD_FUNC(Image_sample), -1);
568
+ rb_define_method(Class_Image, "sample!", RUBY_METHOD_FUNC(Image_sample_bang), -1);
569
+ rb_define_method(Class_Image, "scale", RUBY_METHOD_FUNC(Image_scale), -1);
570
+ rb_define_method(Class_Image, "scale!", RUBY_METHOD_FUNC(Image_scale_bang), -1);
571
+ rb_define_method(Class_Image, "segment", RUBY_METHOD_FUNC(Image_segment), -1);
572
+ rb_define_method(Class_Image, "selective_blur_channel", RUBY_METHOD_FUNC(Image_selective_blur_channel), -1);
573
+ rb_define_method(Class_Image, "separate", RUBY_METHOD_FUNC(Image_separate), -1);
574
+ rb_define_method(Class_Image, "sepiatone", RUBY_METHOD_FUNC(Image_sepiatone), -1);
575
+ rb_define_method(Class_Image, "set_channel_depth", RUBY_METHOD_FUNC(Image_set_channel_depth), 2);
576
+ rb_define_method(Class_Image, "shade", RUBY_METHOD_FUNC(Image_shade), -1);
577
+ rb_define_method(Class_Image, "shadow", RUBY_METHOD_FUNC(Image_shadow), -1);
578
+ rb_define_method(Class_Image, "sharpen", RUBY_METHOD_FUNC(Image_sharpen), -1);
579
+ rb_define_method(Class_Image, "sharpen_channel", RUBY_METHOD_FUNC(Image_sharpen_channel), -1);
580
+ rb_define_method(Class_Image, "shave", RUBY_METHOD_FUNC(Image_shave), 2);
581
+ rb_define_method(Class_Image, "shave!", RUBY_METHOD_FUNC(Image_shave_bang), 2);
582
+ rb_define_method(Class_Image, "shear", RUBY_METHOD_FUNC(Image_shear), 2);
583
+ rb_define_method(Class_Image, "sigmoidal_contrast_channel", RUBY_METHOD_FUNC(Image_sigmoidal_contrast_channel), -1);
584
+ rb_define_method(Class_Image, "signature", RUBY_METHOD_FUNC(Image_signature), 0);
585
+ rb_define_method(Class_Image, "sketch", RUBY_METHOD_FUNC(Image_sketch), -1);
586
+ rb_define_method(Class_Image, "solarize", RUBY_METHOD_FUNC(Image_solarize), -1);
587
+ rb_define_method(Class_Image, "<=>", RUBY_METHOD_FUNC(Image_spaceship), 1);
588
+ rb_define_method(Class_Image, "sparse_color", RUBY_METHOD_FUNC(Image_sparse_color), -1);
589
+ rb_define_method(Class_Image, "splice", RUBY_METHOD_FUNC(Image_splice), -1);
590
+ rb_define_method(Class_Image, "spread", RUBY_METHOD_FUNC(Image_spread), -1);
591
+ rb_define_method(Class_Image, "stegano", RUBY_METHOD_FUNC(Image_stegano), 2);
592
+ rb_define_method(Class_Image, "stereo", RUBY_METHOD_FUNC(Image_stereo), 1);
593
+ rb_define_method(Class_Image, "strip!", RUBY_METHOD_FUNC(Image_strip_bang), 0);
594
+ rb_define_method(Class_Image, "store_pixels", RUBY_METHOD_FUNC(Image_store_pixels), 5);
595
+ rb_define_method(Class_Image, "swirl", RUBY_METHOD_FUNC(Image_swirl), 1);
596
+ rb_define_method(Class_Image, "texture_flood_fill", RUBY_METHOD_FUNC(Image_texture_flood_fill), 5);
597
+ rb_define_method(Class_Image, "threshold", RUBY_METHOD_FUNC(Image_threshold), 1);
598
+ rb_define_method(Class_Image, "thumbnail", RUBY_METHOD_FUNC(Image_thumbnail), -1);
599
+ rb_define_method(Class_Image, "thumbnail!", RUBY_METHOD_FUNC(Image_thumbnail_bang), -1);
600
+ rb_define_method(Class_Image, "tint", RUBY_METHOD_FUNC(Image_tint), -1);
601
+ rb_define_method(Class_Image, "to_color", RUBY_METHOD_FUNC(Image_to_color), 1);
602
+ rb_define_method(Class_Image, "to_blob", RUBY_METHOD_FUNC(Image_to_blob), 0);
603
+ rb_define_method(Class_Image, "transparent", RUBY_METHOD_FUNC(Image_transparent), -1);
604
+ rb_define_method(Class_Image, "transparent_chroma", RUBY_METHOD_FUNC(Image_transparent_chroma), -1);
605
+ rb_define_method(Class_Image, "transpose", RUBY_METHOD_FUNC(Image_transpose), 0);
606
+ rb_define_method(Class_Image, "transpose!", RUBY_METHOD_FUNC(Image_transpose_bang), 0);
607
+ rb_define_method(Class_Image, "transverse", RUBY_METHOD_FUNC(Image_transverse), 0);
608
+ rb_define_method(Class_Image, "transverse!", RUBY_METHOD_FUNC(Image_transverse_bang), 0);
609
+ rb_define_method(Class_Image, "trim", RUBY_METHOD_FUNC(Image_trim), -1);
610
+ rb_define_method(Class_Image, "trim!", RUBY_METHOD_FUNC(Image_trim_bang), -1);
611
+ rb_define_method(Class_Image, "undefine", RUBY_METHOD_FUNC(Image_undefine), 1);
612
+ rb_define_method(Class_Image, "unique_colors", RUBY_METHOD_FUNC(Image_unique_colors), 0);
613
+ rb_define_method(Class_Image, "unsharp_mask", RUBY_METHOD_FUNC(Image_unsharp_mask), -1);
614
+ rb_define_method(Class_Image, "unsharp_mask_channel", RUBY_METHOD_FUNC(Image_unsharp_mask_channel), -1);
615
+ rb_define_method(Class_Image, "vignette", RUBY_METHOD_FUNC(Image_vignette), -1);
616
+ rb_define_method(Class_Image, "watermark", RUBY_METHOD_FUNC(Image_watermark), -1);
617
+ rb_define_method(Class_Image, "wave", RUBY_METHOD_FUNC(Image_wave), -1);
618
+ rb_define_method(Class_Image, "wet_floor", RUBY_METHOD_FUNC(Image_wet_floor), -1);
619
+ rb_define_method(Class_Image, "white_threshold", RUBY_METHOD_FUNC(Image_white_threshold), -1);
620
+ rb_define_method(Class_Image, "write", RUBY_METHOD_FUNC(Image_write), 1);
621
+
622
+ /*-----------------------------------------------------------------------*/
623
+ /* Class Magick::ImageList methods */
624
+ /*-----------------------------------------------------------------------*/
625
+
626
+ Class_ImageList = rb_define_class_under(Module_Magick, "ImageList", rb_cObject);
627
+
628
+ // Define an alias for Object#display before we override it
629
+ rb_define_alias(Class_ImageList, "__display__", "display");
630
+ rb_define_method(Class_ImageList, "remap", RUBY_METHOD_FUNC(ImageList_remap), -1);
631
+ rb_define_method(Class_ImageList, "animate", RUBY_METHOD_FUNC(ImageList_animate), -1);
632
+ rb_define_method(Class_ImageList, "append", RUBY_METHOD_FUNC(ImageList_append), 1);
633
+ rb_define_method(Class_ImageList, "average", RUBY_METHOD_FUNC(ImageList_average), 0);
634
+ rb_define_method(Class_ImageList, "coalesce", RUBY_METHOD_FUNC(ImageList_coalesce), 0);
635
+ rb_define_method(Class_ImageList, "combine", RUBY_METHOD_FUNC(ImageList_combine), -1);
636
+ rb_define_method(Class_ImageList, "composite_layers", RUBY_METHOD_FUNC(ImageList_composite_layers), -1);
637
+ rb_define_method(Class_ImageList, "deconstruct", RUBY_METHOD_FUNC(ImageList_deconstruct), 0);
638
+ rb_define_method(Class_ImageList, "display", RUBY_METHOD_FUNC(ImageList_display), 0);
639
+ rb_define_method(Class_ImageList, "flatten_images", RUBY_METHOD_FUNC(ImageList_flatten_images), 0);
640
+ rb_define_method(Class_ImageList, "montage", RUBY_METHOD_FUNC(ImageList_montage), 0);
641
+ rb_define_method(Class_ImageList, "morph", RUBY_METHOD_FUNC(ImageList_morph), 1);
642
+ rb_define_method(Class_ImageList, "mosaic", RUBY_METHOD_FUNC(ImageList_mosaic), 0);
643
+ rb_define_method(Class_ImageList, "optimize_layers", RUBY_METHOD_FUNC(ImageList_optimize_layers), 1);
644
+ rb_define_method(Class_ImageList, "quantize", RUBY_METHOD_FUNC(ImageList_quantize), -1);
645
+ rb_define_method(Class_ImageList, "to_blob", RUBY_METHOD_FUNC(ImageList_to_blob), 0);
646
+ rb_define_method(Class_ImageList, "write", RUBY_METHOD_FUNC(ImageList_write), 1);
647
+
648
+ /*-----------------------------------------------------------------------*/
649
+ /* Class Magick::Draw methods */
650
+ /*-----------------------------------------------------------------------*/
651
+
652
+ Class_Draw = rb_define_class_under(Module_Magick, "Draw", rb_cObject);
653
+ rb_define_alloc_func(Class_Draw, Draw_alloc);
654
+
655
+ // Define the attributes
656
+ Module_DrawAttribute = rb_define_module_under(Module_Magick, "DrawAttribute");
657
+ rb_define_method(Module_DrawAttribute, "affine=", RUBY_METHOD_FUNC(Draw_affine_eq), 1);
658
+ rb_define_method(Module_DrawAttribute, "align=", RUBY_METHOD_FUNC(Draw_align_eq), 1);
659
+ rb_define_method(Module_DrawAttribute, "decorate=", RUBY_METHOD_FUNC(Draw_decorate_eq), 1);
660
+ rb_define_method(Module_DrawAttribute, "density=", RUBY_METHOD_FUNC(Draw_density_eq), 1);
661
+ rb_define_method(Module_DrawAttribute, "encoding=", RUBY_METHOD_FUNC(Draw_encoding_eq), 1);
662
+ rb_define_method(Module_DrawAttribute, "fill=", RUBY_METHOD_FUNC(Draw_fill_eq), 1);
663
+ rb_define_method(Module_DrawAttribute, "fill_pattern=", RUBY_METHOD_FUNC(Draw_fill_pattern_eq), 1);
664
+ rb_define_method(Module_DrawAttribute, "font=", RUBY_METHOD_FUNC(Draw_font_eq), 1);
665
+ rb_define_method(Module_DrawAttribute, "font_family=", RUBY_METHOD_FUNC(Draw_font_family_eq), 1);
666
+ rb_define_method(Module_DrawAttribute, "font_stretch=", RUBY_METHOD_FUNC(Draw_font_stretch_eq), 1);
667
+ rb_define_method(Module_DrawAttribute, "font_style=", RUBY_METHOD_FUNC(Draw_font_style_eq), 1);
668
+ rb_define_method(Module_DrawAttribute, "font_weight=", RUBY_METHOD_FUNC(Draw_font_weight_eq), 1);
669
+ rb_define_method(Module_DrawAttribute, "gravity=", RUBY_METHOD_FUNC(Draw_gravity_eq), 1);
670
+ rb_define_method(Module_DrawAttribute, "interline_spacing=", RUBY_METHOD_FUNC(Draw_interline_spacing_eq), 1);
671
+ rb_define_method(Module_DrawAttribute, "interword_spacing=", RUBY_METHOD_FUNC(Draw_interword_spacing_eq), 1);
672
+ rb_define_method(Module_DrawAttribute, "kerning=", RUBY_METHOD_FUNC(Draw_kerning_eq), 1);
673
+ rb_define_method(Module_DrawAttribute, "pointsize=", RUBY_METHOD_FUNC(Draw_pointsize_eq), 1);
674
+ rb_define_method(Module_DrawAttribute, "rotation=", RUBY_METHOD_FUNC(Draw_rotation_eq), 1);
675
+ rb_define_method(Module_DrawAttribute, "stroke=", RUBY_METHOD_FUNC(Draw_stroke_eq), 1);
676
+ rb_define_method(Module_DrawAttribute, "stroke_pattern=", RUBY_METHOD_FUNC(Draw_stroke_pattern_eq), 1);
677
+ rb_define_method(Module_DrawAttribute, "stroke_width=", RUBY_METHOD_FUNC(Draw_stroke_width_eq), 1);
678
+ rb_define_method(Module_DrawAttribute, "text_antialias=", RUBY_METHOD_FUNC(Draw_text_antialias_eq), 1);
679
+ rb_define_method(Module_DrawAttribute, "tile=", RUBY_METHOD_FUNC(Draw_tile_eq), 1);
680
+ rb_define_method(Module_DrawAttribute, "undercolor=", RUBY_METHOD_FUNC(Draw_undercolor_eq), 1);
681
+
682
+ rb_include_module(Class_Draw, Module_DrawAttribute);
683
+
684
+ rb_define_method(Class_Draw, "annotate", RUBY_METHOD_FUNC(Draw_annotate), 6);
685
+ rb_define_method(Class_Draw, "clone", RUBY_METHOD_FUNC(Draw_clone), 0);
686
+ rb_define_method(Class_Draw, "composite", RUBY_METHOD_FUNC(Draw_composite), -1);
687
+ rb_define_method(Class_Draw, "draw", RUBY_METHOD_FUNC(Draw_draw), 1);
688
+ rb_define_method(Class_Draw, "dup", RUBY_METHOD_FUNC(Draw_dup), 0);
689
+ rb_define_method(Class_Draw, "get_type_metrics", RUBY_METHOD_FUNC(Draw_get_type_metrics), -1);
690
+ rb_define_method(Class_Draw, "get_multiline_type_metrics", RUBY_METHOD_FUNC(Draw_get_multiline_type_metrics), -1);
691
+ rb_define_method(Class_Draw, "initialize", RUBY_METHOD_FUNC(Draw_initialize), 0);
692
+ rb_define_method(Class_Draw, "initialize_copy", RUBY_METHOD_FUNC(Draw_init_copy), 1);
693
+ rb_define_method(Class_Draw, "inspect", RUBY_METHOD_FUNC(Draw_inspect), 0);
694
+ rb_define_method(Class_Draw, "marshal_dump", RUBY_METHOD_FUNC(Draw_marshal_dump), 0);
695
+ rb_define_method(Class_Draw, "marshal_load", RUBY_METHOD_FUNC(Draw_marshal_load), 1);
696
+ rb_define_method(Class_Draw, "primitive", RUBY_METHOD_FUNC(Draw_primitive), 1);
697
+
698
+ /*-----------------------------------------------------------------------*/
699
+ /* Class Magick::DrawOptions is identical to Magick::Draw but with */
700
+ /* only the attribute writer methods. This is the object that is passed */
701
+ /* to the block associated with the Draw.new method call. */
702
+ /*-----------------------------------------------------------------------*/
703
+
704
+ Class_DrawOptions = rb_define_class_under(Class_Image, "DrawOptions", rb_cObject);
705
+
706
+ rb_define_alloc_func(Class_DrawOptions, DrawOptions_alloc);
707
+
708
+ rb_define_method(Class_DrawOptions, "initialize", RUBY_METHOD_FUNC(DrawOptions_initialize), 0);
709
+
710
+ rb_include_module(Class_DrawOptions, Module_DrawAttribute);
711
+
712
+
713
+ /*-----------------------------------------------------------------------*/
714
+ /* Class Magick::Pixel */
715
+ /*-----------------------------------------------------------------------*/
716
+
717
+ Class_Pixel = rb_define_class_under(Module_Magick, "Pixel", rb_cObject);
718
+
719
+ // include Comparable
720
+ rb_include_module(Class_Pixel, rb_mComparable);
721
+
722
+ // Magick::Pixel has 3 constructors: "new" "from_color", "from_hsla"
723
+ rb_define_alloc_func(Class_Pixel, Pixel_alloc);
724
+ rb_define_singleton_method(Class_Pixel, "from_color", RUBY_METHOD_FUNC(Pixel_from_color), 1);
725
+ rb_define_singleton_method(Class_Pixel, "from_hsla", RUBY_METHOD_FUNC(Pixel_from_hsla), -1);
726
+
727
+ // Define the RGBA attributes
728
+ rb_define_method(Class_Pixel, "red", RUBY_METHOD_FUNC(Pixel_red), 0);
729
+ rb_define_method(Class_Pixel, "red=", RUBY_METHOD_FUNC(Pixel_red_eq), 1);
730
+ rb_define_method(Class_Pixel, "green", RUBY_METHOD_FUNC(Pixel_green), 0);
731
+ rb_define_method(Class_Pixel, "green=", RUBY_METHOD_FUNC(Pixel_green_eq), 1);
732
+ rb_define_method(Class_Pixel, "blue", RUBY_METHOD_FUNC(Pixel_blue), 0);
733
+ rb_define_method(Class_Pixel, "blue=", RUBY_METHOD_FUNC(Pixel_blue_eq), 1);
734
+ rb_define_method(Class_Pixel, "alpha", RUBY_METHOD_FUNC(Pixel_alpha), 0);
735
+ rb_define_method(Class_Pixel, "alpha=", RUBY_METHOD_FUNC(Pixel_alpha_eq), 1);
736
+
737
+ // Define the CMYK attributes
738
+ rb_define_method(Class_Pixel, "cyan", RUBY_METHOD_FUNC(Pixel_cyan), 0);
739
+ rb_define_method(Class_Pixel, "cyan=", RUBY_METHOD_FUNC(Pixel_cyan_eq), 1);
740
+ rb_define_method(Class_Pixel, "magenta", RUBY_METHOD_FUNC(Pixel_magenta), 0);
741
+ rb_define_method(Class_Pixel, "magenta=", RUBY_METHOD_FUNC(Pixel_magenta_eq), 1);
742
+ rb_define_method(Class_Pixel, "yellow", RUBY_METHOD_FUNC(Pixel_yellow), 0);
743
+ rb_define_method(Class_Pixel, "yellow=", RUBY_METHOD_FUNC(Pixel_yellow_eq), 1);
744
+ rb_define_method(Class_Pixel, "black", RUBY_METHOD_FUNC(Pixel_black), 0);
745
+ rb_define_method(Class_Pixel, "black=", RUBY_METHOD_FUNC(Pixel_black_eq), 1);
746
+
747
+
748
+ // Define the instance methods
749
+ rb_define_method(Class_Pixel, "<=>", RUBY_METHOD_FUNC(Pixel_spaceship), 1);
750
+ rb_define_method(Class_Pixel, "===", RUBY_METHOD_FUNC(Pixel_case_eq), 1);
751
+ rb_define_method(Class_Pixel, "eql?", RUBY_METHOD_FUNC(Pixel_eql_q), 1);
752
+ rb_define_method(Class_Pixel, "initialize", RUBY_METHOD_FUNC(Pixel_initialize), -1);
753
+ rb_define_method(Class_Pixel, "initialize_copy", RUBY_METHOD_FUNC(Pixel_init_copy), 1);
754
+ rb_define_method(Class_Pixel, "clone", RUBY_METHOD_FUNC(Pixel_clone), 0);
755
+ rb_define_method(Class_Pixel, "dup", RUBY_METHOD_FUNC(Pixel_dup), 0);
756
+ rb_define_method(Class_Pixel, "fcmp", RUBY_METHOD_FUNC(Pixel_fcmp), -1);
757
+ rb_define_method(Class_Pixel, "hash", RUBY_METHOD_FUNC(Pixel_hash), 0);
758
+ rb_define_method(Class_Pixel, "intensity", RUBY_METHOD_FUNC(Pixel_intensity), 0);
759
+ rb_define_method(Class_Pixel, "marshal_dump", RUBY_METHOD_FUNC(Pixel_marshal_dump), 0);
760
+ rb_define_method(Class_Pixel, "marshal_load", RUBY_METHOD_FUNC(Pixel_marshal_load), 1);
761
+ rb_define_method(Class_Pixel, "to_color", RUBY_METHOD_FUNC(Pixel_to_color), -1);
762
+ rb_define_method(Class_Pixel, "to_hsla", RUBY_METHOD_FUNC(Pixel_to_hsla), 0);
763
+ rb_define_method(Class_Pixel, "to_s", RUBY_METHOD_FUNC(Pixel_to_s), 0);
764
+
765
+ /*-----------------------------------------------------------------------*/
766
+ /* Class Magick::ImageList::Montage methods */
767
+ /*-----------------------------------------------------------------------*/
768
+
769
+ Class_Montage = rb_define_class_under(Class_ImageList, "Montage", rb_cObject);
770
+
771
+ rb_define_alloc_func(Class_Montage, Montage_alloc);
772
+
773
+ rb_define_method(Class_Montage, "initialize", RUBY_METHOD_FUNC(Montage_initialize), 0);
774
+ rb_define_method(Class_Montage, "freeze", RUBY_METHOD_FUNC(rm_no_freeze), 0);
775
+
776
+ // These accessors supply optional arguments for Magick::ImageList::Montage.new
777
+ rb_define_method(Class_Montage, "background_color=", RUBY_METHOD_FUNC(Montage_background_color_eq), 1);
778
+ rb_define_method(Class_Montage, "border_color=", RUBY_METHOD_FUNC(Montage_border_color_eq), 1);
779
+ rb_define_method(Class_Montage, "border_width=", RUBY_METHOD_FUNC(Montage_border_width_eq), 1);
780
+ rb_define_method(Class_Montage, "compose=", RUBY_METHOD_FUNC(Montage_compose_eq), 1);
781
+ rb_define_method(Class_Montage, "filename=", RUBY_METHOD_FUNC(Montage_filename_eq), 1);
782
+ rb_define_method(Class_Montage, "fill=", RUBY_METHOD_FUNC(Montage_fill_eq), 1);
783
+ rb_define_method(Class_Montage, "font=", RUBY_METHOD_FUNC(Montage_font_eq), 1);
784
+ rb_define_method(Class_Montage, "frame=", RUBY_METHOD_FUNC(Montage_frame_eq), 1);
785
+ rb_define_method(Class_Montage, "geometry=", RUBY_METHOD_FUNC(Montage_geometry_eq), 1);
786
+ rb_define_method(Class_Montage, "gravity=", RUBY_METHOD_FUNC(Montage_gravity_eq), 1);
787
+ rb_define_method(Class_Montage, "matte_color=", RUBY_METHOD_FUNC(Montage_matte_color_eq), 1);
788
+ rb_define_method(Class_Montage, "pointsize=", RUBY_METHOD_FUNC(Montage_pointsize_eq), 1);
789
+ rb_define_method(Class_Montage, "shadow=", RUBY_METHOD_FUNC(Montage_shadow_eq), 1);
790
+ rb_define_method(Class_Montage, "stroke=", RUBY_METHOD_FUNC(Montage_stroke_eq), 1);
791
+ rb_define_method(Class_Montage, "texture=", RUBY_METHOD_FUNC(Montage_texture_eq), 1);
792
+ rb_define_method(Class_Montage, "tile=", RUBY_METHOD_FUNC(Montage_tile_eq), 1);
793
+ rb_define_method(Class_Montage, "title=", RUBY_METHOD_FUNC(Montage_title_eq), 1);
794
+
795
+ /*-----------------------------------------------------------------------*/
796
+ /* Class Magick::Image::Info */
797
+ /*-----------------------------------------------------------------------*/
798
+
799
+ Class_Info = rb_define_class_under(Class_Image, "Info", rb_cObject);
800
+
801
+ rb_define_alloc_func(Class_Info, Info_alloc);
802
+
803
+ rb_define_method(Class_Info, "initialize", RUBY_METHOD_FUNC(Info_initialize), 0);
804
+ rb_define_method(Class_Info, "channel", RUBY_METHOD_FUNC(Info_channel), -1);
805
+ rb_define_method(Class_Info, "freeze", RUBY_METHOD_FUNC(rm_no_freeze), 0);
806
+ rb_define_method(Class_Info, "define", RUBY_METHOD_FUNC(Info_define), -1);
807
+ rb_define_method(Class_Info, "[]=", RUBY_METHOD_FUNC(Info_aset), -1);
808
+ rb_define_method(Class_Info, "[]", RUBY_METHOD_FUNC(Info_aref), -1);
809
+ rb_define_method(Class_Info, "undefine", RUBY_METHOD_FUNC(Info_undefine), 2);
810
+
811
+ // Define the attributes
812
+ rb_define_method(Class_Info, "antialias", RUBY_METHOD_FUNC(Info_antialias), 0);
813
+ rb_define_method(Class_Info, "antialias=", RUBY_METHOD_FUNC(Info_antialias_eq), 1);
814
+ rb_define_method(Class_Info, "attenuate", RUBY_METHOD_FUNC(Info_attenuate), 0);
815
+ rb_define_method(Class_Info, "attenuate=", RUBY_METHOD_FUNC(Info_attenuate_eq), 1);
816
+ rb_define_method(Class_Info, "authenticate", RUBY_METHOD_FUNC(Info_authenticate), 0);
817
+ rb_define_method(Class_Info, "authenticate=", RUBY_METHOD_FUNC(Info_authenticate_eq), 1);
818
+ rb_define_method(Class_Info, "background_color", RUBY_METHOD_FUNC(Info_background_color), 0);
819
+ rb_define_method(Class_Info, "background_color=", RUBY_METHOD_FUNC(Info_background_color_eq), 1);
820
+ rb_define_method(Class_Info, "border_color", RUBY_METHOD_FUNC(Info_border_color), 0);
821
+ rb_define_method(Class_Info, "border_color=", RUBY_METHOD_FUNC(Info_border_color_eq), 1);
822
+ rb_define_method(Class_Info, "caption", RUBY_METHOD_FUNC(Info_caption), 0);
823
+ rb_define_method(Class_Info, "caption=", RUBY_METHOD_FUNC(Info_caption_eq), 1);
824
+ rb_define_method(Class_Info, "colorspace", RUBY_METHOD_FUNC(Info_colorspace), 0);
825
+ rb_define_method(Class_Info, "colorspace=", RUBY_METHOD_FUNC(Info_colorspace_eq), 1);
826
+ rb_define_method(Class_Info, "comment", RUBY_METHOD_FUNC(Info_comment), 0);
827
+ rb_define_method(Class_Info, "comment=", RUBY_METHOD_FUNC(Info_comment_eq), 1);
828
+ rb_define_method(Class_Info, "compression", RUBY_METHOD_FUNC(Info_compression), 0);
829
+ rb_define_method(Class_Info, "compression=", RUBY_METHOD_FUNC(Info_compression_eq), 1);
830
+ rb_define_method(Class_Info, "delay", RUBY_METHOD_FUNC(Info_delay), 0);
831
+ rb_define_method(Class_Info, "delay=", RUBY_METHOD_FUNC(Info_delay_eq), 1);
832
+ rb_define_method(Class_Info, "density", RUBY_METHOD_FUNC(Info_density), 0);
833
+ rb_define_method(Class_Info, "density=", RUBY_METHOD_FUNC(Info_density_eq), 1);
834
+ rb_define_method(Class_Info, "depth", RUBY_METHOD_FUNC(Info_depth), 0);
835
+ rb_define_method(Class_Info, "depth=", RUBY_METHOD_FUNC(Info_depth_eq), 1);
836
+ rb_define_method(Class_Info, "dispose", RUBY_METHOD_FUNC(Info_dispose), 0);
837
+ rb_define_method(Class_Info, "dispose=", RUBY_METHOD_FUNC(Info_dispose_eq), 1);
838
+ rb_define_method(Class_Info, "dither", RUBY_METHOD_FUNC(Info_dither), 0);
839
+ rb_define_method(Class_Info, "dither=", RUBY_METHOD_FUNC(Info_dither_eq), 1);
840
+ rb_define_method(Class_Info, "endian", RUBY_METHOD_FUNC(Info_endian), 0);
841
+ rb_define_method(Class_Info, "endian=", RUBY_METHOD_FUNC(Info_endian_eq), 1);
842
+ rb_define_method(Class_Info, "extract", RUBY_METHOD_FUNC(Info_extract), 0);
843
+ rb_define_method(Class_Info, "extract=", RUBY_METHOD_FUNC(Info_extract_eq), 1);
844
+ rb_define_method(Class_Info, "filename", RUBY_METHOD_FUNC(Info_filename), 0);
845
+ rb_define_method(Class_Info, "filename=", RUBY_METHOD_FUNC(Info_filename_eq), 1);
846
+ rb_define_method(Class_Info, "fill", RUBY_METHOD_FUNC(Info_fill), 0);
847
+ rb_define_method(Class_Info, "fill=", RUBY_METHOD_FUNC(Info_fill_eq), 1);
848
+ rb_define_method(Class_Info, "font", RUBY_METHOD_FUNC(Info_font), 0);
849
+ rb_define_method(Class_Info, "font=", RUBY_METHOD_FUNC(Info_font_eq), 1);
850
+ rb_define_method(Class_Info, "format", RUBY_METHOD_FUNC(Info_format), 0);
851
+ rb_define_method(Class_Info, "format=", RUBY_METHOD_FUNC(Info_format_eq), 1);
852
+ rb_define_method(Class_Info, "fuzz", RUBY_METHOD_FUNC(Info_fuzz), 0);
853
+ rb_define_method(Class_Info, "fuzz=", RUBY_METHOD_FUNC(Info_fuzz_eq), 1);
854
+ rb_define_method(Class_Info, "gravity", RUBY_METHOD_FUNC(Info_gravity), 0);
855
+ rb_define_method(Class_Info, "gravity=", RUBY_METHOD_FUNC(Info_gravity_eq), 1);
856
+ rb_define_method(Class_Info, "image_type", RUBY_METHOD_FUNC(Info_image_type), 0);
857
+ rb_define_method(Class_Info, "image_type=", RUBY_METHOD_FUNC(Info_image_type_eq), 1);
858
+ rb_define_method(Class_Info, "interlace", RUBY_METHOD_FUNC(Info_interlace), 0);
859
+ rb_define_method(Class_Info, "interlace=", RUBY_METHOD_FUNC(Info_interlace_eq), 1);
860
+ rb_define_method(Class_Info, "label", RUBY_METHOD_FUNC(Info_label), 0);
861
+ rb_define_method(Class_Info, "label=", RUBY_METHOD_FUNC(Info_label_eq), 1);
862
+ rb_define_method(Class_Info, "matte_color", RUBY_METHOD_FUNC(Info_matte_color), 0);
863
+ rb_define_method(Class_Info, "matte_color=", RUBY_METHOD_FUNC(Info_matte_color_eq), 1);
864
+ rb_define_method(Class_Info, "monochrome", RUBY_METHOD_FUNC(Info_monochrome), 0);
865
+ rb_define_method(Class_Info, "monochrome=", RUBY_METHOD_FUNC(Info_monochrome_eq), 1);
866
+ rb_define_method(Class_Info, "number_scenes", RUBY_METHOD_FUNC(Info_number_scenes), 0);
867
+ rb_define_method(Class_Info, "number_scenes=", RUBY_METHOD_FUNC(Info_number_scenes_eq), 1);
868
+ rb_define_method(Class_Info, "orientation", RUBY_METHOD_FUNC(Info_orientation), 0);
869
+ rb_define_method(Class_Info, "orientation=", RUBY_METHOD_FUNC(Info_orientation_eq), 1);
870
+ rb_define_method(Class_Info, "origin", RUBY_METHOD_FUNC(Info_origin), 0); // new in 6.3.1
871
+ rb_define_method(Class_Info, "origin=", RUBY_METHOD_FUNC(Info_origin_eq), 1); // new in 6.3.1
872
+ rb_define_method(Class_Info, "page", RUBY_METHOD_FUNC(Info_page), 0);
873
+ rb_define_method(Class_Info, "page=", RUBY_METHOD_FUNC(Info_page_eq), 1);
874
+ rb_define_method(Class_Info, "pointsize", RUBY_METHOD_FUNC(Info_pointsize), 0);
875
+ rb_define_method(Class_Info, "pointsize=", RUBY_METHOD_FUNC(Info_pointsize_eq), 1);
876
+ rb_define_method(Class_Info, "quality", RUBY_METHOD_FUNC(Info_quality), 0);
877
+ rb_define_method(Class_Info, "quality=", RUBY_METHOD_FUNC(Info_quality_eq), 1);
878
+ rb_define_method(Class_Info, "sampling_factor", RUBY_METHOD_FUNC(Info_sampling_factor), 0);
879
+ rb_define_method(Class_Info, "sampling_factor=", RUBY_METHOD_FUNC(Info_sampling_factor_eq), 1);
880
+ rb_define_method(Class_Info, "scene", RUBY_METHOD_FUNC(Info_scene), 0);
881
+ rb_define_method(Class_Info, "scene=", RUBY_METHOD_FUNC(Info_scene_eq), 1);
882
+ rb_define_method(Class_Info, "server_name", RUBY_METHOD_FUNC(Info_server_name), 0);
883
+ rb_define_method(Class_Info, "server_name=", RUBY_METHOD_FUNC(Info_server_name_eq), 1);
884
+ rb_define_method(Class_Info, "size", RUBY_METHOD_FUNC(Info_size), 0);
885
+ rb_define_method(Class_Info, "size=", RUBY_METHOD_FUNC(Info_size_eq), 1);
886
+ rb_define_method(Class_Info, "stroke", RUBY_METHOD_FUNC(Info_stroke), 0);
887
+ rb_define_method(Class_Info, "stroke=", RUBY_METHOD_FUNC(Info_stroke_eq), 1);
888
+ rb_define_method(Class_Info, "stroke_width", RUBY_METHOD_FUNC(Info_stroke_width), 0);
889
+ rb_define_method(Class_Info, "stroke_width=", RUBY_METHOD_FUNC(Info_stroke_width_eq), 1);
890
+ rb_define_method(Class_Info, "texture=", RUBY_METHOD_FUNC(Info_texture_eq), 1);
891
+ rb_define_method(Class_Info, "tile_offset", RUBY_METHOD_FUNC(Info_tile_offset), 0);
892
+ rb_define_method(Class_Info, "tile_offset=", RUBY_METHOD_FUNC(Info_tile_offset_eq), 1);
893
+ rb_define_method(Class_Info, "transparent_color", RUBY_METHOD_FUNC(Info_transparent_color), 0);
894
+ rb_define_method(Class_Info, "transparent_color=", RUBY_METHOD_FUNC(Info_transparent_color_eq), 1);
895
+ rb_define_method(Class_Info, "undercolor", RUBY_METHOD_FUNC(Info_undercolor), 0);
896
+ rb_define_method(Class_Info, "undercolor=", RUBY_METHOD_FUNC(Info_undercolor_eq), 1);
897
+ rb_define_method(Class_Info, "units", RUBY_METHOD_FUNC(Info_units), 0);
898
+ rb_define_method(Class_Info, "units=", RUBY_METHOD_FUNC(Info_units_eq), 1);
899
+ rb_define_method(Class_Info, "view", RUBY_METHOD_FUNC(Info_view), 0);
900
+ rb_define_method(Class_Info, "view=", RUBY_METHOD_FUNC(Info_view_eq), 1);
901
+
902
+ /*-----------------------------------------------------------------------*/
903
+ /* Class Magick::KernelInfo */
904
+ /*-----------------------------------------------------------------------*/
905
+
906
+ Class_KernelInfo = rb_define_class_under(Module_Magick, "KernelInfo", rb_cObject);
907
+
908
+ rb_define_alloc_func(Class_KernelInfo, KernelInfo_alloc);
909
+
910
+ rb_define_method(Class_KernelInfo, "initialize", RUBY_METHOD_FUNC(KernelInfo_initialize), 1);
911
+ rb_define_method(Class_KernelInfo, "unity_add", RUBY_METHOD_FUNC(KernelInfo_unity_add), 1);
912
+ rb_define_method(Class_KernelInfo, "scale", RUBY_METHOD_FUNC(KernelInfo_scale), 2);
913
+ rb_define_method(Class_KernelInfo, "scale_geometry", RUBY_METHOD_FUNC(KernelInfo_scale_geometry), 1);
914
+ rb_define_method(Class_KernelInfo, "clone", RUBY_METHOD_FUNC(KernelInfo_clone), 0);
915
+ rb_define_method(Class_KernelInfo, "dup", RUBY_METHOD_FUNC(KernelInfo_clone), 0);
916
+
917
+ rb_define_singleton_method(Class_KernelInfo, "builtin", RUBY_METHOD_FUNC(KernelInfo_builtin), 2);
918
+
919
+
920
+ /*-----------------------------------------------------------------------*/
921
+ /* Class Magick::Image::PolaroidOptions */
922
+ /*-----------------------------------------------------------------------*/
923
+
924
+ Class_PolaroidOptions = rb_define_class_under(Class_Image, "PolaroidOptions", rb_cObject);
925
+
926
+ rb_define_alloc_func(Class_PolaroidOptions, PolaroidOptions_alloc);
927
+
928
+ rb_define_method(Class_PolaroidOptions, "initialize", RUBY_METHOD_FUNC(PolaroidOptions_initialize), 0);
929
+
930
+ // Define the attributes
931
+ rb_define_method(Class_PolaroidOptions, "shadow_color=", RUBY_METHOD_FUNC(PolaroidOptions_shadow_color_eq), 1);
932
+ rb_define_method(Class_PolaroidOptions, "border_color=", RUBY_METHOD_FUNC(PolaroidOptions_border_color_eq), 1);
933
+
934
+ // The other attribute writer methods are implemented by Draw's functions
935
+ rb_include_module(Class_PolaroidOptions, Module_DrawAttribute);
936
+
937
+ /*-----------------------------------------------------------------------*/
938
+ /* Magick::******Fill classes and methods */
939
+ /*-----------------------------------------------------------------------*/
940
+
941
+ // class Magick::GradientFill
942
+ Class_GradientFill = rb_define_class_under(Module_Magick, "GradientFill", rb_cObject);
943
+
944
+ rb_define_alloc_func(Class_GradientFill, GradientFill_alloc);
945
+
946
+ rb_define_method(Class_GradientFill, "initialize", RUBY_METHOD_FUNC(GradientFill_initialize), 6);
947
+ rb_define_method(Class_GradientFill, "fill", RUBY_METHOD_FUNC(GradientFill_fill), 1);
948
+
949
+ // class Magick::TextureFill
950
+ Class_TextureFill = rb_define_class_under(Module_Magick, "TextureFill", rb_cObject);
951
+
952
+ rb_define_alloc_func(Class_TextureFill, TextureFill_alloc);
953
+
954
+ rb_define_method(Class_TextureFill, "initialize", RUBY_METHOD_FUNC(TextureFill_initialize), 1);
955
+ rb_define_method(Class_TextureFill, "fill", RUBY_METHOD_FUNC(TextureFill_fill), 1);
956
+
957
+ /*-----------------------------------------------------------------------*/
958
+ /* Class Magick::ImageMagickError < StandardError */
959
+ /* Class Magick::FatalImageMagickError < StandardError */
960
+ /*-----------------------------------------------------------------------*/
961
+
962
+ Class_ImageMagickError = rb_define_class_under(Module_Magick, "ImageMagickError", rb_eStandardError);
963
+ rb_define_method(Class_ImageMagickError, "initialize", RUBY_METHOD_FUNC(ImageMagickError_initialize), -1);
964
+ rb_define_attr(Class_ImageMagickError, MAGICK_LOC, True, False);
965
+
966
+ Class_FatalImageMagickError = rb_define_class_under(Module_Magick, "FatalImageMagickError", rb_eStandardError);
967
+
968
+
969
+ /*-----------------------------------------------------------------------*/
970
+ /* Class Magick::DestroyedImageError < StandardError */
971
+ /*-----------------------------------------------------------------------*/
972
+ Class_DestroyedImageError = rb_define_class_under(Module_Magick, "DestroyedImageError", rb_eStandardError);
973
+
974
+
975
+ // Miscellaneous fixed-point constants
976
+ DEF_CONST(QuantumRange);
977
+ DEF_CONST(MAGICKCORE_QUANTUM_DEPTH);
978
+ DEF_CONSTV(OpaqueAlpha, QuantumRange);
979
+ DEF_CONSTV(TransparentAlpha, 0);
980
+
981
+ version_constants();
982
+ features_constant();
983
+
984
+ /*-----------------------------------------------------------------------*/
985
+ /* Class Magick::Enum */
986
+ /*-----------------------------------------------------------------------*/
987
+
988
+ // includes Comparable
989
+ Class_Enum = rb_define_class_under(Module_Magick, "Enum", rb_cObject);
990
+ rb_include_module(Class_Enum, rb_mComparable);
991
+
992
+ rb_define_alloc_func(Class_Enum, Enum_alloc);
993
+
994
+ rb_define_method(Class_Enum, "initialize", RUBY_METHOD_FUNC(Enum_initialize), 2);
995
+ rb_define_method(Class_Enum, "to_s", RUBY_METHOD_FUNC(Enum_to_s), 0);
996
+ rb_define_method(Class_Enum, "to_i", RUBY_METHOD_FUNC(Enum_to_i), 0);
997
+ rb_define_method(Class_Enum, "<=>", RUBY_METHOD_FUNC(Enum_spaceship), 1);
998
+ rb_define_method(Class_Enum, "===", RUBY_METHOD_FUNC(Enum_case_eq), 1);
999
+ rb_define_method(Class_Enum, "|", RUBY_METHOD_FUNC(Enum_bitwise_or), 1);
1000
+
1001
+ // AlignType constants
1002
+ DEF_ENUM(AlignType)
1003
+ ENUMERATOR(UndefinedAlign)
1004
+ ENUMERATOR(LeftAlign)
1005
+ ENUMERATOR(CenterAlign)
1006
+ ENUMERATOR(RightAlign)
1007
+ END_ENUM
1008
+
1009
+ // AlphaChannelOption constants
1010
+ DEF_ENUM(AlphaChannelOption)
1011
+ ENUMERATOR(UndefinedAlphaChannel)
1012
+ ENUMERATOR(ActivateAlphaChannel)
1013
+ ENUMERATOR(DeactivateAlphaChannel)
1014
+ ENUMERATOR(SetAlphaChannel)
1015
+ ENUMERATOR(RemoveAlphaChannel)
1016
+ ENUMERATOR(CopyAlphaChannel)
1017
+ ENUMERATOR(ExtractAlphaChannel)
1018
+ ENUMERATOR(OpaqueAlphaChannel)
1019
+ ENUMERATOR(ShapeAlphaChannel)
1020
+ ENUMERATOR(TransparentAlphaChannel)
1021
+ ENUMERATOR(BackgroundAlphaChannel)
1022
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1023
+ ENUMERATOR(AssociateAlphaChannel)
1024
+ ENUMERATOR(DisassociateAlphaChannel)
1025
+ #endif
1026
+ #if defined(IMAGEMAGICK_7)
1027
+ ENUMERATOR(OnAlphaChannel)
1028
+ ENUMERATOR(OffAlphaChannel)
1029
+ #else
1030
+ ENUMERATORV(OnAlphaChannel, ActivateAlphaChannel)
1031
+ ENUMERATORV(OffAlphaChannel, DeactivateAlphaChannel)
1032
+ #endif
1033
+ END_ENUM
1034
+
1035
+ // AnchorType constants (for Draw#text_anchor - these are not defined by ImageMagick)
1036
+ DEF_ENUM(AnchorType)
1037
+ ENUMERATOR(StartAnchor)
1038
+ ENUMERATOR(MiddleAnchor)
1039
+ ENUMERATOR(EndAnchor)
1040
+ END_ENUM
1041
+
1042
+ // ChannelType constants
1043
+ DEF_ENUM(ChannelType)
1044
+ ENUMERATOR(UndefinedChannel)
1045
+ ENUMERATOR(RedChannel)
1046
+ ENUMERATOR(CyanChannel)
1047
+ ENUMERATOR(GreenChannel)
1048
+ ENUMERATOR(MagentaChannel)
1049
+ ENUMERATOR(BlueChannel)
1050
+ ENUMERATOR(YellowChannel)
1051
+ ENUMERATOR(OpacityChannel)
1052
+ ENUMERATOR(BlackChannel)
1053
+ ENUMERATOR(IndexChannel)
1054
+ ENUMERATOR(GrayChannel)
1055
+ ENUMERATOR(AllChannels)
1056
+ ENUMERATORV(AlphaChannel, OpacityChannel)
1057
+ ENUMERATORV(DefaultChannels, 0xff & ~OpacityChannel)
1058
+ ENUMERATORV(HueChannel, RedChannel)
1059
+ ENUMERATORV(LuminosityChannel, BlueChannel)
1060
+ ENUMERATORV(SaturationChannel, GreenChannel)
1061
+ END_ENUM
1062
+
1063
+ // ClassType constants
1064
+ DEF_ENUM(ClassType)
1065
+ ENUMERATOR(UndefinedClass)
1066
+ ENUMERATOR(PseudoClass)
1067
+ ENUMERATOR(DirectClass)
1068
+ END_ENUM
1069
+
1070
+ // ColorspaceType constants
1071
+ DEF_ENUM(ColorspaceType)
1072
+ ENUMERATOR(UndefinedColorspace)
1073
+ ENUMERATOR(RGBColorspace)
1074
+ ENUMERATOR(GRAYColorspace)
1075
+ ENUMERATOR(TransparentColorspace)
1076
+ ENUMERATOR(OHTAColorspace)
1077
+ ENUMERATOR(XYZColorspace)
1078
+ ENUMERATOR(YCbCrColorspace)
1079
+ ENUMERATOR(YCCColorspace)
1080
+ ENUMERATOR(YIQColorspace)
1081
+ ENUMERATOR(YPbPrColorspace)
1082
+ ENUMERATOR(YUVColorspace)
1083
+ ENUMERATOR(CMYKColorspace)
1084
+ ENUMERATORV(SRGBColorspace, sRGBColorspace)
1085
+ ENUMERATOR(HSLColorspace)
1086
+ ENUMERATOR(HWBColorspace)
1087
+ ENUMERATOR(HSBColorspace)
1088
+ ENUMERATOR(LabColorspace)
1089
+ ENUMERATOR(Rec601YCbCrColorspace)
1090
+ ENUMERATOR(Rec709YCbCrColorspace)
1091
+ ENUMERATOR(LogColorspace)
1092
+ ENUMERATOR(CMYColorspace)
1093
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1094
+ ENUMERATOR(LuvColorspace)
1095
+ ENUMERATOR(HCLColorspace)
1096
+ ENUMERATOR(LCHColorspace)
1097
+ ENUMERATOR(LMSColorspace)
1098
+ ENUMERATOR(LCHabColorspace)
1099
+ ENUMERATOR(LCHuvColorspace)
1100
+ ENUMERATORV(ScRGBColorspace, scRGBColorspace)
1101
+ ENUMERATOR(HSIColorspace)
1102
+ ENUMERATOR(HSVColorspace)
1103
+ ENUMERATOR(HCLpColorspace)
1104
+ ENUMERATOR(YDbDrColorspace)
1105
+ ENUMERATORV(XyYColorspace, xyYColorspace)
1106
+ #endif
1107
+ #if defined(IMAGEMAGICK_7)
1108
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_7_0_8)
1109
+ ENUMERATOR(LinearGRAYColorspace)
1110
+ #endif
1111
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_7_0_10)
1112
+ ENUMERATOR(JzazbzColorspace)
1113
+ #endif
1114
+ #elif defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_9_10)
1115
+ ENUMERATOR(LinearGRAYColorspace)
1116
+ #endif
1117
+ END_ENUM
1118
+
1119
+ // ComplianceType constants are defined as enums but used as bit flags
1120
+ DEF_ENUM(ComplianceType)
1121
+ ENUMERATOR(UndefinedCompliance)
1122
+ // AllCompliance is 0xffff, not too useful for us!
1123
+ ENUMERATORV(AllCompliance, SVGCompliance|X11Compliance|XPMCompliance)
1124
+ ENUMERATOR(NoCompliance)
1125
+ ENUMERATOR(SVGCompliance)
1126
+ ENUMERATOR(X11Compliance)
1127
+ ENUMERATOR(XPMCompliance)
1128
+ END_ENUM
1129
+
1130
+ // CompositeOperator constants
1131
+ DEF_ENUM(CompositeOperator)
1132
+ ENUMERATOR(AtopCompositeOp)
1133
+ ENUMERATOR(BlendCompositeOp)
1134
+ ENUMERATOR(BlurCompositeOp)
1135
+ ENUMERATOR(BumpmapCompositeOp)
1136
+ ENUMERATOR(ChangeMaskCompositeOp)
1137
+ ENUMERATOR(ClearCompositeOp)
1138
+ ENUMERATOR(ColorBurnCompositeOp)
1139
+ ENUMERATOR(ColorDodgeCompositeOp)
1140
+ ENUMERATOR(ColorizeCompositeOp)
1141
+ ENUMERATOR(CopyBlackCompositeOp)
1142
+ ENUMERATOR(CopyBlueCompositeOp)
1143
+ ENUMERATOR(CopyCompositeOp)
1144
+ ENUMERATOR(CopyCyanCompositeOp)
1145
+ ENUMERATOR(CopyGreenCompositeOp)
1146
+ ENUMERATOR(CopyMagentaCompositeOp)
1147
+ ENUMERATOR(CopyRedCompositeOp)
1148
+ ENUMERATOR(CopyYellowCompositeOp)
1149
+ ENUMERATOR(DarkenCompositeOp)
1150
+ ENUMERATOR(DarkenIntensityCompositeOp)
1151
+ ENUMERATOR(DistortCompositeOp)
1152
+ ENUMERATOR(DivideDstCompositeOp)
1153
+ ENUMERATOR(DivideSrcCompositeOp)
1154
+ ENUMERATOR(DstAtopCompositeOp)
1155
+ ENUMERATOR(DstCompositeOp)
1156
+ ENUMERATOR(DstInCompositeOp)
1157
+ ENUMERATOR(DstOutCompositeOp)
1158
+ ENUMERATOR(DstOverCompositeOp)
1159
+ ENUMERATOR(DifferenceCompositeOp)
1160
+ ENUMERATOR(DisplaceCompositeOp)
1161
+ ENUMERATOR(DissolveCompositeOp)
1162
+ ENUMERATOR(ExclusionCompositeOp)
1163
+ ENUMERATOR(HardLightCompositeOp)
1164
+ ENUMERATOR(HueCompositeOp)
1165
+ ENUMERATOR(InCompositeOp)
1166
+ ENUMERATOR(LightenCompositeOp)
1167
+ ENUMERATOR(LightenIntensityCompositeOp)
1168
+ ENUMERATOR(LinearBurnCompositeOp)
1169
+ ENUMERATOR(LinearDodgeCompositeOp)
1170
+ ENUMERATOR(LinearLightCompositeOp)
1171
+ ENUMERATOR(LuminizeCompositeOp)
1172
+ ENUMERATOR(MathematicsCompositeOp)
1173
+ ENUMERATOR(MinusDstCompositeOp)
1174
+ ENUMERATOR(MinusSrcCompositeOp)
1175
+ ENUMERATOR(ModulateCompositeOp)
1176
+ ENUMERATOR(ModulusAddCompositeOp)
1177
+ ENUMERATOR(ModulusSubtractCompositeOp)
1178
+ ENUMERATOR(MultiplyCompositeOp)
1179
+ ENUMERATOR(NoCompositeOp)
1180
+ ENUMERATOR(OutCompositeOp)
1181
+ ENUMERATOR(OverCompositeOp)
1182
+ ENUMERATOR(OverlayCompositeOp)
1183
+ ENUMERATOR(PegtopLightCompositeOp)
1184
+ ENUMERATOR(PinLightCompositeOp)
1185
+ ENUMERATOR(PlusCompositeOp)
1186
+ ENUMERATOR(ReplaceCompositeOp) // synonym for CopyCompositeOp
1187
+ ENUMERATOR(SaturateCompositeOp)
1188
+ ENUMERATOR(ScreenCompositeOp)
1189
+ ENUMERATOR(SoftLightCompositeOp)
1190
+ ENUMERATOR(SrcAtopCompositeOp)
1191
+ ENUMERATOR(SrcCompositeOp)
1192
+ ENUMERATOR(SrcInCompositeOp)
1193
+ ENUMERATOR(SrcOutCompositeOp)
1194
+ ENUMERATOR(SrcOverCompositeOp)
1195
+ ENUMERATOR(ThresholdCompositeOp)
1196
+ ENUMERATOR(UndefinedCompositeOp)
1197
+ ENUMERATOR(VividLightCompositeOp)
1198
+ ENUMERATOR(XorCompositeOp)
1199
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1200
+ ENUMERATOR(HardMixCompositeOp)
1201
+ #endif
1202
+ #if defined(IMAGEMAGICK_7)
1203
+ ENUMERATOR(CopyAlphaCompositeOp)
1204
+ #else
1205
+ ENUMERATORV(CopyAlphaCompositeOp, CopyOpacityCompositeOp)
1206
+ #endif
1207
+ END_ENUM
1208
+
1209
+ // CompressionType constants
1210
+ DEF_ENUM(CompressionType)
1211
+ ENUMERATOR(UndefinedCompression)
1212
+ ENUMERATOR(NoCompression)
1213
+ ENUMERATOR(B44Compression)
1214
+ ENUMERATOR(B44ACompression)
1215
+ ENUMERATOR(BZipCompression)
1216
+ ENUMERATOR(DXT1Compression)
1217
+ ENUMERATOR(DXT3Compression)
1218
+ ENUMERATOR(DXT5Compression)
1219
+ ENUMERATOR(FaxCompression)
1220
+ ENUMERATOR(Group4Compression)
1221
+ ENUMERATOR(JPEGCompression)
1222
+ ENUMERATOR(JPEG2000Compression)
1223
+ ENUMERATOR(LosslessJPEGCompression)
1224
+ ENUMERATOR(LZWCompression)
1225
+ ENUMERATOR(PizCompression)
1226
+ ENUMERATOR(Pxr24Compression)
1227
+ ENUMERATOR(RLECompression)
1228
+ ENUMERATOR(ZipCompression)
1229
+ ENUMERATOR(ZipSCompression)
1230
+ ENUMERATOR(LZMACompression)
1231
+ ENUMERATOR(JBIG1Compression)
1232
+ ENUMERATOR(JBIG2Compression)
1233
+ END_ENUM
1234
+
1235
+ // DecorationType constants
1236
+ DEF_ENUM(DecorationType)
1237
+ ENUMERATOR(NoDecoration)
1238
+ ENUMERATOR(UnderlineDecoration)
1239
+ ENUMERATOR(OverlineDecoration)
1240
+ ENUMERATOR(LineThroughDecoration)
1241
+ END_ENUM
1242
+
1243
+ // DisposeType constants
1244
+ DEF_ENUM(DisposeType)
1245
+ ENUMERATOR(UndefinedDispose)
1246
+ ENUMERATOR(BackgroundDispose)
1247
+ ENUMERATOR(NoneDispose)
1248
+ ENUMERATOR(PreviousDispose)
1249
+ END_ENUM
1250
+
1251
+ // DistortMethod constants
1252
+ DEF_ENUM(DistortMethod)
1253
+ ENUMERATOR(UndefinedDistortion)
1254
+ ENUMERATOR(AffineDistortion)
1255
+ ENUMERATOR(AffineProjectionDistortion)
1256
+ ENUMERATOR(ArcDistortion)
1257
+ ENUMERATOR(PolarDistortion)
1258
+ ENUMERATOR(DePolarDistortion)
1259
+ ENUMERATOR(BarrelDistortion)
1260
+ ENUMERATOR(BilinearDistortion)
1261
+ ENUMERATOR(BilinearForwardDistortion)
1262
+ ENUMERATOR(BilinearReverseDistortion)
1263
+ ENUMERATOR(PerspectiveDistortion)
1264
+ ENUMERATOR(PerspectiveProjectionDistortion)
1265
+ ENUMERATOR(PolynomialDistortion)
1266
+ ENUMERATOR(ScaleRotateTranslateDistortion)
1267
+ ENUMERATOR(ShepardsDistortion)
1268
+ ENUMERATOR(BarrelInverseDistortion)
1269
+ ENUMERATOR(Cylinder2PlaneDistortion)
1270
+ ENUMERATOR(Plane2CylinderDistortion)
1271
+ ENUMERATOR(ResizeDistortion)
1272
+ ENUMERATOR(SentinelDistortion)
1273
+ END_ENUM
1274
+
1275
+ DEF_ENUM(DitherMethod)
1276
+ ENUMERATOR(UndefinedDitherMethod)
1277
+ ENUMERATOR(NoDitherMethod)
1278
+ ENUMERATOR(RiemersmaDitherMethod)
1279
+ ENUMERATOR(FloydSteinbergDitherMethod)
1280
+ END_ENUM
1281
+
1282
+ DEF_ENUM(EndianType)
1283
+ ENUMERATOR(UndefinedEndian)
1284
+ ENUMERATOR(LSBEndian)
1285
+ ENUMERATOR(MSBEndian)
1286
+ END_ENUM
1287
+
1288
+ // FilterType constants
1289
+ DEF_ENUM(FilterType)
1290
+ ENUMERATOR(UndefinedFilter)
1291
+ ENUMERATOR(PointFilter)
1292
+ ENUMERATOR(BoxFilter)
1293
+ ENUMERATOR(TriangleFilter)
1294
+ ENUMERATOR(HermiteFilter)
1295
+ ENUMERATOR(HanningFilter)
1296
+ ENUMERATOR(HammingFilter)
1297
+ ENUMERATOR(BlackmanFilter)
1298
+ ENUMERATOR(GaussianFilter)
1299
+ ENUMERATOR(QuadraticFilter)
1300
+ ENUMERATOR(CubicFilter)
1301
+ ENUMERATOR(CatromFilter)
1302
+ ENUMERATOR(MitchellFilter)
1303
+ ENUMERATOR(LanczosFilter)
1304
+ ENUMERATOR(BesselFilter)
1305
+ ENUMERATOR(SincFilter)
1306
+ ENUMERATOR(KaiserFilter)
1307
+ ENUMERATOR(WelshFilter)
1308
+ ENUMERATOR(ParzenFilter)
1309
+ ENUMERATOR(LagrangeFilter)
1310
+ ENUMERATOR(BohmanFilter)
1311
+ ENUMERATOR(BartlettFilter)
1312
+ ENUMERATOR(JincFilter)
1313
+ ENUMERATOR(SincFastFilter)
1314
+ ENUMERATOR(LanczosSharpFilter)
1315
+ ENUMERATOR(Lanczos2Filter)
1316
+ ENUMERATOR(Lanczos2SharpFilter)
1317
+ ENUMERATOR(RobidouxFilter)
1318
+ ENUMERATOR(RobidouxSharpFilter)
1319
+ ENUMERATOR(CosineFilter)
1320
+ ENUMERATOR(SplineFilter)
1321
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1322
+ ENUMERATOR(LanczosRadiusFilter)
1323
+ #endif
1324
+ ENUMERATORV(WelchFilter, WelshFilter)
1325
+ ENUMERATORV(HannFilter, HanningFilter)
1326
+ END_ENUM
1327
+
1328
+ // GravityType constants
1329
+ DEF_ENUM(GravityType)
1330
+ ENUMERATOR(UndefinedGravity)
1331
+ ENUMERATOR(ForgetGravity)
1332
+ ENUMERATOR(NorthWestGravity)
1333
+ ENUMERATOR(NorthGravity)
1334
+ ENUMERATOR(NorthEastGravity)
1335
+ ENUMERATOR(WestGravity)
1336
+ ENUMERATOR(CenterGravity)
1337
+ ENUMERATOR(EastGravity)
1338
+ ENUMERATOR(SouthWestGravity)
1339
+ ENUMERATOR(SouthGravity)
1340
+ ENUMERATOR(SouthEastGravity)
1341
+ END_ENUM
1342
+
1343
+ // ImageType constants
1344
+ DEF_ENUM(ImageType)
1345
+ ENUMERATOR(UndefinedType)
1346
+ ENUMERATOR(BilevelType)
1347
+ ENUMERATOR(GrayscaleType)
1348
+ ENUMERATOR(PaletteType)
1349
+ ENUMERATOR(TrueColorType)
1350
+ ENUMERATOR(ColorSeparationType)
1351
+ ENUMERATOR(OptimizeType)
1352
+ #if defined(IMAGEMAGICK_7)
1353
+ ENUMERATOR(GrayscaleAlphaType)
1354
+ ENUMERATOR(PaletteAlphaType)
1355
+ ENUMERATOR(TrueColorAlphaType)
1356
+ ENUMERATOR(ColorSeparationAlphaType)
1357
+ ENUMERATOR(PaletteBilevelAlphaType)
1358
+ #else
1359
+ ENUMERATORV(GrayscaleAlphaType, GrayscaleMatteType)
1360
+ ENUMERATORV(PaletteAlphaType, PaletteMatteType)
1361
+ ENUMERATORV(TrueColorAlphaType, TrueColorMatteType)
1362
+ ENUMERATORV(ColorSeparationAlphaType, ColorSeparationMatteType)
1363
+ ENUMERATORV(PaletteBilevelAlphaType, PaletteBilevelMatteType)
1364
+ #endif
1365
+ END_ENUM
1366
+
1367
+ // InterlaceType constants
1368
+ DEF_ENUM(InterlaceType)
1369
+ ENUMERATOR(UndefinedInterlace)
1370
+ ENUMERATOR(NoInterlace)
1371
+ ENUMERATOR(LineInterlace)
1372
+ ENUMERATOR(PlaneInterlace)
1373
+ ENUMERATOR(PartitionInterlace)
1374
+ ENUMERATOR(GIFInterlace)
1375
+ ENUMERATOR(JPEGInterlace)
1376
+ ENUMERATOR(PNGInterlace)
1377
+ END_ENUM
1378
+
1379
+ DEF_ENUM(MagickFunction)
1380
+ ENUMERATOR(UndefinedFunction)
1381
+ ENUMERATOR(PolynomialFunction)
1382
+ ENUMERATOR(SinusoidFunction)
1383
+ ENUMERATOR(ArcsinFunction)
1384
+ ENUMERATOR(ArctanFunction)
1385
+ END_ENUM
1386
+
1387
+ DEF_ENUM(LayerMethod)
1388
+ ENUMERATOR(UndefinedLayer)
1389
+ ENUMERATOR(CompareAnyLayer)
1390
+ ENUMERATOR(CompareClearLayer)
1391
+ ENUMERATOR(CompareOverlayLayer)
1392
+ ENUMERATOR(OptimizeLayer)
1393
+ ENUMERATOR(OptimizePlusLayer)
1394
+ ENUMERATOR(CoalesceLayer)
1395
+ ENUMERATOR(DisposeLayer)
1396
+ ENUMERATOR(OptimizeTransLayer)
1397
+ ENUMERATOR(OptimizeImageLayer)
1398
+ ENUMERATOR(RemoveDupsLayer)
1399
+ ENUMERATOR(RemoveZeroLayer)
1400
+ ENUMERATOR(CompositeLayer)
1401
+ ENUMERATOR(MergeLayer)
1402
+ ENUMERATOR(MosaicLayer)
1403
+ ENUMERATOR(FlattenLayer)
1404
+ ENUMERATOR(TrimBoundsLayer)
1405
+ END_ENUM
1406
+
1407
+ DEF_ENUM(MetricType)
1408
+ ENUMERATOR(AbsoluteErrorMetric)
1409
+ ENUMERATOR(MeanAbsoluteErrorMetric)
1410
+ ENUMERATOR(MeanSquaredErrorMetric)
1411
+ ENUMERATOR(PeakAbsoluteErrorMetric)
1412
+ ENUMERATOR(RootMeanSquaredErrorMetric)
1413
+ ENUMERATOR(NormalizedCrossCorrelationErrorMetric)
1414
+ ENUMERATOR(FuzzErrorMetric)
1415
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1416
+ ENUMERATOR(PerceptualHashErrorMetric)
1417
+ #endif
1418
+ #if defined(IMAGEMAGICK_7)
1419
+ ENUMERATOR(UndefinedErrorMetric)
1420
+ ENUMERATOR(MeanErrorPerPixelErrorMetric)
1421
+ ENUMERATOR(PeakSignalToNoiseRatioErrorMetric)
1422
+ #else
1423
+ ENUMERATORV(UndefinedErrorMetric, UndefinedMetric)
1424
+ ENUMERATORV(MeanErrorPerPixelErrorMetric, MeanErrorPerPixelMetric)
1425
+ ENUMERATORV(PeakSignalToNoiseRatioErrorMetric, PeakSignalToNoiseRatioMetric)
1426
+ #endif
1427
+ END_ENUM
1428
+
1429
+ // NoiseType constants
1430
+ DEF_ENUM(NoiseType)
1431
+ ENUMERATOR(UniformNoise)
1432
+ ENUMERATOR(GaussianNoise)
1433
+ ENUMERATOR(MultiplicativeGaussianNoise)
1434
+ ENUMERATOR(ImpulseNoise)
1435
+ ENUMERATOR(LaplacianNoise)
1436
+ ENUMERATOR(PoissonNoise)
1437
+ ENUMERATOR(RandomNoise)
1438
+ END_ENUM
1439
+
1440
+ // Orientation constants
1441
+ DEF_ENUM(OrientationType)
1442
+ ENUMERATOR(UndefinedOrientation)
1443
+ ENUMERATOR(TopLeftOrientation)
1444
+ ENUMERATOR(TopRightOrientation)
1445
+ ENUMERATOR(BottomRightOrientation)
1446
+ ENUMERATOR(BottomLeftOrientation)
1447
+ ENUMERATOR(LeftTopOrientation)
1448
+ ENUMERATOR(RightTopOrientation)
1449
+ ENUMERATOR(RightBottomOrientation)
1450
+ ENUMERATOR(LeftBottomOrientation)
1451
+ END_ENUM
1452
+
1453
+ // Paint method constants
1454
+ DEF_ENUM(PaintMethod)
1455
+ ENUMERATOR(PointMethod)
1456
+ ENUMERATOR(ReplaceMethod)
1457
+ ENUMERATOR(FloodfillMethod)
1458
+ ENUMERATOR(FillToBorderMethod)
1459
+ ENUMERATOR(ResetMethod)
1460
+ END_ENUM
1461
+
1462
+ // PixelInterpolateMethod constants
1463
+ DEF_ENUM(PixelInterpolateMethod)
1464
+ ENUMERATOR(UndefinedInterpolatePixel)
1465
+ ENUMERATOR(AverageInterpolatePixel)
1466
+ ENUMERATOR(BilinearInterpolatePixel)
1467
+ ENUMERATOR(IntegerInterpolatePixel)
1468
+ ENUMERATOR(MeshInterpolatePixel)
1469
+ #if defined(IMAGEMAGICK_7)
1470
+ ENUMERATOR(NearestInterpolatePixel)
1471
+ #else
1472
+ ENUMERATORV(NearestInterpolatePixel, NearestNeighborInterpolatePixel)
1473
+ #endif
1474
+ ENUMERATOR(SplineInterpolatePixel)
1475
+ ENUMERATOR(Average9InterpolatePixel)
1476
+ ENUMERATOR(Average16InterpolatePixel)
1477
+ ENUMERATOR(BlendInterpolatePixel)
1478
+ ENUMERATOR(BackgroundInterpolatePixel)
1479
+ ENUMERATOR(CatromInterpolatePixel)
1480
+ END_ENUM
1481
+
1482
+ // PreviewType
1483
+ DEF_ENUM(PreviewType)
1484
+ ENUMERATOR(UndefinedPreview)
1485
+ ENUMERATOR(RotatePreview)
1486
+ ENUMERATOR(ShearPreview)
1487
+ ENUMERATOR(RollPreview)
1488
+ ENUMERATOR(HuePreview)
1489
+ ENUMERATOR(SaturationPreview)
1490
+ ENUMERATOR(BrightnessPreview)
1491
+ ENUMERATOR(GammaPreview)
1492
+ ENUMERATOR(SpiffPreview)
1493
+ ENUMERATOR(DullPreview)
1494
+ ENUMERATOR(GrayscalePreview)
1495
+ ENUMERATOR(QuantizePreview)
1496
+ ENUMERATOR(DespecklePreview)
1497
+ ENUMERATOR(ReduceNoisePreview)
1498
+ ENUMERATOR(AddNoisePreview)
1499
+ ENUMERATOR(SharpenPreview)
1500
+ ENUMERATOR(BlurPreview)
1501
+ ENUMERATOR(ThresholdPreview)
1502
+ ENUMERATOR(EdgeDetectPreview)
1503
+ ENUMERATOR(SpreadPreview)
1504
+ ENUMERATOR(SolarizePreview)
1505
+ ENUMERATOR(ShadePreview)
1506
+ ENUMERATOR(RaisePreview)
1507
+ ENUMERATOR(SegmentPreview)
1508
+ ENUMERATOR(SwirlPreview)
1509
+ ENUMERATOR(ImplodePreview)
1510
+ ENUMERATOR(WavePreview)
1511
+ ENUMERATOR(OilPaintPreview)
1512
+ ENUMERATOR(CharcoalDrawingPreview)
1513
+ ENUMERATOR(JPEGPreview)
1514
+ END_ENUM
1515
+
1516
+ DEF_ENUM(QuantumExpressionOperator)
1517
+ ENUMERATOR(UndefinedQuantumOperator)
1518
+ ENUMERATOR(AddQuantumOperator)
1519
+ ENUMERATOR(AndQuantumOperator)
1520
+ ENUMERATOR(DivideQuantumOperator)
1521
+ ENUMERATOR(LShiftQuantumOperator)
1522
+ ENUMERATOR(MaxQuantumOperator)
1523
+ ENUMERATOR(MinQuantumOperator)
1524
+ ENUMERATOR(MultiplyQuantumOperator)
1525
+ ENUMERATOR(OrQuantumOperator)
1526
+ ENUMERATOR(RShiftQuantumOperator)
1527
+ ENUMERATOR(SubtractQuantumOperator)
1528
+ ENUMERATOR(XorQuantumOperator)
1529
+ ENUMERATOR(PowQuantumOperator)
1530
+ ENUMERATOR(LogQuantumOperator)
1531
+ ENUMERATOR(ThresholdQuantumOperator)
1532
+ ENUMERATOR(ThresholdBlackQuantumOperator)
1533
+ ENUMERATOR(ThresholdWhiteQuantumOperator)
1534
+ ENUMERATOR(GaussianNoiseQuantumOperator)
1535
+ ENUMERATOR(ImpulseNoiseQuantumOperator)
1536
+ ENUMERATOR(LaplacianNoiseQuantumOperator)
1537
+ ENUMERATOR(MultiplicativeNoiseQuantumOperator)
1538
+ ENUMERATOR(PoissonNoiseQuantumOperator)
1539
+ ENUMERATOR(UniformNoiseQuantumOperator)
1540
+ ENUMERATOR(CosineQuantumOperator)
1541
+ ENUMERATOR(SetQuantumOperator)
1542
+ ENUMERATOR(SineQuantumOperator)
1543
+ ENUMERATOR(AddModulusQuantumOperator)
1544
+ ENUMERATOR(MeanQuantumOperator)
1545
+ ENUMERATOR(AbsQuantumOperator)
1546
+ ENUMERATOR(ExponentialQuantumOperator)
1547
+ ENUMERATOR(MedianQuantumOperator)
1548
+ ENUMERATOR(SumQuantumOperator)
1549
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1550
+ ENUMERATOR(RootMeanSquareQuantumOperator)
1551
+ #endif
1552
+ END_ENUM
1553
+
1554
+ // RenderingIntent
1555
+ DEF_ENUM(RenderingIntent)
1556
+ ENUMERATOR(UndefinedIntent)
1557
+ ENUMERATOR(SaturationIntent)
1558
+ ENUMERATOR(PerceptualIntent)
1559
+ ENUMERATOR(AbsoluteIntent)
1560
+ ENUMERATOR(RelativeIntent)
1561
+ END_ENUM
1562
+
1563
+ // ResolutionType constants
1564
+ DEF_ENUM(ResolutionType)
1565
+ ENUMERATOR(UndefinedResolution)
1566
+ ENUMERATOR(PixelsPerInchResolution)
1567
+ ENUMERATOR(PixelsPerCentimeterResolution)
1568
+ END_ENUM
1569
+
1570
+ DEF_ENUM(SparseColorMethod)
1571
+ ENUMERATOR(UndefinedColorInterpolate)
1572
+ ENUMERATOR(BarycentricColorInterpolate)
1573
+ ENUMERATOR(BilinearColorInterpolate)
1574
+ //ENUMERATOR(PolynomialColorInterpolate)
1575
+ ENUMERATOR(ShepardsColorInterpolate)
1576
+ ENUMERATOR(VoronoiColorInterpolate)
1577
+ ENUMERATOR(InverseColorInterpolate)
1578
+ END_ENUM
1579
+
1580
+ // SpreadMethod
1581
+ DEF_ENUM(SpreadMethod)
1582
+ ENUMERATOR(UndefinedSpread)
1583
+ ENUMERATOR(PadSpread)
1584
+ ENUMERATOR(ReflectSpread)
1585
+ ENUMERATOR(RepeatSpread)
1586
+ END_ENUM
1587
+
1588
+ // StorageType
1589
+ DEF_ENUM(StorageType)
1590
+ ENUMERATOR(UndefinedPixel)
1591
+ ENUMERATOR(CharPixel)
1592
+ ENUMERATOR(DoublePixel)
1593
+ ENUMERATOR(FloatPixel)
1594
+ ENUMERATOR(LongPixel)
1595
+ ENUMERATOR(QuantumPixel)
1596
+ ENUMERATOR(ShortPixel)
1597
+ END_ENUM
1598
+
1599
+ // StretchType constants
1600
+ DEF_ENUM(StretchType)
1601
+ ENUMERATOR(NormalStretch)
1602
+ ENUMERATOR(UltraCondensedStretch)
1603
+ ENUMERATOR(ExtraCondensedStretch)
1604
+ ENUMERATOR(CondensedStretch)
1605
+ ENUMERATOR(SemiCondensedStretch)
1606
+ ENUMERATOR(SemiExpandedStretch)
1607
+ ENUMERATOR(ExpandedStretch)
1608
+ ENUMERATOR(ExtraExpandedStretch)
1609
+ ENUMERATOR(UltraExpandedStretch)
1610
+ ENUMERATOR(AnyStretch)
1611
+ END_ENUM
1612
+
1613
+ // StyleType constants
1614
+ DEF_ENUM(StyleType)
1615
+ ENUMERATOR(NormalStyle)
1616
+ ENUMERATOR(ItalicStyle)
1617
+ ENUMERATOR(ObliqueStyle)
1618
+ ENUMERATOR(AnyStyle)
1619
+ END_ENUM
1620
+
1621
+ // VirtualPixelMethod
1622
+ DEF_ENUM(VirtualPixelMethod)
1623
+ ENUMERATOR(UndefinedVirtualPixelMethod)
1624
+ ENUMERATOR(EdgeVirtualPixelMethod)
1625
+ ENUMERATOR(MirrorVirtualPixelMethod)
1626
+ ENUMERATOR(TileVirtualPixelMethod)
1627
+ ENUMERATOR(TransparentVirtualPixelMethod)
1628
+ ENUMERATOR(BackgroundVirtualPixelMethod)
1629
+ ENUMERATOR(DitherVirtualPixelMethod)
1630
+ ENUMERATOR(RandomVirtualPixelMethod)
1631
+ ENUMERATOR(MaskVirtualPixelMethod)
1632
+ ENUMERATOR(BlackVirtualPixelMethod)
1633
+ ENUMERATOR(GrayVirtualPixelMethod)
1634
+ ENUMERATOR(WhiteVirtualPixelMethod)
1635
+ ENUMERATOR(HorizontalTileVirtualPixelMethod)
1636
+ ENUMERATOR(VerticalTileVirtualPixelMethod)
1637
+ ENUMERATOR(HorizontalTileEdgeVirtualPixelMethod)
1638
+ ENUMERATOR(VerticalTileEdgeVirtualPixelMethod)
1639
+ ENUMERATOR(CheckerTileVirtualPixelMethod)
1640
+ END_ENUM
1641
+ // WeightType constants
1642
+ DEF_ENUM(WeightType)
1643
+ ENUMERATOR(AnyWeight)
1644
+ ENUMERATOR(NormalWeight)
1645
+ ENUMERATOR(BoldWeight)
1646
+ ENUMERATOR(BolderWeight)
1647
+ ENUMERATOR(LighterWeight)
1648
+ END_ENUM
1649
+
1650
+ // For KernelInfo scaling
1651
+ DEF_ENUM(GeometryFlags)
1652
+ ENUMERATOR(NoValue)
1653
+ ENUMERATOR(XValue)
1654
+ ENUMERATOR(XiValue)
1655
+ ENUMERATOR(YValue)
1656
+ ENUMERATOR(PsiValue)
1657
+ ENUMERATOR(WidthValue)
1658
+ ENUMERATOR(RhoValue)
1659
+ ENUMERATOR(HeightValue)
1660
+ ENUMERATOR(SigmaValue)
1661
+ ENUMERATOR(ChiValue)
1662
+ ENUMERATOR(XiNegative)
1663
+ ENUMERATOR(XNegative)
1664
+ ENUMERATOR(PsiNegative)
1665
+ ENUMERATOR(YNegative)
1666
+ ENUMERATOR(ChiNegative)
1667
+ ENUMERATOR(PercentValue)
1668
+ ENUMERATOR(AspectValue)
1669
+ ENUMERATOR(NormalizeValue)
1670
+ ENUMERATOR(LessValue)
1671
+ ENUMERATOR(GreaterValue)
1672
+ ENUMERATOR(MinimumValue)
1673
+ ENUMERATOR(CorrelateNormalizeValue)
1674
+ ENUMERATOR(AreaValue)
1675
+ ENUMERATOR(DecimalValue)
1676
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1677
+ ENUMERATOR(SeparatorValue)
1678
+ #endif
1679
+ ENUMERATOR(AllValues)
1680
+ END_ENUM
1681
+
1682
+ // Morphology methods
1683
+ DEF_ENUM(MorphologyMethod)
1684
+ ENUMERATOR(UndefinedMorphology)
1685
+ ENUMERATOR(ConvolveMorphology)
1686
+ ENUMERATOR(CorrelateMorphology)
1687
+ ENUMERATOR(ErodeMorphology)
1688
+ ENUMERATOR(DilateMorphology)
1689
+ ENUMERATOR(ErodeIntensityMorphology)
1690
+ ENUMERATOR(DilateIntensityMorphology)
1691
+ ENUMERATOR(DistanceMorphology)
1692
+ ENUMERATOR(OpenMorphology)
1693
+ ENUMERATOR(CloseMorphology)
1694
+ ENUMERATOR(OpenIntensityMorphology)
1695
+ ENUMERATOR(CloseIntensityMorphology)
1696
+ ENUMERATOR(SmoothMorphology)
1697
+ ENUMERATOR(EdgeInMorphology)
1698
+ ENUMERATOR(EdgeOutMorphology)
1699
+ ENUMERATOR(EdgeMorphology)
1700
+ ENUMERATOR(TopHatMorphology)
1701
+ ENUMERATOR(BottomHatMorphology)
1702
+ ENUMERATOR(HitAndMissMorphology)
1703
+ ENUMERATOR(ThinningMorphology)
1704
+ ENUMERATOR(ThickenMorphology)
1705
+ ENUMERATOR(VoronoiMorphology)
1706
+ ENUMERATOR(IterativeDistanceMorphology)
1707
+ END_ENUM
1708
+
1709
+ DEF_ENUM(KernelInfoType)
1710
+ ENUMERATOR(UndefinedKernel)
1711
+ ENUMERATOR(UnityKernel)
1712
+ ENUMERATOR(GaussianKernel)
1713
+ ENUMERATOR(DoGKernel)
1714
+ ENUMERATOR(LoGKernel)
1715
+ ENUMERATOR(BlurKernel)
1716
+ ENUMERATOR(CometKernel)
1717
+ ENUMERATOR(LaplacianKernel)
1718
+ ENUMERATOR(SobelKernel)
1719
+ ENUMERATOR(FreiChenKernel)
1720
+ ENUMERATOR(RobertsKernel)
1721
+ ENUMERATOR(PrewittKernel)
1722
+ ENUMERATOR(CompassKernel)
1723
+ ENUMERATOR(KirschKernel)
1724
+ ENUMERATOR(DiamondKernel)
1725
+ ENUMERATOR(SquareKernel)
1726
+ ENUMERATOR(RectangleKernel)
1727
+ ENUMERATOR(OctagonKernel)
1728
+ ENUMERATOR(DiskKernel)
1729
+ ENUMERATOR(PlusKernel)
1730
+ ENUMERATOR(CrossKernel)
1731
+ ENUMERATOR(RingKernel)
1732
+ ENUMERATOR(PeaksKernel)
1733
+ ENUMERATOR(EdgesKernel)
1734
+ ENUMERATOR(CornersKernel)
1735
+ ENUMERATOR(DiagonalsKernel)
1736
+ ENUMERATOR(LineEndsKernel)
1737
+ ENUMERATOR(LineJunctionsKernel)
1738
+ ENUMERATOR(RidgesKernel)
1739
+ ENUMERATOR(ConvexHullKernel)
1740
+ ENUMERATOR(ThinSEKernel)
1741
+ ENUMERATOR(SkeletonKernel)
1742
+ ENUMERATOR(ChebyshevKernel)
1743
+ ENUMERATOR(ManhattanKernel)
1744
+ ENUMERATOR(OctagonalKernel)
1745
+ ENUMERATOR(EuclideanKernel)
1746
+ ENUMERATOR(UserDefinedKernel)
1747
+ #if defined(IMAGEMAGICK_GREATER_THAN_EQUAL_6_8_9)
1748
+ ENUMERATOR(BinomialKernel)
1749
+ #endif
1750
+ END_ENUM
1751
+
1752
+ /*-----------------------------------------------------------------------*/
1753
+ /* Struct classes */
1754
+ /*-----------------------------------------------------------------------*/
1755
+
1756
+ // Pass NULL as the structure name to keep them from polluting the Struct
1757
+ // namespace. The only way to use these classes is via the Magick:: namespace.
1758
+
1759
+ // Magick::AffineMatrix
1760
+ Class_AffineMatrix = rb_struct_define_under(Module_Magick, "AffineMatrix",
1761
+ "sx", "rx", "ry", "sy", "tx", "ty", NULL);
1762
+
1763
+ // Magick::Primary
1764
+ Class_Primary = rb_struct_define_under(Module_Magick, "Primary",
1765
+ "x", "y", "z", NULL);
1766
+ rb_define_method(Class_Primary, "to_s", RUBY_METHOD_FUNC(PrimaryInfo_to_s), 0);
1767
+
1768
+ // Magick::Chromaticity
1769
+ Class_Chromaticity = rb_struct_define_under(Module_Magick, "Chromaticity",
1770
+ "red_primary", "green_primary",
1771
+ "blue_primary", "white_point", NULL);
1772
+ rb_define_method(Class_Chromaticity, "to_s", RUBY_METHOD_FUNC(ChromaticityInfo_to_s), 0);
1773
+
1774
+ // Magick::Color
1775
+ Class_Color = rb_struct_define_under(Module_Magick, "Color",
1776
+ "name", "compliance", "color", NULL);
1777
+ rb_define_method(Class_Color, "to_s", RUBY_METHOD_FUNC(Color_to_s), 0);
1778
+
1779
+ // Magick::Point
1780
+ Class_Point = rb_struct_define_under(Module_Magick, "Point",
1781
+ "x", "y", NULL);
1782
+
1783
+ // Magick::Rectangle
1784
+ Class_Rectangle = rb_struct_define_under(Module_Magick, "Rectangle",
1785
+ "width", "height", "x", "y", NULL);
1786
+ rb_define_method(Class_Rectangle, "to_s", RUBY_METHOD_FUNC(RectangleInfo_to_s), 0);
1787
+
1788
+ // Magick::Segment
1789
+ Class_Segment = rb_struct_define_under(Module_Magick, "Segment",
1790
+ "x1", "y1", "x2", "y2", NULL);
1791
+ rb_define_method(Class_Segment, "to_s", RUBY_METHOD_FUNC(SegmentInfo_to_s), 0);
1792
+
1793
+ // Magick::Font
1794
+ Class_Font = rb_struct_define_under(Module_Magick, "Font",
1795
+ "name", "description",
1796
+ "family", "style", "stretch", "weight",
1797
+ "encoding", "foundry", "format", NULL);
1798
+ rb_define_method(Class_Font, "to_s", RUBY_METHOD_FUNC(Font_to_s), 0);
1799
+
1800
+ // Magick::TypeMetric
1801
+ Class_TypeMetric = rb_struct_define_under(Module_Magick, "TypeMetric",
1802
+ "pixels_per_em", "ascent", "descent",
1803
+ "width", "height", "max_advance", "bounds",
1804
+ "underline_position", "underline_thickness", NULL);
1805
+ rb_define_method(Class_TypeMetric, "to_s", RUBY_METHOD_FUNC(TypeMetric_to_s), 0);
1806
+
1807
+
1808
+ /*-----------------------------------------------------------------------*/
1809
+ /* Error handlers */
1810
+ /*-----------------------------------------------------------------------*/
1811
+
1812
+ SetFatalErrorHandler(rm_fatal_error_handler);
1813
+ SetErrorHandler(rm_error_handler);
1814
+ SetWarningHandler(rm_warning_handler);
1815
+ }
1816
+
1817
+
1818
+
1819
+
1820
+ /**
1821
+ * Ensure the version of ImageMagick we're running with matches the version we
1822
+ * were compiled with.
1823
+ *
1824
+ * No Ruby usage (internal function)
1825
+ *
1826
+ * Notes:
1827
+ * - Bypass the test by defining the constant RMAGICK_BYPASS_VERSION_TEST to
1828
+ * 'true' at the top level, before requiring 'rmagick'
1829
+ */
1830
+ static void
1831
+ test_Magick_version(void)
1832
+ {
1833
+ size_t version_number;
1834
+ const char *version_str;
1835
+ ID bypass = rb_intern("RMAGICK_BYPASS_VERSION_TEST");
1836
+
1837
+ if (RTEST(rb_const_defined(rb_cObject, bypass)) && RTEST(rb_const_get(rb_cObject, bypass)))
1838
+ {
1839
+ return;
1840
+ }
1841
+
1842
+ version_str = GetMagickVersion(&version_number);
1843
+ if (version_number != MagickLibVersion)
1844
+ {
1845
+ int n, x;
1846
+
1847
+ // Extract the string "ImageMagick X.Y.Z"
1848
+ n = 0;
1849
+ for (x = 0; version_str[x] != '\0'; x++)
1850
+ {
1851
+ if (version_str[x] == ' ' && ++n == 2)
1852
+ {
1853
+ break;
1854
+ }
1855
+ }
1856
+
1857
+ rb_raise(rb_eRuntimeError,
1858
+ "This installation of RMagick was configured with %s %s but %.*s is in use.\n"
1859
+ "Please re-install RMagick to correct the issue.\n",
1860
+ MagickPackageName, MagickLibVersionText, x, version_str);
1861
+ }
1862
+
1863
+ }
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+ /**
1870
+ * Create Version, Magick_version, and Version_long constants.
1871
+ *
1872
+ * No Ruby usage (internal function)
1873
+ */
1874
+ static void
1875
+ version_constants(void)
1876
+ {
1877
+ const char *mgk_version;
1878
+ VALUE str;
1879
+ char long_version[1000];
1880
+
1881
+ mgk_version = GetMagickVersion(NULL);
1882
+
1883
+ str = rb_str_new2(mgk_version);
1884
+ rb_obj_freeze(str);
1885
+ rb_define_const(Module_Magick, "Magick_version", str);
1886
+
1887
+ str = rb_str_new2(Q(RMAGICK_VERSION_STRING));
1888
+ rb_obj_freeze(str);
1889
+ rb_define_const(Module_Magick, "Version", str);
1890
+
1891
+ snprintf(long_version, sizeof(long_version),
1892
+ "This is %s ($Date: 2009/12/20 02:33:33 $) Copyright (C) 2009 by Timothy P. Hunter\n"
1893
+ "Built with %s\n"
1894
+ "Built for %s\n"
1895
+ "Web page: https://rmagick.github.io/\n",
1896
+ Q(RMAGICK_VERSION_STRING), mgk_version, Q(RUBY_VERSION_STRING));
1897
+
1898
+ str = rb_str_new2(long_version);
1899
+ rb_obj_freeze(str);
1900
+ rb_define_const(Module_Magick, "Long_version", str);
1901
+
1902
+ RB_GC_GUARD(str);
1903
+ }
1904
+
1905
+
1906
+ /**
1907
+ * Create Features constant.
1908
+ *
1909
+ * No Ruby usage (internal function)
1910
+ */
1911
+ static void
1912
+ features_constant(void)
1913
+ {
1914
+ VALUE features;
1915
+
1916
+ // 6.5.7 - latest (7.0.0)
1917
+ features = rb_str_new2(GetMagickFeatures());
1918
+
1919
+ rb_obj_freeze(features);
1920
+ rb_define_const(Module_Magick, "Magick_features", features);
1921
+
1922
+ RB_GC_GUARD(features);
1923
+ }