ruby-iup 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. data/CHANGES +3 -0
  2. data/MANIFEST +8 -0
  3. data/MIT-LICENSE +18 -0
  4. data/README +12 -0
  5. data/Rakefile +68 -80
  6. data/doc/build_install.txt +9 -12
  7. data/examples/ctrl/cbox.rb +14 -15
  8. data/examples/ctrl/checkboard.rb +1 -1
  9. data/examples/ctrl/example1.rb +53 -53
  10. data/examples/ctrl/example2.rb +39 -39
  11. data/examples/ctrl/iupcolorbar.rb +95 -95
  12. data/examples/ctrl/iupcolorbrowser.rb +45 -45
  13. data/examples/ctrl/iupdial.rb +117 -117
  14. data/examples/ctrl/iupgetcolor.rb +7 -7
  15. data/examples/ctrl/iupgetparam.rb +62 -62
  16. data/examples/ctrl/iupglcanvas.rb +172 -172
  17. data/examples/ctrl/iupmask.rb +1 -3
  18. data/examples/ctrl/iupmatrix.rb +39 -39
  19. data/examples/ctrl/iupplot2.rb +2 -1
  20. data/examples/ctrl/iuptabs.rb +22 -22
  21. data/examples/ctrl/iuptree.rb +190 -190
  22. data/examples/ctrl/iupval.rb +71 -71
  23. data/examples/ctrl/numbering.rb +46 -46
  24. data/examples/ctrl/sample.rb +166 -166
  25. data/examples/dlg/iupfiledlg.rb +19 -19
  26. data/examples/dlg/iupgetfile.rb +19 -19
  27. data/examples/dlg/iuplistdialog.rb +26 -26
  28. data/examples/dlg/iupmessage.rb +5 -5
  29. data/examples/dlg/iupscanf.rb +17 -17
  30. data/examples/elem/iupdialog2.rb +25 -25
  31. data/examples/elem/iupfill.rb +51 -51
  32. data/examples/elem/iupframe.rb +25 -25
  33. data/examples/elem/iuphbox.rb +68 -68
  34. data/examples/elem/iupimage.rb +113 -113
  35. data/examples/elem/iupitem.rb +60 -60
  36. data/examples/elem/iuplabel.rb +57 -57
  37. data/examples/elem/iuplist.rb +41 -41
  38. data/examples/elem/iuplist2.rb +125 -125
  39. data/examples/elem/iupmenu.rb +32 -32
  40. data/examples/elem/iupmultiline.rb +24 -24
  41. data/examples/elem/iupmultiline2.rb +156 -156
  42. data/examples/elem/iupradio.rb +32 -32
  43. data/examples/elem/iupseparator.rb +81 -81
  44. data/examples/elem/iupsubmenu.rb +85 -85
  45. data/examples/elem/iuptext.rb +61 -61
  46. data/examples/elem/iuptimer.rb +36 -36
  47. data/examples/elem/iuptoggle.rb +110 -110
  48. data/examples/elem/iupvbox.rb +87 -87
  49. data/examples/elem/iupzbox.rb +60 -60
  50. data/examples/elem/mdisample.rb +377 -376
  51. data/examples/elem/scrollbar.rb +66 -66
  52. data/examples/elem/tray.rb +90 -90
  53. data/examples/func/iupgetattribute.rb +32 -32
  54. data/examples/func/iupidle.rb +48 -48
  55. data/ext/extconf.rb +62 -27
  56. data/ext/iup-linux/include/cd.h +9 -5
  57. data/ext/iup-linux/include/cd_private.h +13 -6
  58. data/ext/iup-linux/include/cdsvg.h +22 -0
  59. data/ext/iup-linux/include/im.h +287 -282
  60. data/ext/iup-linux/include/im_attrib.h +120 -116
  61. data/ext/iup-linux/include/im_attrib_flat.h +39 -39
  62. data/ext/iup-linux/include/im_binfile.h +224 -214
  63. data/ext/iup-linux/include/im_capture.h +365 -365
  64. data/ext/iup-linux/include/im_color.h +465 -465
  65. data/ext/iup-linux/include/im_colorhsi.h +56 -61
  66. data/ext/iup-linux/include/im_complex.h +180 -160
  67. data/ext/iup-linux/include/im_convert.h +142 -127
  68. data/ext/iup-linux/include/im_counter.h +69 -69
  69. data/ext/iup-linux/include/im_dib.h +195 -195
  70. data/ext/iup-linux/include/im_file.h +115 -111
  71. data/ext/iup-linux/include/im_format.h +97 -79
  72. data/ext/iup-linux/include/im_format_all.h +575 -576
  73. data/ext/iup-linux/include/im_format_avi.h +88 -87
  74. data/ext/iup-linux/include/im_format_ecw.h +93 -93
  75. data/ext/iup-linux/include/im_format_jp2.h +79 -78
  76. data/ext/iup-linux/include/im_format_raw.h +74 -64
  77. data/ext/iup-linux/include/im_format_wmv.h +101 -100
  78. data/ext/iup-linux/include/im_image.h +425 -403
  79. data/ext/iup-linux/include/im_kernel.h +315 -315
  80. data/ext/iup-linux/include/im_lib.h +191 -191
  81. data/ext/iup-linux/include/im_math.h +368 -368
  82. data/ext/iup-linux/include/im_math_op.h +214 -219
  83. data/ext/iup-linux/include/im_palette.h +172 -172
  84. data/ext/iup-linux/include/im_plus.h +73 -73
  85. data/ext/iup-linux/include/im_process.h +36 -35
  86. data/ext/iup-linux/include/im_process_ana.h +222 -221
  87. data/ext/iup-linux/include/im_process_glo.h +170 -170
  88. data/ext/iup-linux/include/im_process_loc.h +608 -577
  89. data/ext/iup-linux/include/im_process_pon.h +734 -712
  90. data/ext/iup-linux/include/im_raw.h +34 -34
  91. data/ext/iup-linux/include/im_util.h +277 -277
  92. data/ext/iup-linux/include/imlua.h +75 -83
  93. data/ext/iup-linux/include/iup.h +86 -40
  94. data/ext/iup-linux/include/iupcb.h +1 -25
  95. data/ext/iup-linux/include/iupcbox.h +1 -0
  96. data/ext/iup-linux/include/iupcbs.h +1 -1
  97. data/ext/iup-linux/include/iupcells.h +1 -130
  98. data/ext/iup-linux/include/iupcolorbar.h +1 -126
  99. data/ext/iup-linux/include/iupcontrols.h +26 -16
  100. data/ext/iup-linux/include/iupdef.h +205 -0
  101. data/ext/iup-linux/include/iupdial.h +1 -63
  102. data/ext/iup-linux/include/iupgauge.h +1 -57
  103. data/ext/iup-linux/include/iupgc.h +1 -0
  104. data/ext/iup-linux/include/iupgetparam.h +1 -27
  105. data/ext/iup-linux/include/iupgl.h +2 -7
  106. data/ext/iup-linux/include/iupim.h +7 -1
  107. data/ext/iup-linux/include/iupkey.h +4 -4
  108. data/ext/iup-linux/include/iupmask.h +2 -1
  109. data/ext/iup-linux/include/iupmatrix.h +1 -63
  110. data/ext/iup-linux/include/iupsbox.h +1 -0
  111. data/ext/iup-linux/include/iupspin.h +1 -21
  112. data/ext/iup-linux/include/iuptabs.h +1 -75
  113. data/ext/iup-linux/include/iuptree.h +1 -93
  114. data/ext/iup-linux/include/iupval.h +1 -46
  115. data/ext/iup-linux/include/old_im.h +59 -59
  116. data/ext/iup-linux/include/wd.h +5 -0
  117. data/ext/iup-linux/libcd.a +0 -0
  118. data/ext/iup-linux/libcdcontextplus.a +0 -0
  119. data/ext/iup-linux/libcdgdk.a +0 -0
  120. data/ext/iup-linux/libcdpdf.a +0 -0
  121. data/ext/iup-linux/libfreetype.a +0 -0
  122. data/ext/iup-linux/libim.a +0 -0
  123. data/ext/iup-linux/libim_fftw.a +0 -0
  124. data/ext/iup-linux/libim_jp2.a +0 -0
  125. data/ext/iup-linux/libim_process.a +0 -0
  126. data/ext/iup-linux/libiup.a +0 -0
  127. data/ext/iup-linux/libiup_pplot.a +0 -0
  128. data/ext/iup-linux/libiupcd.a +0 -0
  129. data/ext/iup-linux/libiupcontrols.a +0 -0
  130. data/ext/iup-linux/libiupgl.a +0 -0
  131. data/ext/iup-linux/libiupim.a +0 -0
  132. data/ext/iup-linux/libiupimglib.a +0 -0
  133. data/ext/iup-linux/libiupmot.a +0 -0
  134. data/ext/iup-linux/libpdflib.a +0 -0
  135. data/ext/{iup-win32 → iup-mingw32}/include/cd.h +9 -5
  136. data/ext/{iup-win32 → iup-mingw32}/include/cd_canvas.hpp +0 -0
  137. data/ext/{iup-win32 → iup-mingw32}/include/cd_old.h +0 -0
  138. data/ext/{iup-win32 → iup-mingw32}/include/cd_private.h +13 -6
  139. data/ext/{iup-win32 → iup-mingw32}/include/cdcgm.h +0 -0
  140. data/ext/{iup-win32 → iup-mingw32}/include/cdclipbd.h +0 -0
  141. data/ext/{iup-win32 → iup-mingw32}/include/cddbuf.h +0 -0
  142. data/ext/{iup-win32 → iup-mingw32}/include/cddebug.h +0 -0
  143. data/ext/{iup-win32 → iup-mingw32}/include/cddgn.h +0 -0
  144. data/ext/{iup-win32 → iup-mingw32}/include/cddxf.h +0 -0
  145. data/ext/{iup-win32 → iup-mingw32}/include/cdemf.h +0 -0
  146. data/ext/{iup-win32 → iup-mingw32}/include/cdgdiplus.h +0 -0
  147. data/ext/{iup-win32 → iup-mingw32}/include/cdimage.h +0 -0
  148. data/ext/{iup-win32 → iup-mingw32}/include/cdirgb.h +0 -0
  149. data/ext/{iup-win32 → iup-mingw32}/include/cdiup.h +0 -0
  150. data/ext/{iup-win32 → iup-mingw32}/include/cdlua.h +0 -0
  151. data/ext/{iup-win32 → iup-mingw32}/include/cdlua3_private.h +0 -0
  152. data/ext/{iup-win32 → iup-mingw32}/include/cdlua5_private.h +0 -0
  153. data/ext/{iup-win32 → iup-mingw32}/include/cdluaim.h +0 -0
  154. data/ext/{iup-win32 → iup-mingw32}/include/cdluaiup.h +0 -0
  155. data/ext/{iup-win32 → iup-mingw32}/include/cdluapdf.h +0 -0
  156. data/ext/{iup-win32 → iup-mingw32}/include/cdmf.h +0 -0
  157. data/ext/{iup-win32 → iup-mingw32}/include/cdmf_private.h +0 -0
  158. data/ext/{iup-win32 → iup-mingw32}/include/cdnative.h +0 -0
  159. data/ext/{iup-win32 → iup-mingw32}/include/cdpdf.h +0 -0
  160. data/ext/{iup-win32 → iup-mingw32}/include/cdpicture.h +0 -0
  161. data/ext/{iup-win32 → iup-mingw32}/include/cdprint.h +0 -0
  162. data/ext/{iup-win32 → iup-mingw32}/include/cdps.h +0 -0
  163. data/ext/iup-mingw32/include/cdsvg.h +22 -0
  164. data/ext/{iup-win32 → iup-mingw32}/include/cdwmf.h +0 -0
  165. data/ext/iup-mingw32/include/im.h +287 -0
  166. data/ext/iup-mingw32/include/im_attrib.h +120 -0
  167. data/ext/iup-mingw32/include/im_attrib_flat.h +39 -0
  168. data/ext/iup-mingw32/include/im_binfile.h +224 -0
  169. data/ext/iup-mingw32/include/im_capture.h +365 -0
  170. data/ext/iup-mingw32/include/im_color.h +465 -0
  171. data/ext/iup-mingw32/include/im_colorhsi.h +56 -0
  172. data/ext/iup-mingw32/include/im_complex.h +180 -0
  173. data/ext/iup-mingw32/include/im_convert.h +142 -0
  174. data/ext/iup-mingw32/include/im_counter.h +69 -0
  175. data/ext/iup-mingw32/include/im_dib.h +195 -0
  176. data/ext/iup-mingw32/include/im_file.h +115 -0
  177. data/ext/iup-mingw32/include/im_format.h +97 -0
  178. data/ext/iup-mingw32/include/im_format_all.h +575 -0
  179. data/ext/iup-mingw32/include/im_format_avi.h +88 -0
  180. data/ext/iup-mingw32/include/im_format_ecw.h +93 -0
  181. data/ext/iup-mingw32/include/im_format_jp2.h +79 -0
  182. data/ext/iup-mingw32/include/im_format_raw.h +74 -0
  183. data/ext/iup-mingw32/include/im_format_wmv.h +101 -0
  184. data/ext/iup-mingw32/include/im_image.h +425 -0
  185. data/ext/iup-mingw32/include/im_kernel.h +315 -0
  186. data/ext/iup-mingw32/include/im_lib.h +191 -0
  187. data/ext/iup-mingw32/include/im_math.h +368 -0
  188. data/ext/iup-mingw32/include/im_math_op.h +214 -0
  189. data/ext/iup-mingw32/include/im_palette.h +172 -0
  190. data/ext/iup-mingw32/include/im_plus.h +73 -0
  191. data/ext/iup-mingw32/include/im_process.h +36 -0
  192. data/ext/iup-mingw32/include/im_process_ana.h +222 -0
  193. data/ext/iup-mingw32/include/im_process_glo.h +170 -0
  194. data/ext/iup-mingw32/include/im_process_loc.h +608 -0
  195. data/ext/iup-mingw32/include/im_process_pon.h +734 -0
  196. data/ext/iup-mingw32/include/im_raw.h +34 -0
  197. data/ext/iup-mingw32/include/im_util.h +277 -0
  198. data/ext/iup-mingw32/include/imlua.h +75 -0
  199. data/ext/{iup-win32 → iup-mingw32}/include/iup.h +86 -40
  200. data/ext/{iup-win32 → iup-mingw32}/include/iup_pplot.h +0 -0
  201. data/ext/iup-mingw32/include/iupcb.h +1 -0
  202. data/ext/iup-mingw32/include/iupcbox.h +1 -0
  203. data/ext/{iup-win32 → iup-mingw32}/include/iupcbs.h +1 -1
  204. data/ext/iup-mingw32/include/iupcells.h +1 -0
  205. data/ext/iup-mingw32/include/iupcolorbar.h +1 -0
  206. data/ext/iup-mingw32/include/iupcontrols.h +46 -0
  207. data/ext/{iup-win32 → iup-mingw32}/include/iupdef.h +205 -0
  208. data/ext/iup-mingw32/include/iupdial.h +1 -0
  209. data/ext/iup-mingw32/include/iupgauge.h +1 -0
  210. data/ext/iup-mingw32/include/iupgc.h +1 -0
  211. data/ext/iup-mingw32/include/iupgetparam.h +1 -0
  212. data/ext/{iup-win32 → iup-mingw32}/include/iupgl.h +2 -7
  213. data/ext/{iup-win32 → iup-mingw32}/include/iupim.h +7 -1
  214. data/ext/{iup-win32 → iup-mingw32}/include/iupkey.h +4 -4
  215. data/ext/{iup-win32 → iup-mingw32}/include/iuplua.h +0 -0
  216. data/ext/{iup-win32 → iup-mingw32}/include/iuplua_pplot.h +0 -0
  217. data/ext/{iup-win32 → iup-mingw32}/include/iupluacontrols.h +0 -0
  218. data/ext/{iup-win32 → iup-mingw32}/include/iupluagl.h +0 -0
  219. data/ext/{iup-win32 → iup-mingw32}/include/iupluaim.h +0 -0
  220. data/ext/{iup-win32 → iup-mingw32}/include/iupluaole.h +0 -0
  221. data/ext/{iup-win32 → iup-mingw32}/include/iupmask.h +2 -1
  222. data/ext/iup-mingw32/include/iupmatrix.h +1 -0
  223. data/ext/{iup-win32 → iup-mingw32}/include/iupole.h +0 -0
  224. data/ext/iup-mingw32/include/iupsbox.h +1 -0
  225. data/ext/iup-mingw32/include/iupspin.h +1 -0
  226. data/ext/iup-mingw32/include/iuptabs.h +1 -0
  227. data/ext/iup-mingw32/include/iuptree.h +1 -0
  228. data/ext/iup-mingw32/include/iupval.h +1 -0
  229. data/ext/iup-mingw32/include/old_im.h +59 -0
  230. data/ext/{iup-win32 → iup-mingw32}/include/wd.h +5 -0
  231. data/ext/{iup-win32 → iup-mingw32}/include/wd_old.h +0 -0
  232. data/ext/iup-mingw32/libcd.a +0 -0
  233. data/ext/iup-mingw32/libcdpdf.a +0 -0
  234. data/ext/iup-mingw32/libfreetype6.a +0 -0
  235. data/ext/iup-mingw32/libim.a +0 -0
  236. data/ext/iup-mingw32/libim_avi.a +0 -0
  237. data/ext/iup-mingw32/libim_fftw.a +0 -0
  238. data/ext/iup-mingw32/libim_jp2.a +0 -0
  239. data/ext/iup-mingw32/libim_process.a +0 -0
  240. data/ext/iup-mingw32/libiup.a +0 -0
  241. data/ext/iup-mingw32/libiup_pplot.a +0 -0
  242. data/ext/iup-mingw32/libiupcd.a +0 -0
  243. data/ext/iup-mingw32/libiupcontrols.a +0 -0
  244. data/ext/iup-mingw32/libiupgl.a +0 -0
  245. data/ext/iup-mingw32/libiupim.a +0 -0
  246. data/ext/iup-mingw32/libiupimglib.a +0 -0
  247. data/ext/iup-mingw32/libiupole.a +0 -0
  248. data/ext/iup-mingw32/libpdflib.a +0 -0
  249. data/ext/iup-mswin32/cd.lib +0 -0
  250. data/ext/iup-mswin32/cdcontextplus.lib +0 -0
  251. data/ext/iup-mswin32/cdgdk.lib +0 -0
  252. data/ext/iup-mswin32/cdpdf.lib +0 -0
  253. data/ext/iup-mswin32/freetype6.lib +0 -0
  254. data/ext/iup-mswin32/im.lib +0 -0
  255. data/ext/iup-mswin32/im_avi.lib +0 -0
  256. data/ext/iup-mswin32/im_capture.lib +0 -0
  257. data/ext/iup-mswin32/im_fftw.lib +0 -0
  258. data/ext/iup-mswin32/im_jp2.lib +0 -0
  259. data/ext/iup-mswin32/im_process.lib +0 -0
  260. data/ext/iup-mswin32/im_wmv.lib +0 -0
  261. data/ext/iup-mswin32/include/cd.h +498 -0
  262. data/ext/iup-mswin32/include/cd_canvas.hpp +358 -0
  263. data/ext/iup-mswin32/include/cd_old.h +158 -0
  264. data/ext/iup-mswin32/include/cd_private.h +369 -0
  265. data/ext/iup-mswin32/include/cdcgm.h +34 -0
  266. data/ext/iup-mswin32/include/cdclipbd.h +22 -0
  267. data/ext/iup-mswin32/include/cddbuf.h +23 -0
  268. data/ext/iup-mswin32/include/cddebug.h +24 -0
  269. data/ext/iup-mswin32/include/cddgn.h +23 -0
  270. data/ext/iup-mswin32/include/cddxf.h +22 -0
  271. data/ext/iup-mswin32/include/cdemf.h +22 -0
  272. data/ext/iup-mswin32/include/cdgdiplus.h +29 -0
  273. data/ext/iup-mswin32/include/cdimage.h +23 -0
  274. data/ext/iup-mswin32/include/cdirgb.h +30 -0
  275. data/ext/iup-mswin32/include/cdiup.h +22 -0
  276. data/ext/iup-mswin32/include/cdlua.h +39 -0
  277. data/ext/iup-mswin32/include/cdlua3_private.h +120 -0
  278. data/ext/iup-mswin32/include/cdlua5_private.h +141 -0
  279. data/ext/iup-mswin32/include/cdluaim.h +24 -0
  280. data/ext/iup-mswin32/include/cdluaiup.h +27 -0
  281. data/ext/iup-mswin32/include/cdluapdf.h +27 -0
  282. data/ext/iup-mswin32/include/cdmf.h +24 -0
  283. data/ext/iup-mswin32/include/cdmf_private.h +32 -0
  284. data/ext/iup-mswin32/include/cdnative.h +26 -0
  285. data/ext/iup-mswin32/include/cdpdf.h +38 -0
  286. data/ext/iup-mswin32/include/cdpicture.h +22 -0
  287. data/ext/iup-mswin32/include/cdprint.h +23 -0
  288. data/ext/iup-mswin32/include/cdps.h +37 -0
  289. data/ext/iup-mswin32/include/cdsvg.h +22 -0
  290. data/ext/iup-mswin32/include/cdwmf.h +22 -0
  291. data/ext/iup-mswin32/include/im.h +287 -0
  292. data/ext/iup-mswin32/include/im_attrib.h +120 -0
  293. data/ext/iup-mswin32/include/im_attrib_flat.h +39 -0
  294. data/ext/iup-mswin32/include/im_binfile.h +224 -0
  295. data/ext/iup-mswin32/include/im_capture.h +365 -0
  296. data/ext/iup-mswin32/include/im_color.h +465 -0
  297. data/ext/iup-mswin32/include/im_colorhsi.h +56 -0
  298. data/ext/iup-mswin32/include/im_complex.h +180 -0
  299. data/ext/iup-mswin32/include/im_convert.h +142 -0
  300. data/ext/iup-mswin32/include/im_counter.h +69 -0
  301. data/ext/iup-mswin32/include/im_dib.h +195 -0
  302. data/ext/iup-mswin32/include/im_file.h +115 -0
  303. data/ext/iup-mswin32/include/im_format.h +97 -0
  304. data/ext/iup-mswin32/include/im_format_all.h +575 -0
  305. data/ext/iup-mswin32/include/im_format_avi.h +88 -0
  306. data/ext/iup-mswin32/include/im_format_ecw.h +93 -0
  307. data/ext/iup-mswin32/include/im_format_jp2.h +79 -0
  308. data/ext/iup-mswin32/include/im_format_raw.h +74 -0
  309. data/ext/iup-mswin32/include/im_format_wmv.h +101 -0
  310. data/ext/iup-mswin32/include/im_image.h +425 -0
  311. data/ext/iup-mswin32/include/im_kernel.h +315 -0
  312. data/ext/iup-mswin32/include/im_lib.h +191 -0
  313. data/ext/iup-mswin32/include/im_math.h +368 -0
  314. data/ext/iup-mswin32/include/im_math_op.h +214 -0
  315. data/ext/iup-mswin32/include/im_palette.h +172 -0
  316. data/ext/iup-mswin32/include/im_plus.h +73 -0
  317. data/ext/iup-mswin32/include/im_process.h +36 -0
  318. data/ext/iup-mswin32/include/im_process_ana.h +222 -0
  319. data/ext/iup-mswin32/include/im_process_glo.h +170 -0
  320. data/ext/iup-mswin32/include/im_process_loc.h +608 -0
  321. data/ext/iup-mswin32/include/im_process_pon.h +734 -0
  322. data/ext/iup-mswin32/include/im_raw.h +34 -0
  323. data/ext/iup-mswin32/include/im_util.h +277 -0
  324. data/ext/iup-mswin32/include/imlua.h +75 -0
  325. data/ext/iup-mswin32/include/iup.h +364 -0
  326. data/ext/iup-mswin32/include/iup_pplot.h +40 -0
  327. data/ext/iup-mswin32/include/iupcb.h +1 -0
  328. data/ext/iup-mswin32/include/iupcbox.h +1 -0
  329. data/ext/iup-mswin32/include/iupcbs.h +43 -0
  330. data/ext/iup-mswin32/include/iupcells.h +1 -0
  331. data/ext/iup-mswin32/include/iupcolorbar.h +1 -0
  332. data/ext/iup-mswin32/include/iupcontrols.h +46 -0
  333. data/ext/iup-mswin32/include/iupdef.h +725 -0
  334. data/ext/iup-mswin32/include/iupdial.h +1 -0
  335. data/ext/iup-mswin32/include/iupgauge.h +1 -0
  336. data/ext/iup-mswin32/include/iupgc.h +1 -0
  337. data/ext/iup-mswin32/include/iupgetparam.h +1 -0
  338. data/ext/iup-mswin32/include/iupgl.h +96 -0
  339. data/ext/iup-mswin32/include/iupim.h +27 -0
  340. data/ext/iup-mswin32/include/iupkey.h +457 -0
  341. data/ext/iup-mswin32/include/iuplua.h +41 -0
  342. data/ext/iup-mswin32/include/iuplua_pplot.h +26 -0
  343. data/ext/iup-mswin32/include/iupluacontrols.h +27 -0
  344. data/ext/iup-mswin32/include/iupluagl.h +26 -0
  345. data/ext/iup-mswin32/include/iupluaim.h +26 -0
  346. data/ext/iup-mswin32/include/iupluaole.h +26 -0
  347. data/ext/iup-mswin32/include/iupmask.h +41 -0
  348. data/ext/iup-mswin32/include/iupmatrix.h +1 -0
  349. data/ext/iup-mswin32/include/iupole.h +24 -0
  350. data/ext/iup-mswin32/include/iupsbox.h +1 -0
  351. data/ext/iup-mswin32/include/iupspin.h +1 -0
  352. data/ext/iup-mswin32/include/iuptabs.h +1 -0
  353. data/ext/iup-mswin32/include/iuptree.h +1 -0
  354. data/ext/iup-mswin32/include/iupval.h +1 -0
  355. data/ext/iup-mswin32/include/old_im.h +59 -0
  356. data/ext/iup-mswin32/include/wd.h +83 -0
  357. data/ext/iup-mswin32/include/wd_old.h +85 -0
  358. data/ext/iup-mswin32/iup.lib +0 -0
  359. data/ext/iup-mswin32/iup_pplot.lib +0 -0
  360. data/ext/iup-mswin32/iupcd.lib +0 -0
  361. data/ext/iup-mswin32/iupcontrols.lib +0 -0
  362. data/ext/iup-mswin32/iupgl.lib +0 -0
  363. data/ext/iup-mswin32/iupgtk.lib +0 -0
  364. data/ext/iup-mswin32/iupim.lib +0 -0
  365. data/ext/{iup-win32/iupimglib.dll → iup-mswin32/iupimglib.lib} +0 -0
  366. data/ext/iup-mswin32/iupole.lib +0 -0
  367. data/ext/iup-mswin32/pdflib.lib +0 -0
  368. data/ext/iup.c +6 -37
  369. data/ext/{rb_cd.h → rb_cd.c} +300 -302
  370. data/ext/rb_iup.c +2485 -0
  371. data/ext/rb_iup.h +400 -2475
  372. data/ext/{rb_iup_pplot.h → rb_iup_pplot.c} +21 -22
  373. data/ext/{rb_iupcb.h → rb_iupcb.c} +2 -3
  374. data/ext/{rb_iupcells.h → rb_iupcells.c} +5 -5
  375. data/ext/{rb_iupcolorbar.h → rb_iupcolorbar.c} +2 -3
  376. data/ext/{rb_iupcontrols.h → rb_iupcontrols.c} +1 -1
  377. data/ext/{rb_iupdial.h → rb_iupdial.c} +3 -4
  378. data/ext/{rb_iupgauge.h → rb_iupgauge.c} +2 -3
  379. data/ext/{rb_iupgc.h → rb_iupgc.c} +1 -1
  380. data/ext/{rb_iupgetparam.h → rb_iupgetparam.c} +12 -10
  381. data/ext/{rb_iupgl.h → rb_iupgl.c} +10 -10
  382. data/ext/{rb_iupim.h → rb_iupim.c} +6 -6
  383. data/ext/{rb_iupmatrix.h → rb_iupmatrix.c} +15 -16
  384. data/ext/{rb_iupole.h → rb_iupole.c} +4 -4
  385. data/ext/{rb_iupsbox.h → rb_iupsbox.c} +3 -3
  386. data/ext/{rb_iupspin.h → rb_iupspin.c} +4 -5
  387. data/ext/{rb_iuptabs.h → rb_iuptabs.c} +5 -6
  388. data/ext/{rb_iuptree.h → rb_iuptree.c} +20 -21
  389. data/ext/{rb_iupval.h → rb_iupval.c} +3 -4
  390. data/ruby-iup.gemspec +26 -0
  391. data/test/test_ruby_iup.rb +25 -0
  392. metadata +395 -270
  393. data/ext/iup-linux/include/lauxlib.h +0 -174
  394. data/ext/iup-linux/include/lua.h +0 -388
  395. data/ext/iup-linux/include/lua.hpp +0 -9
  396. data/ext/iup-linux/include/luaconf.h +0 -763
  397. data/ext/iup-linux/include/lualib.h +0 -53
  398. data/ext/iup-linux/libcd.so +0 -0
  399. data/ext/iup-linux/libcdcontextplus.so +0 -0
  400. data/ext/iup-linux/libcdpdf.so +0 -0
  401. data/ext/iup-linux/libfreetype.so +0 -0
  402. data/ext/iup-linux/libim.so +0 -0
  403. data/ext/iup-linux/libim_fftw.so +0 -0
  404. data/ext/iup-linux/libim_jp2.so +0 -0
  405. data/ext/iup-linux/libim_process.so +0 -0
  406. data/ext/iup-linux/libiup.so +0 -0
  407. data/ext/iup-linux/libiup_pplot.so +0 -0
  408. data/ext/iup-linux/libiupcd.so +0 -0
  409. data/ext/iup-linux/libiupcontrols.so +0 -0
  410. data/ext/iup-linux/libiupgl.so +0 -0
  411. data/ext/iup-linux/libiupim.so +0 -0
  412. data/ext/iup-linux/libiupimglib.so +0 -0
  413. data/ext/iup-linux/libiupmot.so +0 -0
  414. data/ext/iup-linux/libpdflib.so +0 -0
  415. data/ext/iup-win32/cd.dll +0 -0
  416. data/ext/iup-win32/cd.lib +0 -0
  417. data/ext/iup-win32/cdcontextplus.dll +0 -0
  418. data/ext/iup-win32/cdcontextplus.lib +0 -0
  419. data/ext/iup-win32/cdpdf.dll +0 -0
  420. data/ext/iup-win32/cdpdf.lib +0 -0
  421. data/ext/iup-win32/freetype6.dll +0 -0
  422. data/ext/iup-win32/freetype6.lib +0 -0
  423. data/ext/iup-win32/im.dll +0 -0
  424. data/ext/iup-win32/im.lib +0 -0
  425. data/ext/iup-win32/im_avi.dll +0 -0
  426. data/ext/iup-win32/im_avi.lib +0 -0
  427. data/ext/iup-win32/im_capture.dll +0 -0
  428. data/ext/iup-win32/im_capture.lib +0 -0
  429. data/ext/iup-win32/im_ecw.dll +0 -0
  430. data/ext/iup-win32/im_fftw.dll +0 -0
  431. data/ext/iup-win32/im_fftw.lib +0 -0
  432. data/ext/iup-win32/im_jp2.dll +0 -0
  433. data/ext/iup-win32/im_jp2.lib +0 -0
  434. data/ext/iup-win32/im_process.dll +0 -0
  435. data/ext/iup-win32/im_process.lib +0 -0
  436. data/ext/iup-win32/im_wmv.dll +0 -0
  437. data/ext/iup-win32/im_wmv.lib +0 -0
  438. data/ext/iup-win32/imlua_capture51.dll +0 -0
  439. data/ext/iup-win32/imlua_capture51.lib +0 -0
  440. data/ext/iup-win32/imlua_wmv51.dll +0 -0
  441. data/ext/iup-win32/imlua_wmv51.lib +0 -0
  442. data/ext/iup-win32/include/iupcb.h +0 -25
  443. data/ext/iup-win32/include/iupcells.h +0 -130
  444. data/ext/iup-win32/include/iupcolorbar.h +0 -126
  445. data/ext/iup-win32/include/iupcontrols.h +0 -36
  446. data/ext/iup-win32/include/iupdial.h +0 -63
  447. data/ext/iup-win32/include/iupgauge.h +0 -57
  448. data/ext/iup-win32/include/iupgetparam.h +0 -27
  449. data/ext/iup-win32/include/iupmatrix.h +0 -63
  450. data/ext/iup-win32/include/iupspin.h +0 -21
  451. data/ext/iup-win32/include/iuptabs.h +0 -75
  452. data/ext/iup-win32/include/iuptree.h +0 -93
  453. data/ext/iup-win32/include/iupval.h +0 -46
  454. data/ext/iup-win32/iup.dll +0 -0
  455. data/ext/iup-win32/iup.lib +0 -0
  456. data/ext/iup-win32/iup_pplot.dll +0 -0
  457. data/ext/iup-win32/iup_pplot.lib +0 -0
  458. data/ext/iup-win32/iupcd.dll +0 -0
  459. data/ext/iup-win32/iupcd.lib +0 -0
  460. data/ext/iup-win32/iupcontrols.dll +0 -0
  461. data/ext/iup-win32/iupcontrols.lib +0 -0
  462. data/ext/iup-win32/iupgl.dll +0 -0
  463. data/ext/iup-win32/iupgl.lib +0 -0
  464. data/ext/iup-win32/iupgtk.dll +0 -0
  465. data/ext/iup-win32/iupgtk.lib +0 -0
  466. data/ext/iup-win32/iupim.dll +0 -0
  467. data/ext/iup-win32/iupim.lib +0 -0
  468. data/ext/iup-win32/iupimglib.lib +0 -0
  469. data/ext/iup-win32/iupole.dll +0 -0
  470. data/ext/iup-win32/iupole.lib +0 -0
  471. data/ext/iup-win32/iupstub.lib +0 -0
  472. data/ext/iup-win32/pdflib.dll +0 -0
  473. data/ext/iup-win32/pdflib.lib +0 -0
  474. data/ext/mkrf_conf.rb +0 -72
  475. data/ext/rb_iupcompat.h +0 -237
  476. data/ext/rb_iupdef.h +0 -3
  477. data/ext/rb_iupmask.h +0 -189
  478. data/lib/README +0 -1
@@ -0,0 +1,170 @@
1
+ /** \file
2
+ * \brief Image Processing - Global Operations
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PROCESS_GLO_H
8
+ #define __IM_PROCESS_GLO_H
9
+
10
+ #include "im_image.h"
11
+
12
+ #if defined(__cplusplus)
13
+ extern "C" {
14
+ #endif
15
+
16
+
17
+
18
+ /** \defgroup transform Other Domain Transform Operations
19
+ * \par
20
+ * Hough, Distance.
21
+ *
22
+ * See \ref im_process_glo.h
23
+ * \ingroup process */
24
+
25
+ /** Hough Lines Transform. \n
26
+ * It will detect white lines in a black background. So the source image must be a IM_BINARY image
27
+ * with the white lines of interest enhanced. The better the threshold with the white lines the better
28
+ * the line detection. \n
29
+ * The destiny image must have IM_GRAY, IM_INT, hg_width=180, hg_height=2*rmax+1,
30
+ * where rmax is the image diagonal/2 (rmax = srqrt(width*width + height*height)). \n
31
+ * The hough transform defines "cos(theta) * X + sin(theta) * Y = rho" and the parameters are in the interval: \n
32
+ * theta = "0 .. 179", rho = "-hg_height/2 .. hg_height/2" .\n
33
+ * Where rho is the perpendicular distance from the center of the image and theta the angle with the normal.
34
+ * So do not confuse theta with the line angle, they are perpendicular. \n
35
+ * Returns zero if the counter aborted. \n
36
+ * Inspired from ideas in XITE, Copyright 1991, Blab, UiO \n
37
+ * http://www.ifi.uio.no/~blab/Software/Xite/
38
+ *
39
+ * \verbatim im.ProcessHoughLines(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
40
+ * \verbatim im.ProcessHoughLinesNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
41
+ * \ingroup transform */
42
+ int imProcessHoughLines(const imImage* src_image, imImage* dst_image);
43
+
44
+ /** Draw detected hough lines. \n
45
+ * The source image must be IM_GRAY and IM_BYTE. The destiny image can be a clone of the source image or
46
+ * it can be the source image for in place processing. \n
47
+ * If the hough transform is not NULL, then the hough points are filtered to include only lines
48
+ * that are significally different from each other. \n
49
+ * The hough image is the hough transform image, but it is optional and can be NULL.
50
+ * If not NULL then it will be used to filter lines that are very similar. \n
51
+ * The hough points image is a hough transform image that was thresholded to a IM_BINARY image,
52
+ * usually using a Local Max threshold operation (see \ref imProcessLocalMaxThreshold). Again the better the threshold the better the results. \n
53
+ * The destiny image will be set to IM_MAP, and the detected lines will be drawn using a red color. \n
54
+ * Returns the number of detected lines.
55
+ *
56
+ * \verbatim im.ProcessHoughLinesDraw(src_image: imImage, hough: imImage, hough_points: imImage, dst_image: imImage) -> lines: number [in Lua 5] \endverbatim
57
+ * \verbatim im.ProcessHoughLinesDrawNew(image: imImage, hough: imImage, hough_points: imImage) -> lines: number, new_image: imImage [in Lua 5] \endverbatim
58
+ * \ingroup transform */
59
+ int imProcessHoughLinesDraw(const imImage* src_image, const imImage* hough, const imImage* hough_points, imImage* dst_image);
60
+
61
+ /** Calculates the Cross Correlation in the frequency domain. \n
62
+ * CrossCorr(a,b) = IFFT(Conj(FFT(a))*FFT(b)) \n
63
+ * Images must be of the same size and only destiny image must be of type complex.
64
+ *
65
+ * \verbatim im.ProcessCrossCorrelation(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
66
+ * \verbatim im.ProcessCrossCorrelationNew(image1: imImage, image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
67
+ * \ingroup transform */
68
+ void imProcessCrossCorrelation(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
69
+
70
+ /** Calculates the Auto Correlation in the frequency domain. \n
71
+ * Uses the cross correlation.
72
+ * Images must be of the same size and only destiny image must be of type complex.
73
+ *
74
+ * \verbatim im.ProcessAutoCorrelation(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
75
+ * \verbatim im.ProcessAutoCorrelationNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
76
+ * \ingroup transform */
77
+ void imProcessAutoCorrelation(const imImage* src_image, imImage* dst_image);
78
+
79
+ /** Calculates the Distance Transform of a binary image
80
+ * using an aproximation of the euclidian distance.\n
81
+ * Each white pixel in the binary image is
82
+ * assigned a value equal to its distance from the nearest
83
+ * black pixel. \n
84
+ * Uses a two-pass algorithm incrementally calculating the distance. \n
85
+ * Source image must be IM_BINARY, destiny must be IM_FLOAT.
86
+ *
87
+ * \verbatim im.ProcessDistanceTransform(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
88
+ * \verbatim im.ProcessDistanceTransformNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
89
+ * \ingroup transform */
90
+ void imProcessDistanceTransform(const imImage* src_image, imImage* dst_image);
91
+
92
+ /** Marks all the regional maximum of the distance transform. \n
93
+ * source is IMGRAY/IM_FLOAT destiny in IM_BINARY. \n
94
+ * We consider maximum all connected pixel values that have smaller pixel values around it.
95
+ *
96
+ * \verbatim im.ProcessRegionalMaximum(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
97
+ * \verbatim im.ProcessRegionalMaximumNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
98
+ * \ingroup transform */
99
+ void imProcessRegionalMaximum(const imImage* src_image, imImage* dst_image);
100
+
101
+
102
+
103
+ /** \defgroup fourier Fourier Transform Operations
104
+ * \par
105
+ * All Fourier transforms use FFTW library. \n
106
+ * The pre-compiled binaries for FFTW version 2.1.5 includes all the necessary files.
107
+ * The pre-compiled binaries for FFTW version 3.x depends on an external library, not provided.
108
+ * To build the code that uses FFTW version 3 you must define USE_FFTW3.
109
+ * \par
110
+ * FFTW Copyright Matteo Frigo, Steven G. Johnson and the MIT. \n
111
+ * http://www.fftw.org \n
112
+ * See "fftw.h"
113
+ * \par
114
+ * Must link with "im_fftw" library. \n
115
+ * \par
116
+ * IMPORTANT: The FFTW lib has a GPL license. The license of the "im_fftw" library is automatically the GPL.
117
+ * So you cannot use it for commercial applications without contacting the authors.
118
+ * \par
119
+ * See \ref im_process_glo.h
120
+ * \ingroup process */
121
+
122
+ /** Forward FFT. \n
123
+ * The result has its lowest frequency at the center of the image. \n
124
+ * This is an unnormalized fft. \n
125
+ * Images must be of the same size. Destiny image must be of type complex.
126
+ *
127
+ * \verbatim im.ProcessFFT(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
128
+ * \verbatim im.ProcessFFTNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
129
+ * \ingroup fourier */
130
+ void imProcessFFT(const imImage* src_image, imImage* dst_image);
131
+
132
+ /** Inverse FFT. \n
133
+ * The image has its lowest frequency restored to the origin before the transform. \n
134
+ * The result is normalized by (width*height). \n
135
+ * Images must be of the same size and both must be of type complex.
136
+ *
137
+ * \verbatim im.ProcessIFFT(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
138
+ * \verbatim im.ProcessIFFTNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
139
+ * \ingroup fourier */
140
+ void imProcessIFFT(const imImage* src_image, imImage* dst_image);
141
+
142
+ /** Raw in-place FFT (forward or inverse). \n
143
+ * The lowest frequency can be centered after forward, or
144
+ * can be restored to the origin before inverse. \n
145
+ * The result can be normalized after the transform by sqrt(w*h) [1] or by (w*h) [2],
146
+ * or left unnormalized [0]. \n
147
+ * Images must be of the same size and both must be of type complex.
148
+ *
149
+ * \verbatim im.ProcessFFTraw(image: imImage, inverse: number, center: number, normalize: number) [in Lua 5] \endverbatim
150
+ * \ingroup fourier */
151
+ void imProcessFFTraw(imImage* image, int inverse, int center, int normalize);
152
+
153
+ /** Auxiliary function for the raw FFT. \n
154
+ * This is the function used internally to change the lowest frequency position in the image. \n
155
+ * If the image size has even dimensions the flag "center2origin" is useless. But if it is odd,
156
+ * you must specify if its from center to origin (usually used before inverse) or
157
+ * from origin to center (usually used after forward). \n
158
+ * Notice that this function is used for images in the the frequency domain. \n
159
+ * Image type must be complex.
160
+ *
161
+ * \verbatim im.ProcessSwapQuadrants(image: imImage, center2origin: number) [in Lua 5] \endverbatim
162
+ * \ingroup fourier */
163
+ void imProcessSwapQuadrants(imImage* image, int center2origin);
164
+
165
+
166
+ #if defined(__cplusplus)
167
+ }
168
+ #endif
169
+
170
+ #endif
@@ -0,0 +1,608 @@
1
+ /** \file
2
+ * \brief Image Processing - Local Operations
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PROCESS_LOC_H
8
+ #define __IM_PROCESS_LOC_H
9
+
10
+ #include "im_image.h"
11
+
12
+ #if defined(__cplusplus)
13
+ extern "C" {
14
+ #endif
15
+
16
+
17
+
18
+ /** \defgroup resize Image Resize
19
+ * \par
20
+ * Operations to change the image size. \n
21
+ * All size operations include the alpha channel if any.
22
+ * \par
23
+ * See \ref im_process_loc.h
24
+ * \ingroup process */
25
+
26
+ /** Only reduze the image size using the given decimation order. \n
27
+ * Supported decimation orders:
28
+ * \li 0 - zero order (mean)
29
+ * \li 1 - first order (bilinear decimation)
30
+ * Images must be of the same type. If image type is IM_MAP or IM_BINARY, must use order=0. \n
31
+ * Returns zero if the counter aborted.
32
+ *
33
+ * \verbatim im.ProcessReduce(src_image: imImage, dst_image: imImage, order: number) -> counter: boolean [in Lua 5] \endverbatim
34
+ * \verbatim im.ProcessReduceNew(image: imImage, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
35
+ * \ingroup resize */
36
+ int imProcessReduce(const imImage* src_image, imImage* dst_image, int order);
37
+
38
+ /** Change the image size using the given interpolation order. \n
39
+ * Supported interpolation orders:
40
+ * \li 0 - zero order (near neighborhood)
41
+ * \li 1 - first order (bilinear interpolation)
42
+ * \li 3 - third order (bicubic interpolation)
43
+ * Images must be of the same type. If image type is IM_MAP or IM_BINARY, must use order=0. \n
44
+ * Returns zero if the counter aborted.
45
+ *
46
+ * \verbatim im.ProcessResize(src_image: imImage, dst_image: imImage, order: number) -> counter: boolean [in Lua 5] \endverbatim
47
+ * \verbatim im.ProcessResizeNew(image: imImage, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
48
+ * \ingroup resize */
49
+ int imProcessResize(const imImage* src_image, imImage* dst_image, int order);
50
+
51
+ /** Reduze the image area by 4 (w/2,h/2). \n
52
+ * Images must be of the same type. Destiny image size must be source image width/2, height/2.
53
+ * Can not operate on IM_MAP nor IM_BINARY images.
54
+ *
55
+ * \verbatim im.ProcessReduceBy4(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
56
+ * \verbatim im.ProcessReduceBy4New(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
57
+ * \ingroup resize */
58
+ void imProcessReduceBy4(const imImage* src_image, imImage* dst_image);
59
+
60
+ /** Extract a rectangular region from an image. \n
61
+ * Images must be of the same type. Destiny image size must be smaller than source image width-xmin, height-ymin. \n
62
+ * ymin and xmin must be >0 and <size.
63
+ *
64
+ * \verbatim im.ProcessCrop(src_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
65
+ * \verbatim im.ProcessCropNew(image: imImage, xmin: number, xmax: number, ymin: number, ymax: number) -> new_image: imImage [in Lua 5] \endverbatim
66
+ * \ingroup resize */
67
+ void imProcessCrop(const imImage* src_image, imImage* dst_image, int xmin, int ymin);
68
+
69
+ /** Insert a rectangular region in an image. \n
70
+ * Images must be of the same type. Region image size can be larger than source image. \n
71
+ * ymin and xmin must be >0 and <size. \n
72
+ * Source and destiny must be of the same size. Can be done in place.
73
+ *
74
+ * \verbatim im.ProcessInsert(src_image: imImage, region_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
75
+ * \verbatim im.ProcessInsertNew(image: imImage, region_image: imImage, xmin: number, ymin: number) -> new_image: imImage [in Lua 5] \endverbatim
76
+ * \ingroup resize */
77
+ void imProcessInsert(const imImage* src_image, const imImage* region_image, imImage* dst_image, int xmin, int ymin);
78
+
79
+ /** Increase the image size by adding pixels with zero value. \n
80
+ * Images must be of the same type. Destiny image size must be greatter than source image width+xmin, height+ymin.
81
+ *
82
+ * \verbatim im.ProcessAddMargins(src_image: imImage, dst_image: imImage, xmin: number, ymin: number) [in Lua 5] \endverbatim
83
+ * \verbatim im.ProcessAddMarginsNew(image: imImage, xmin: number, xmax: number, ymin: number, ymax: number) -> new_image: imImage [in Lua 5] \endverbatim
84
+ * \ingroup resize */
85
+ void imProcessAddMargins(const imImage* src_image, imImage* dst_image, int xmin, int ymin);
86
+
87
+
88
+
89
+ /** \defgroup geom Geometric Operations
90
+ * \par
91
+ * Operations to change the shape of the image. \n
92
+ * All geometric operations include the alpha channel if any.
93
+ * \par
94
+ * See \ref im_process_loc.h
95
+ * \ingroup process */
96
+
97
+ /** Calculates the size of the new image after rotation.
98
+ *
99
+ * \verbatim im.ProcessCalcRotateSize(width: number, height: number, cos0: number, sin0: number) [in Lua 5] \endverbatim
100
+ * \ingroup geom */
101
+ void imProcessCalcRotateSize(int width, int height, int *new_width, int *new_height, double cos0, double sin0);
102
+
103
+ /** Rotates the image using the given interpolation order (see \ref imProcessResize). \n
104
+ * Images must be of the same type. The destiny size can be calculated using \ref imProcessCalcRotateSize to fit the new image size,
105
+ * or can be any size, including the original size. The rotation is relative to the center of the image. \n
106
+ * Returns zero if the counter aborted.
107
+ *
108
+ * \verbatim im.ProcessRotate(src_image: imImage, dst_image: imImage, cos0: number, sin0: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
109
+ * \verbatim im.ProcessRotateNew(image: imImage, cos0: number, sin0: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
110
+ * \ingroup geom */
111
+ int imProcessRotate(const imImage* src_image, imImage* dst_image, double cos0, double sin0, int order);
112
+
113
+ /** Rotates the image using the given interpolation order (see \ref imProcessResize). \n
114
+ * Images must be of the same type. Destiny can have any size, including the original size. \n
115
+ * The rotation is relative to the reference point. But the result can be shifted to the origin. \n
116
+ * Returns zero if the counter aborted.
117
+ *
118
+ * \verbatim im.ProcessRotateRef(src_image: imImage, dst_image: imImage, cos0: number, sin0: number, x: number, y: number, to_origin: boolean, order: number) -> counter: boolean [in Lua 5] \endverbatim
119
+ * \verbatim im.ProcessRotateRefNew(image: imImage, cos0: number, sin0: number, x: number, y: number, to_origin: boolean, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
120
+ * \ingroup geom */
121
+ int imProcessRotateRef(const imImage* src_image, imImage* dst_image, double cos0, double sin0, int x, int y, int to_origin, int order);
122
+
123
+ /** Rotates the image in 90 degrees counterclockwise or clockwise. Swap columns by lines. \n
124
+ * Images must be of the same type. Destiny width and height must be source height and width. \n
125
+ * Direction can be clockwise (1) or counter clockwise (-1).
126
+ *
127
+ * \verbatim im.ProcessRotate90(src_image: imImage, dst_image: imImage, dir_clockwise: boolean) [in Lua 5] \endverbatim
128
+ * \verbatim im.ProcessRotate90New(image: imImage, dir_clockwise: boolean) -> new_image: imImage [in Lua 5] \endverbatim
129
+ * \ingroup geom */
130
+ void imProcessRotate90(const imImage* src_image, imImage* dst_image, int dir_clockwise);
131
+
132
+ /** Rotates the image in 180 degrees. Swap columns and swap lines. \n
133
+ * Images must be of the same type and size.
134
+ *
135
+ * \verbatim im.ProcessRotate180(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
136
+ * \verbatim im.ProcessRotate180New(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
137
+ * \ingroup geom */
138
+ void imProcessRotate180(const imImage* src_image, imImage* dst_image);
139
+
140
+ /** Mirror the image in a horizontal flip. Swap columns. \n
141
+ * Images must be of the same type and size.
142
+ * Can be done in-place.
143
+ *
144
+ * \verbatim im.ProcessMirror(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
145
+ * \verbatim im.ProcessMirrorNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
146
+ * \ingroup geom */
147
+ void imProcessMirror(const imImage* src_image, imImage* dst_image);
148
+
149
+ /** Apply a vertical flip. Swap lines. \n
150
+ * Images must be of the same type and size.
151
+ * Can be done in-place.
152
+ *
153
+ * \verbatim im.ProcessFlip(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
154
+ * \verbatim im.ProcessFlipNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
155
+ * \ingroup geom */
156
+ void imProcessFlip(const imImage* src_image, imImage* dst_image);
157
+
158
+ /** Apply a radial distortion using the given interpolation order (see imProcessResize). \n
159
+ * Images must be of the same type and size. Returns zero if the counter aborted.
160
+ *
161
+ * \verbatim im.ProcessRadial(src_image: imImage, dst_image: imImage, k1: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
162
+ * \verbatim im.ProcessRadialNew(image: imImage, k1: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
163
+ * \ingroup geom */
164
+ int imProcessRadial(const imImage* src_image, imImage* dst_image, float k1, int order);
165
+
166
+ /** Apply a swirl distortion using the given interpolation order (see imProcessResize). \n
167
+ * Images must be of the same type and size. Returns zero if the counter aborted.
168
+ *
169
+ * \verbatim im.ProcessSwirl(src_image: imImage, dst_image: imImage, k: number, order: number) -> counter: boolean [in Lua 5] \endverbatim
170
+ * \verbatim im.ProcessSwirlNew(image: imImage, k: number, order: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
171
+ * \ingroup geom */
172
+ int imProcessSwirl(const imImage* src_image, imImage* dst_image, float k1, int order);
173
+
174
+ /** Split the image in two images, one containing the odd lines and other containing the even lines. \n
175
+ * Images must be of the same type. Height of the output images must be half the height of the input image.
176
+ * If the height of the input image is odd then the first image must have height equals to half+1.
177
+ *
178
+ * \verbatim im.ProcessInterlaceSplit(src_image: imImage, dst_image1: imImage, dst_image2: imImage) [in Lua 5] \endverbatim
179
+ * \verbatim im.ProcessInterlaceSplitNew(image: imImage) -> new_image1: imImage, new_image2: imImage [in Lua 5] \endverbatim
180
+ * \ingroup geom */
181
+ void imProcessInterlaceSplit(const imImage* src_image, imImage* dst_image1, imImage* dst_image2);
182
+
183
+
184
+
185
+ /** \defgroup morphgray Morphology Operations for Gray Images
186
+ * \par
187
+ * See \ref im_process_loc.h
188
+ * \ingroup process */
189
+
190
+ /** Base gray morphology convolution. \n
191
+ * Supports all data types except IM_CFLOAT. Can be applied on color images. \n
192
+ * Kernel is always IM_INT. Use kernel size odd for better results. \n
193
+ * Use -1 for don't care positions in kernel. Kernel values are added to image values, then \n
194
+ * you can use the maximum or the minimum within the kernel area. \n
195
+ * No border extensions are used.
196
+ * All the gray morphology operations use this function. \n
197
+ * If the kernel image attribute "Description" exists it is used by the counter.
198
+ *
199
+ * \verbatim im.ProcessGrayMorphConvolve(src_image: imImage, dst_image: imImage, kernel: imImage, ismax: boolean) -> counter: boolean [in Lua 5] \endverbatim
200
+ * \verbatim im.ProcessGrayMorphConvolveNew(image: imImage, kernel: imImage, ismax: boolean) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
201
+ * \ingroup morphgray */
202
+ int imProcessGrayMorphConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel, int ismax);
203
+
204
+ /** Gray morphology convolution with a kernel full of "0"s and use minimum value.
205
+ *
206
+ * \verbatim im.ProcessGrayMorphErode(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
207
+ * \verbatim im.ProcessGrayMorphErodeNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
208
+ * \ingroup morphgray */
209
+ int imProcessGrayMorphErode(const imImage* src_image, imImage* dst_image, int kernel_size);
210
+
211
+ /** Gray morphology convolution with a kernel full of "0"s and use maximum value.
212
+ *
213
+ * \verbatim im.ProcessGrayMorphDilate(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
214
+ * \verbatim im.ProcessGrayMorphDilateNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
215
+ * \ingroup morphgray */
216
+ int imProcessGrayMorphDilate(const imImage* src_image, imImage* dst_image, int kernel_size);
217
+
218
+ /** Erode+Dilate.
219
+ *
220
+ * \verbatim im.ProcessGrayMorphOpen(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
221
+ * \verbatim im.ProcessGrayMorphOpenNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
222
+ * \ingroup morphgray */
223
+ int imProcessGrayMorphOpen(const imImage* src_image, imImage* dst_image, int kernel_size);
224
+
225
+ /** Dilate+Erode.
226
+ *
227
+ * \verbatim im.ProcessGrayMorphClose(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
228
+ * \verbatim im.ProcessGrayMorphCloseNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
229
+ * \ingroup morphgray */
230
+ int imProcessGrayMorphClose(const imImage* src_image, imImage* dst_image, int kernel_size);
231
+
232
+ /** Open+Difference.
233
+ *
234
+ * \verbatim im.ProcessGrayMorphTopHat(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
235
+ * \verbatim im.ProcessGrayMorphTopHatNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
236
+ * \ingroup morphgray */
237
+ int imProcessGrayMorphTopHat(const imImage* src_image, imImage* dst_image, int kernel_size);
238
+
239
+ /** Close+Difference.
240
+ *
241
+ * \verbatim im.ProcessGrayMorphWell(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
242
+ * \verbatim im.ProcessGrayMorphWellNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
243
+ * \ingroup morphgray */
244
+ int imProcessGrayMorphWell(const imImage* src_image, imImage* dst_image, int kernel_size);
245
+
246
+ /** Difference(Erode, Dilate).
247
+ *
248
+ * \verbatim im.ProcessGrayMorphGradient(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
249
+ * \verbatim im.ProcessGrayMorphGradientNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
250
+ * \ingroup morphgray */
251
+ int imProcessGrayMorphGradient(const imImage* src_image, imImage* dst_image, int kernel_size);
252
+
253
+
254
+
255
+ /** \defgroup morphbin Morphology Operations for Binary Images
256
+ * \par
257
+ * See \ref im_process_loc.h
258
+ * \ingroup process */
259
+
260
+ /** Base binary morphology convolution. \n
261
+ * Images are all IM_BINARY. Kernel is IM_INT, but values can be only 1, 0 or -1. Use kernel size odd for better results. \n
262
+ * Hit white means hit=1 and miss=0, or else hit=0 and miss=1. \n
263
+ * Use -1 for don't care positions in kernel. Kernel values are simply compared with image values. \n
264
+ * The operation can be repeated by a number of iterations.
265
+ * The border is zero extended. \n
266
+ * Almost all the binary morphology operations use this function.\n
267
+ * If the kernel image attribute "Description" exists it is used by the counter.
268
+ *
269
+ * \verbatim im.ProcessBinMorphConvolve(src_image: imImage, dst_image: imImage, kernel: imImage, hit_white: boolean, iter: number) -> counter: boolean [in Lua 5] \endverbatim
270
+ * \verbatim im.ProcessBinMorphConvolveNew(image: imImage, kernel: imImage, hit_white: boolean, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
271
+ * \ingroup morphbin */
272
+ int imProcessBinMorphConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel, int hit_white, int iter);
273
+
274
+ /** Binary morphology convolution with a kernel full of "1"s and hit white.
275
+ *
276
+ * \verbatim im.ProcessBinMorphErode(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
277
+ * \verbatim im.ProcessBinMorphErodeNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
278
+ * \ingroup morphbin */
279
+ int imProcessBinMorphErode(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
280
+
281
+ /** Binary morphology convolution with a kernel full of "0"s and hit black.
282
+ *
283
+ * \verbatim im.ProcessBinMorphDilate(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
284
+ * \verbatim im.ProcessBinMorphDilateNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
285
+ * \ingroup morphbin */
286
+ int imProcessBinMorphDilate(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
287
+
288
+ /** Erode+Dilate.
289
+ * When iteration is more than one it means Erode+Erode+Erode+...+Dilate+Dilate+Dilate+...
290
+ *
291
+ * \verbatim im.ProcessBinMorphOpen(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
292
+ * \verbatim im.ProcessBinMorphOpenNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
293
+ * \ingroup morphbin */
294
+ int imProcessBinMorphOpen(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
295
+
296
+ /** Dilate+Erode.
297
+ *
298
+ * \verbatim im.ProcessBinMorphClose(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
299
+ * \verbatim im.ProcessBinMorphCloseNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
300
+ * \ingroup morphbin */
301
+ int imProcessBinMorphClose(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
302
+
303
+ /** Erode+Difference. \n
304
+ * The difference from the source image is applied only once.
305
+ *
306
+ * \verbatim im.ProcessBinMorphOutline(src_image: imImage, dst_image: imImage, kernel_size: number, iter: number) -> counter: boolean [in Lua 5] \endverbatim
307
+ * \verbatim im.ProcessBinMorphOutlineNew(image: imImage, kernel_size: number, iter: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
308
+ * \ingroup morphbin */
309
+ int imProcessBinMorphOutline(const imImage* src_image, imImage* dst_image, int kernel_size, int iter);
310
+
311
+ /** Thins the supplied binary image using Rosenfeld's parallel thinning algorithm. \n
312
+ * Reference: \n
313
+ * "Efficient Binary Image Thinning using Neighborhood Maps" \n
314
+ * by Joseph M. Cychosz, 3ksnn64@ecn.purdue.edu \n
315
+ * in "Graphics Gems IV", Academic Press, 1994
316
+ *
317
+ * \verbatim im.ProcessBinMorphThin(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
318
+ * \verbatim im.ProcessBinMorphThinNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
319
+ * \ingroup morphbin */
320
+ void imProcessBinMorphThin(const imImage* src_image, imImage* dst_image);
321
+
322
+
323
+
324
+ /** \defgroup rank Rank Convolution Operations
325
+ * \par
326
+ * All the rank convolution use the same base function. Near the border the base function
327
+ * includes only the real image pixels in the rank. No border extensions are used.
328
+ * \par
329
+ * See \ref im_process_loc.h
330
+ * \ingroup process */
331
+
332
+ /** Rank convolution using the median value. \n
333
+ * Returns zero if the counter aborted. \n
334
+ * Supports all data types except IM_CFLOAT. Can be applied on color images.
335
+ *
336
+ * \verbatim im.ProcessMedianConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
337
+ * \verbatim im.ProcessMedianConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
338
+ * \ingroup rank */
339
+ int imProcessMedianConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
340
+
341
+ /** Rank convolution using (maximum-minimum) value. \n
342
+ * Returns zero if the counter aborted. \n
343
+ * Supports all data types except IM_CFLOAT. Can be applied on color images.
344
+ *
345
+ * \verbatim im.ProcessRangeConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
346
+ * \verbatim im.ProcessRangeConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
347
+ * \ingroup rank */
348
+ int imProcessRangeConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
349
+
350
+ /** Rank convolution using the closest maximum or minimum value. \n
351
+ * Returns zero if the counter aborted. \n
352
+ * Supports all data types except IM_CFLOAT. Can be applied on color images.
353
+ *
354
+ * \verbatim im.ProcessRankClosestConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
355
+ * \verbatim im.ProcessRankClosestConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
356
+ * \ingroup rank */
357
+ int imProcessRankClosestConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
358
+
359
+ /** Rank convolution using the maximum value. \n
360
+ * Returns zero if the counter aborted. \n
361
+ * Supports all data types except IM_CFLOAT. Can be applied on color images.
362
+ *
363
+ * \verbatim im.ProcessRankMaxConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
364
+ * \verbatim im.ProcessRankMaxConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
365
+ * \ingroup rank */
366
+ int imProcessRankMaxConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
367
+
368
+ /** Rank convolution using the minimum value. \n
369
+ * Returns zero if the counter aborted. \n
370
+ * Supports all data types except IM_CFLOAT. Can be applied on color images.
371
+ *
372
+ * \verbatim im.ProcessRankMinConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
373
+ * \verbatim im.ProcessRankMinConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
374
+ * \ingroup rank */
375
+ int imProcessRankMinConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
376
+
377
+ /** Threshold using a rank convolution with a range contrast function. \n
378
+ * Supports all integer IM_GRAY images as source, and IM_BINARY as destiny. \n
379
+ * Local variable threshold by the method of Bernsen. \n
380
+ * Extracted from XITE, Copyright 1991, Blab, UiO \n
381
+ * http://www.ifi.uio.no/~blab/Software/Xite/
382
+ \verbatim
383
+ Reference:
384
+ Bernsen, J: "Dynamic thresholding of grey-level images"
385
+ Proc. of the 8th ICPR, Paris, Oct 1986, 1251-1255.
386
+ Author: Oivind Due Trier
387
+ \endverbatim
388
+ * Returns zero if the counter aborted.
389
+ *
390
+ * \verbatim im.ProcessRangeContrastThreshold(src_image: imImage, dst_image: imImage, kernel_size: number, min_range: number) -> counter: boolean [in Lua 5] \endverbatim
391
+ * \verbatim im.ProcessRangeContrastThresholdNew(image: imImage, kernel_size: number, min_range: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
392
+ * \ingroup threshold */
393
+ int imProcessRangeContrastThreshold(const imImage* src_image, imImage* dst_image, int kernel_size, int min_range);
394
+
395
+ /** Threshold using a rank convolution with a local max function. \n
396
+ * Returns zero if the counter aborted. \n
397
+ * Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
398
+ *
399
+ * \verbatim im.ProcessLocalMaxThreshold(src_image: imImage, dst_image: imImage, kernel_size: number, min_level: number) -> counter: boolean [in Lua 5] \endverbatim
400
+ * \verbatim im.ProcessLocalMaxThresholdNew(image: imImage, kernel_size: number, min_level: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
401
+ * \ingroup threshold */
402
+ int imProcessLocalMaxThreshold(const imImage* src_image, imImage* dst_image, int kernel_size, int min_level);
403
+
404
+
405
+
406
+ /** \defgroup convolve Convolution Operations
407
+ * \par
408
+ * See \ref im_process_loc.h
409
+ * \ingroup process */
410
+
411
+ /** Base Convolution with a kernel. \n
412
+ * Kernel can be IM_INT or IM_FLOAT, but always IM_GRAY. Use kernel size odd for better results. \n
413
+ * Supports all data types. The border is mirrored. \n
414
+ * Returns zero if the counter aborted. Most of the convolutions use this function.\n
415
+ * If the kernel image attribute "Description" exists it is used by the counter.
416
+ *
417
+ * \verbatim im.ProcessConvolve(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
418
+ * \verbatim im.ProcessConvolveNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
419
+ * \ingroup convolve */
420
+ int imProcessConvolve(const imImage* src_image, imImage* dst_image, const imImage* kernel);
421
+
422
+ /** Base convolution when the kernel is separable. Only the first line and the first column will be used. \n
423
+ * Returns zero if the counter aborted.\n
424
+ * If the kernel image attribute "Description" exists it is used by the counter.
425
+ *
426
+ * \verbatim im.ProcessConvolveSep(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
427
+ * \verbatim im.ProcessConvolveSepNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
428
+ * \ingroup convolve */
429
+ int imProcessConvolveSep(const imImage* src_image, imImage* dst_image, const imImage* kernel);
430
+
431
+ /** Base Convolution with two kernels. The result is the magnitude of the result of each convolution. \n
432
+ * Kernel can be IM_INT or IM_FLOAT, but always IM_GRAY. Use kernel size odd for better results. \n
433
+ * Supports all data types. The border is mirrored. \n
434
+ * Returns zero if the counter aborted. Most of the convolutions use this function.\n
435
+ * If the kernel image attribute "Description" exists it is used by the counter.
436
+ *
437
+ * \verbatim im.ProcessConvolveDual(src_image: imImage, dst_image: imImage, kernel1, kernel2: imImage) -> counter: boolean [in Lua 5] \endverbatim
438
+ * \verbatim im.ProcessConvolveDualNew(image: imImage, kernel1, kernel2: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
439
+ * \ingroup convolve */
440
+ int imProcessConvolveDual(const imImage* src_image, imImage* dst_image, const imImage *kernel1, const imImage *kernel2);
441
+
442
+ /** Repeats the convolution a number of times. \n
443
+ * Returns zero if the counter aborted.\n
444
+ * If the kernel image attribute "Description" exists it is used by the counter.
445
+ *
446
+ * \verbatim im.ProcessConvolveRep(src_image: imImage, dst_image: imImage, kernel: imImage, count: number) -> counter: boolean [in Lua 5] \endverbatim
447
+ * \verbatim im.ProcessConvolveRepNew(image: imImage, kernel: imImage, count: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
448
+ * \ingroup convolve */
449
+ int imProcessConvolveRep(const imImage* src_image, imImage* dst_image, const imImage* kernel, int count);
450
+
451
+ /** Convolve with a kernel rotating it 8 times and getting the absolute maximum value. \n
452
+ * Kernel must be square. \n
453
+ * The rotation is implemented only for kernel sizes 3x3, 5x5 and 7x7. \n
454
+ * Supports all data types except IM_CFLOAT.
455
+ * Returns zero if the counter aborted.\n
456
+ * If the kernel image attribute "Description" exists it is used by the counter.
457
+ *
458
+ * \verbatim im.ProcessCompassConvolve(src_image: imImage, dst_image: imImage, kernel: imImage) -> counter: boolean [in Lua 5] \endverbatim
459
+ * \verbatim im.ProcessCompassConvolveNew(image: imImage, kernel: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
460
+ * \ingroup convolve */
461
+ int imProcessCompassConvolve(const imImage* src_image, imImage* dst_image, imImage* kernel);
462
+
463
+ /** Utility function to rotate a kernel one time.
464
+ *
465
+ * \verbatim im.ProcessRotateKernel(kernel: imImage) [in Lua 5] \endverbatim
466
+ * \ingroup convolve */
467
+ void imProcessRotateKernel(imImage* kernel);
468
+
469
+ /** Difference(Gaussian1, Gaussian2). \n
470
+ * Supports all data types,
471
+ * but if source is IM_BYTE or IM_USHORT destiny image must be of type IM_INT.
472
+ *
473
+ * \verbatim im.ProcessDiffOfGaussianConvolve(src_image: imImage, dst_image: imImage, stddev1: number, stddev2: number) -> counter: boolean [in Lua 5] \endverbatim
474
+ * \verbatim im.ProcessDiffOfGaussianConvolveNew(image: imImage, stddev1: number, stddev2: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
475
+ * \ingroup convolve */
476
+ int imProcessDiffOfGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev1, float stddev2);
477
+
478
+ /** Convolution with a laplacian of a gaussian kernel. \n
479
+ * Supports all data types,
480
+ * but if source is IM_BYTE or IM_USHORT destiny image must be of type IM_INT.
481
+ *
482
+ * \verbatim im.ProcessLapOfGaussianConvolve(src_image: imImage, dst_image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
483
+ * \verbatim im.ProcessLapOfGaussianConvolveNew(image: imImage, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
484
+ * \ingroup convolve */
485
+ int imProcessLapOfGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev);
486
+
487
+ /** Convolution with a kernel full of "1"s inside a circle. \n
488
+ * Supports all data types.
489
+ *
490
+ * \verbatim im.ProcessMeanConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
491
+ * \verbatim im.ProcessMeanConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
492
+ * \ingroup convolve */
493
+ int imProcessMeanConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
494
+
495
+ /** Convolution with a float gaussian kernel. \n
496
+ * If sdtdev is negative its magnitude will be used as the kernel size. \n
497
+ * Supports all data types.
498
+ *
499
+ * \verbatim im.ProcessGaussianConvolve(src_image: imImage, dst_image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
500
+ * \verbatim im.ProcessGaussianConvolveNew(image: imImage, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
501
+ * \ingroup convolve */
502
+ int imProcessGaussianConvolve(const imImage* src_image, imImage* dst_image, float stddev);
503
+
504
+ /** Convolution with a barlett kernel. \n
505
+ * Supports all data types.
506
+ *
507
+ * \verbatim im.ProcessBarlettConvolve(src_image: imImage, dst_image: imImage, kernel_size: number) -> counter: boolean [in Lua 5] \endverbatim
508
+ * \verbatim im.ProcessBarlettConvolveNew(image: imImage, kernel_size: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
509
+ * \ingroup convolve */
510
+ int imProcessBarlettConvolve(const imImage* src_image, imImage* dst_image, int kernel_size);
511
+
512
+ /** Magnitude of the sobel convolution. \n
513
+ * Supports all data types.
514
+ *
515
+ * \verbatim im.ProcessSobelConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
516
+ * \verbatim im.ProcessSobelConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
517
+ * \ingroup convolve */
518
+ int imProcessSobelConvolve(const imImage* src_image, imImage* dst_image);
519
+
520
+ /** Magnitude of the prewitt convolution. \n
521
+ * Supports all data types.
522
+ *
523
+ * \verbatim im.ProcessPrewittConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
524
+ * \verbatim im.ProcessPrewittConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
525
+ * \ingroup convolve */
526
+ int imProcessPrewittConvolve(const imImage* src_image, imImage* dst_image);
527
+
528
+ /** Spline edge dectection. \n
529
+ * Supports all data types.
530
+ *
531
+ * \verbatim im.ProcessSplineEdgeConvolve(src_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
532
+ * \verbatim im.ProcessSplineEdgeConvolveNew(image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
533
+ * \ingroup convolve */
534
+ int imProcessSplineEdgeConvolve(const imImage* src_image, imImage* dst_image);
535
+
536
+ /** Finds the zero crossings of IM_INT and IM_FLOAT images. Crossings are marked with non zero values
537
+ * indicating the intensity of the edge. It is usually used after a second derivative, laplace. \n
538
+ * Extracted from XITE, Copyright 1991, Blab, UiO \n
539
+ * http://www.ifi.uio.no/~blab/Software/Xite/
540
+ *
541
+ * \verbatim im.ProcessZeroCrossing(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
542
+ * \verbatim im.ProcessZeroCrossingNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
543
+ * \ingroup convolve */
544
+ void imProcessZeroCrossing(const imImage* src_image, imImage* dst_image);
545
+
546
+ /** First part of the Canny edge detector. Includes the gaussian filtering and the nonmax suppression. \n
547
+ * After using this you could apply a Hysteresis Threshold, see \ref imProcessHysteresisThreshold. \n
548
+ * Image must be IM_BYTE/IM_GRAY. \n
549
+ * Implementation from the book:
550
+ \verbatim
551
+ J. R. Parker
552
+ "Algoritms for Image Processing and Computer Vision"
553
+ WILEY
554
+ \endverbatim
555
+ *
556
+ * \verbatim im.ProcessCanny(src_image: imImage, dst_image: imImage, stddev: number) [in Lua 5] \endverbatim
557
+ * \verbatim im.ProcessCannyNew(image: imImage, stddev: number) -> new_image: imImage [in Lua 5] \endverbatim
558
+ * \ingroup convolve */
559
+ void imProcessCanny(const imImage* src_image, imImage* dst_image, float stddev);
560
+
561
+ /** Calculates the kernel size given the standard deviation. \n
562
+ * If sdtdev is negative its magnitude will be used as the kernel size.
563
+ *
564
+ * \verbatim im.GaussianStdDev2KernelSize(stddev: number) -> kernel_size: number [in Lua 5] \endverbatim
565
+ * \ingroup convolve */
566
+ int imGaussianStdDev2KernelSize(float stddev);
567
+
568
+ /** Calculates the standard deviation given the kernel size.
569
+ *
570
+ * \verbatim im.GaussianKernelSize2StdDev(kernel_size: number) -> stddev: number [in Lua 5] \endverbatim
571
+ * \ingroup convolve */
572
+ float imGaussianKernelSize2StdDev(int kernel_size);
573
+
574
+ /** Edge enhancement using Unsharp mask. stddev control the gaussian filter,
575
+ * amount controls how much the edges will enhance the image (0<amount<1), and
576
+ * threshold controls which edges will be considered, it compares to twice of the absolute size of the edge.
577
+ * Although very similar to \ref imProcessSharp, produces better results.
578
+ *
579
+ * \verbatim im.ProcessUnsharp(src_image: imImage, dst_image: imImage, stddev: number, amount: number, threshold: number) [in Lua 5] \endverbatim
580
+ * \verbatim im.ProcessUnsharpNew(image: imImage, stddev: number, amount: number, threshold: number) -> new_image: imImage [in Lua 5] \endverbatim
581
+ * \ingroup convolve */
582
+ int imProcessUnsharp(const imImage* src_image, imImage* dst_image, float stddev, float amount, float threshold);
583
+
584
+ /** Edge enhancement using Laplacian8 mask.
585
+ * amount controls how much the edges will enhance the image (0<amount<1), and
586
+ * threshold controls which edges will be considered, it compares to twice of the absolute size of the edge.
587
+ *
588
+ * \verbatim im.ProcessSharp(src_image: imImage, dst_image: imImage, amount: number, threshold: number) [in Lua 5] \endverbatim
589
+ * \verbatim im.ProcessSharpNew(image: imImage, amount: number, threshold: number) -> new_image: imImage [in Lua 5] \endverbatim
590
+ * \ingroup convolve */
591
+ int imProcessSharp(const imImage* src_image, imImage* dst_image, float amount, float threshold);
592
+
593
+ /** Edge enhancement using a given kernel.
594
+ * If kernel has all positive values, then the unsharp technique is used, else sharp is used.
595
+ * amount controls how much the edges will enhance the image (0<amount<1), and
596
+ * threshold controls which edges will be considered, it compares to twice of the absolute size of the edge.
597
+ *
598
+ * \verbatim im.ProcessSharp(src_image: imImage, dst_image: imImage, amount: number, threshold: number) [in Lua 5] \endverbatim
599
+ * \verbatim im.ProcessSharpNew(image: imImage, amount: number, threshold: number) -> new_image: imImage [in Lua 5] \endverbatim
600
+ * \ingroup convolve */
601
+ int imProcessSharpKernel(const imImage* src_image, const imImage* kernel, imImage* dst_image, float amount, float threshold);
602
+
603
+
604
+ #if defined(__cplusplus)
605
+ }
606
+ #endif
607
+
608
+ #endif