ruby-iup 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (323) hide show
  1. data/Rakefile +97 -0
  2. data/doc/README +10 -0
  3. data/doc/build_install.txt +77 -0
  4. data/examples/README +16 -0
  5. data/examples/ctrl/cbox.rb +221 -0
  6. data/examples/ctrl/checkboard.rb +33 -0
  7. data/examples/ctrl/degrade.rb +73 -0
  8. data/examples/ctrl/example1.rb +53 -0
  9. data/examples/ctrl/example2.rb +39 -0
  10. data/examples/ctrl/iupcolorbar.rb +95 -0
  11. data/examples/ctrl/iupcolorbrowser.rb +45 -0
  12. data/examples/ctrl/iupdial.rb +117 -0
  13. data/examples/ctrl/iupgauge.rb +242 -0
  14. data/examples/ctrl/iupgetcolor.rb +8 -0
  15. data/examples/ctrl/iupgetparam.rb +62 -0
  16. data/examples/ctrl/iupglcanvas.rb +172 -0
  17. data/examples/ctrl/iupmask.rb +15 -0
  18. data/examples/ctrl/iupmatrix.rb +39 -0
  19. data/examples/ctrl/iupplot2.rb +603 -0
  20. data/examples/ctrl/iuptabs.rb +22 -0
  21. data/examples/ctrl/iuptree.rb +190 -0
  22. data/examples/ctrl/iupval.rb +71 -0
  23. data/examples/ctrl/numbering.rb +46 -0
  24. data/examples/ctrl/sample.rb +166 -0
  25. data/examples/dlg/iupalarm.rb +14 -0
  26. data/examples/dlg/iupfiledlg.rb +19 -0
  27. data/examples/dlg/iupgetfile.rb +19 -0
  28. data/examples/dlg/iuplistdialog.rb +26 -0
  29. data/examples/dlg/iupmessage.rb +5 -0
  30. data/examples/dlg/iupscanf.rb +17 -0
  31. data/examples/elem/iupbutton.rb +197 -0
  32. data/examples/elem/iupcanvas.rb +27 -0
  33. data/examples/elem/iupcanvas2.rb +113 -0
  34. data/examples/elem/iupcanvas3.rb +62 -0
  35. data/examples/elem/iupdialog.rb +71 -0
  36. data/examples/elem/iupdialog2.rb +25 -0
  37. data/examples/elem/iupfill.rb +51 -0
  38. data/examples/elem/iupframe.rb +25 -0
  39. data/examples/elem/iuphbox.rb +68 -0
  40. data/examples/elem/iupimage.rb +113 -0
  41. data/examples/elem/iupitem.rb +60 -0
  42. data/examples/elem/iuplabel.rb +57 -0
  43. data/examples/elem/iuplist.rb +41 -0
  44. data/examples/elem/iuplist2.rb +125 -0
  45. data/examples/elem/iupmenu.rb +32 -0
  46. data/examples/elem/iupmultiline.rb +24 -0
  47. data/examples/elem/iupmultiline2.rb +156 -0
  48. data/examples/elem/iupradio.rb +32 -0
  49. data/examples/elem/iupseparator.rb +81 -0
  50. data/examples/elem/iupsubmenu.rb +85 -0
  51. data/examples/elem/iuptext.rb +61 -0
  52. data/examples/elem/iuptimer.rb +36 -0
  53. data/examples/elem/iuptoggle.rb +110 -0
  54. data/examples/elem/iupvbox.rb +87 -0
  55. data/examples/elem/iupzbox.rb +60 -0
  56. data/examples/elem/mdisample.rb +376 -0
  57. data/examples/elem/progressbar.rb +294 -0
  58. data/examples/elem/scrollbar.rb +66 -0
  59. data/examples/elem/tray.rb +90 -0
  60. data/examples/func/iupgetattribute.rb +32 -0
  61. data/examples/func/iupidle.rb +48 -0
  62. data/ext/extconf.rb +27 -0
  63. data/ext/iup-linux/include/cd.h +494 -0
  64. data/ext/iup-linux/include/cd_canvas.hpp +358 -0
  65. data/ext/iup-linux/include/cd_old.h +158 -0
  66. data/ext/iup-linux/include/cd_private.h +362 -0
  67. data/ext/iup-linux/include/cdcgm.h +34 -0
  68. data/ext/iup-linux/include/cdclipbd.h +22 -0
  69. data/ext/iup-linux/include/cddbuf.h +23 -0
  70. data/ext/iup-linux/include/cddebug.h +24 -0
  71. data/ext/iup-linux/include/cddgn.h +23 -0
  72. data/ext/iup-linux/include/cddxf.h +22 -0
  73. data/ext/iup-linux/include/cdemf.h +22 -0
  74. data/ext/iup-linux/include/cdgdiplus.h +29 -0
  75. data/ext/iup-linux/include/cdimage.h +23 -0
  76. data/ext/iup-linux/include/cdirgb.h +30 -0
  77. data/ext/iup-linux/include/cdiup.h +22 -0
  78. data/ext/iup-linux/include/cdlua.h +39 -0
  79. data/ext/iup-linux/include/cdlua3_private.h +120 -0
  80. data/ext/iup-linux/include/cdlua5_private.h +141 -0
  81. data/ext/iup-linux/include/cdluaim.h +24 -0
  82. data/ext/iup-linux/include/cdluaiup.h +27 -0
  83. data/ext/iup-linux/include/cdluapdf.h +27 -0
  84. data/ext/iup-linux/include/cdmf.h +24 -0
  85. data/ext/iup-linux/include/cdmf_private.h +32 -0
  86. data/ext/iup-linux/include/cdnative.h +26 -0
  87. data/ext/iup-linux/include/cdpdf.h +38 -0
  88. data/ext/iup-linux/include/cdpicture.h +22 -0
  89. data/ext/iup-linux/include/cdprint.h +23 -0
  90. data/ext/iup-linux/include/cdps.h +37 -0
  91. data/ext/iup-linux/include/cdwmf.h +22 -0
  92. data/ext/iup-linux/include/im.h +282 -0
  93. data/ext/iup-linux/include/im_attrib.h +116 -0
  94. data/ext/iup-linux/include/im_attrib_flat.h +39 -0
  95. data/ext/iup-linux/include/im_binfile.h +214 -0
  96. data/ext/iup-linux/include/im_capture.h +365 -0
  97. data/ext/iup-linux/include/im_color.h +465 -0
  98. data/ext/iup-linux/include/im_colorhsi.h +61 -0
  99. data/ext/iup-linux/include/im_complex.h +160 -0
  100. data/ext/iup-linux/include/im_convert.h +127 -0
  101. data/ext/iup-linux/include/im_counter.h +69 -0
  102. data/ext/iup-linux/include/im_dib.h +195 -0
  103. data/ext/iup-linux/include/im_file.h +111 -0
  104. data/ext/iup-linux/include/im_format.h +79 -0
  105. data/ext/iup-linux/include/im_format_all.h +576 -0
  106. data/ext/iup-linux/include/im_format_avi.h +87 -0
  107. data/ext/iup-linux/include/im_format_ecw.h +93 -0
  108. data/ext/iup-linux/include/im_format_jp2.h +78 -0
  109. data/ext/iup-linux/include/im_format_raw.h +64 -0
  110. data/ext/iup-linux/include/im_format_wmv.h +100 -0
  111. data/ext/iup-linux/include/im_image.h +403 -0
  112. data/ext/iup-linux/include/im_kernel.h +315 -0
  113. data/ext/iup-linux/include/im_lib.h +191 -0
  114. data/ext/iup-linux/include/im_math.h +368 -0
  115. data/ext/iup-linux/include/im_math_op.h +219 -0
  116. data/ext/iup-linux/include/im_palette.h +172 -0
  117. data/ext/iup-linux/include/im_plus.h +73 -0
  118. data/ext/iup-linux/include/im_process.h +35 -0
  119. data/ext/iup-linux/include/im_process_ana.h +221 -0
  120. data/ext/iup-linux/include/im_process_glo.h +170 -0
  121. data/ext/iup-linux/include/im_process_loc.h +577 -0
  122. data/ext/iup-linux/include/im_process_pon.h +712 -0
  123. data/ext/iup-linux/include/im_raw.h +34 -0
  124. data/ext/iup-linux/include/im_util.h +277 -0
  125. data/ext/iup-linux/include/imlua.h +83 -0
  126. data/ext/iup-linux/include/iup.h +255 -0
  127. data/ext/iup-linux/include/iup_pplot.h +40 -0
  128. data/ext/iup-linux/include/iupcb.h +25 -0
  129. data/ext/iup-linux/include/iupcbox.h +23 -0
  130. data/ext/iup-linux/include/iupcbs.h +42 -0
  131. data/ext/iup-linux/include/iupcells.h +130 -0
  132. data/ext/iup-linux/include/iupcolorbar.h +126 -0
  133. data/ext/iup-linux/include/iupcompat.h +62 -0
  134. data/ext/iup-linux/include/iupcontrols.h +40 -0
  135. data/ext/iup-linux/include/iupcpi.h +76 -0
  136. data/ext/iup-linux/include/iupdef.h +520 -0
  137. data/ext/iup-linux/include/iupdial.h +64 -0
  138. data/ext/iup-linux/include/iupgauge.h +57 -0
  139. data/ext/iup-linux/include/iupgc.h +20 -0
  140. data/ext/iup-linux/include/iupgetparam.h +27 -0
  141. data/ext/iup-linux/include/iupgl.h +101 -0
  142. data/ext/iup-linux/include/iupim.h +21 -0
  143. data/ext/iup-linux/include/iupkey.h +290 -0
  144. data/ext/iup-linux/include/iuplua.h +41 -0
  145. data/ext/iup-linux/include/iuplua_pplot.h +26 -0
  146. data/ext/iup-linux/include/iupluacontrols.h +27 -0
  147. data/ext/iup-linux/include/iupluagl.h +26 -0
  148. data/ext/iup-linux/include/iupluaim.h +26 -0
  149. data/ext/iup-linux/include/iupluaole.h +26 -0
  150. data/ext/iup-linux/include/iupmask.h +52 -0
  151. data/ext/iup-linux/include/iupmatrix.h +69 -0
  152. data/ext/iup-linux/include/iupole.h +24 -0
  153. data/ext/iup-linux/include/iupsbox.h +20 -0
  154. data/ext/iup-linux/include/iupspeech.h +23 -0
  155. data/ext/iup-linux/include/iupspin.h +21 -0
  156. data/ext/iup-linux/include/iuptabs.h +79 -0
  157. data/ext/iup-linux/include/iuptree.h +93 -0
  158. data/ext/iup-linux/include/iupval.h +46 -0
  159. data/ext/iup-linux/include/lauxlib.h +174 -0
  160. data/ext/iup-linux/include/lua.h +388 -0
  161. data/ext/iup-linux/include/lua.hpp +9 -0
  162. data/ext/iup-linux/include/luaconf.h +763 -0
  163. data/ext/iup-linux/include/lualib.h +53 -0
  164. data/ext/iup-linux/include/old_im.h +59 -0
  165. data/ext/iup-linux/include/wd.h +78 -0
  166. data/ext/iup-linux/include/wd_old.h +85 -0
  167. data/ext/iup-linux/libcd.so +0 -0
  168. data/ext/iup-linux/libcdcontextplus.so +0 -0
  169. data/ext/iup-linux/libcdluacontextplus51.so +0 -0
  170. data/ext/iup-linux/libcdpdf.so +0 -0
  171. data/ext/iup-linux/libfreetype.so +0 -0
  172. data/ext/iup-linux/libim.so +0 -0
  173. data/ext/iup-linux/libim_fftw.so +0 -0
  174. data/ext/iup-linux/libim_jp2.so +0 -0
  175. data/ext/iup-linux/libim_process.so +0 -0
  176. data/ext/iup-linux/libiup.so +0 -0
  177. data/ext/iup-linux/libiup_pplot.so +0 -0
  178. data/ext/iup-linux/libiupcd.so +0 -0
  179. data/ext/iup-linux/libiupcontrols.so +0 -0
  180. data/ext/iup-linux/libiupgl.so +0 -0
  181. data/ext/iup-linux/libiupim.so +0 -0
  182. data/ext/iup-linux/libiupimglib.so +0 -0
  183. data/ext/iup-linux/libpdflib.so +0 -0
  184. data/ext/iup-win32/cd.dll +0 -0
  185. data/ext/iup-win32/cd.lib +0 -0
  186. data/ext/iup-win32/cdcontextplus.dll +0 -0
  187. data/ext/iup-win32/cdcontextplus.lib +0 -0
  188. data/ext/iup-win32/cdlua51.lib +0 -0
  189. data/ext/iup-win32/cdluacontextplus51.lib +0 -0
  190. data/ext/iup-win32/cdluaim51.lib +0 -0
  191. data/ext/iup-win32/cdluapdf51.lib +0 -0
  192. data/ext/iup-win32/cdpdf.dll +0 -0
  193. data/ext/iup-win32/cdpdf.lib +0 -0
  194. data/ext/iup-win32/freetype6.dll +0 -0
  195. data/ext/iup-win32/freetype6.lib +0 -0
  196. data/ext/iup-win32/im.dll +0 -0
  197. data/ext/iup-win32/im_avi.dll +0 -0
  198. data/ext/iup-win32/im_capture.dll +0 -0
  199. data/ext/iup-win32/im_ecw.dll +0 -0
  200. data/ext/iup-win32/im_fftw.dll +0 -0
  201. data/ext/iup-win32/im_jp2.dll +0 -0
  202. data/ext/iup-win32/im_process.dll +0 -0
  203. data/ext/iup-win32/im_wmv.dll +0 -0
  204. data/ext/iup-win32/include/cd.h +494 -0
  205. data/ext/iup-win32/include/cd_canvas.hpp +358 -0
  206. data/ext/iup-win32/include/cd_old.h +158 -0
  207. data/ext/iup-win32/include/cd_private.h +362 -0
  208. data/ext/iup-win32/include/cdcgm.h +34 -0
  209. data/ext/iup-win32/include/cdclipbd.h +22 -0
  210. data/ext/iup-win32/include/cddbuf.h +23 -0
  211. data/ext/iup-win32/include/cddebug.h +24 -0
  212. data/ext/iup-win32/include/cddgn.h +23 -0
  213. data/ext/iup-win32/include/cddxf.h +22 -0
  214. data/ext/iup-win32/include/cdemf.h +22 -0
  215. data/ext/iup-win32/include/cdgdiplus.h +29 -0
  216. data/ext/iup-win32/include/cdimage.h +23 -0
  217. data/ext/iup-win32/include/cdirgb.h +30 -0
  218. data/ext/iup-win32/include/cdiup.h +22 -0
  219. data/ext/iup-win32/include/cdlua.h +39 -0
  220. data/ext/iup-win32/include/cdlua3_private.h +120 -0
  221. data/ext/iup-win32/include/cdlua5_private.h +141 -0
  222. data/ext/iup-win32/include/cdluaim.h +24 -0
  223. data/ext/iup-win32/include/cdluaiup.h +27 -0
  224. data/ext/iup-win32/include/cdluapdf.h +27 -0
  225. data/ext/iup-win32/include/cdmf.h +24 -0
  226. data/ext/iup-win32/include/cdmf_private.h +32 -0
  227. data/ext/iup-win32/include/cdnative.h +26 -0
  228. data/ext/iup-win32/include/cdpdf.h +38 -0
  229. data/ext/iup-win32/include/cdpicture.h +22 -0
  230. data/ext/iup-win32/include/cdprint.h +23 -0
  231. data/ext/iup-win32/include/cdps.h +37 -0
  232. data/ext/iup-win32/include/cdwmf.h +22 -0
  233. data/ext/iup-win32/include/iup.h +255 -0
  234. data/ext/iup-win32/include/iup_pplot.h +40 -0
  235. data/ext/iup-win32/include/iupcb.h +25 -0
  236. data/ext/iup-win32/include/iupcbox.h +23 -0
  237. data/ext/iup-win32/include/iupcbs.h +42 -0
  238. data/ext/iup-win32/include/iupcells.h +130 -0
  239. data/ext/iup-win32/include/iupcolorbar.h +126 -0
  240. data/ext/iup-win32/include/iupcompat.h +62 -0
  241. data/ext/iup-win32/include/iupcontrols.h +40 -0
  242. data/ext/iup-win32/include/iupcpi.h +76 -0
  243. data/ext/iup-win32/include/iupdef.h +520 -0
  244. data/ext/iup-win32/include/iupdial.h +64 -0
  245. data/ext/iup-win32/include/iupgauge.h +57 -0
  246. data/ext/iup-win32/include/iupgc.h +20 -0
  247. data/ext/iup-win32/include/iupgetparam.h +27 -0
  248. data/ext/iup-win32/include/iupgl.h +101 -0
  249. data/ext/iup-win32/include/iupim.h +21 -0
  250. data/ext/iup-win32/include/iupkey.h +290 -0
  251. data/ext/iup-win32/include/iuplua.h +41 -0
  252. data/ext/iup-win32/include/iuplua_pplot.h +26 -0
  253. data/ext/iup-win32/include/iupluacontrols.h +27 -0
  254. data/ext/iup-win32/include/iupluagl.h +26 -0
  255. data/ext/iup-win32/include/iupluaim.h +26 -0
  256. data/ext/iup-win32/include/iupluaole.h +26 -0
  257. data/ext/iup-win32/include/iupmask.h +52 -0
  258. data/ext/iup-win32/include/iupmatrix.h +69 -0
  259. data/ext/iup-win32/include/iupole.h +24 -0
  260. data/ext/iup-win32/include/iupsbox.h +20 -0
  261. data/ext/iup-win32/include/iupspeech.h +23 -0
  262. data/ext/iup-win32/include/iupspin.h +21 -0
  263. data/ext/iup-win32/include/iuptabs.h +79 -0
  264. data/ext/iup-win32/include/iuptree.h +93 -0
  265. data/ext/iup-win32/include/iupval.h +46 -0
  266. data/ext/iup-win32/include/wd.h +78 -0
  267. data/ext/iup-win32/include/wd_old.h +85 -0
  268. data/ext/iup-win32/iup.dll +0 -0
  269. data/ext/iup-win32/iup.lib +0 -0
  270. data/ext/iup-win32/iup_pplot.dll +0 -0
  271. data/ext/iup-win32/iup_pplot.lib +0 -0
  272. data/ext/iup-win32/iupcd.dll +0 -0
  273. data/ext/iup-win32/iupcd.lib +0 -0
  274. data/ext/iup-win32/iupcontrols.dll +0 -0
  275. data/ext/iup-win32/iupcontrols.lib +0 -0
  276. data/ext/iup-win32/iupgl.dll +0 -0
  277. data/ext/iup-win32/iupgl.lib +0 -0
  278. data/ext/iup-win32/iupim.dll +0 -0
  279. data/ext/iup-win32/iupim.lib +0 -0
  280. data/ext/iup-win32/iupimglib.dll +0 -0
  281. data/ext/iup-win32/iupimglib.lib +0 -0
  282. data/ext/iup-win32/iuplua51.lib +0 -0
  283. data/ext/iup-win32/iuplua_pplot51.lib +0 -0
  284. data/ext/iup-win32/iupluacd51.lib +0 -0
  285. data/ext/iup-win32/iupluacontrols51.lib +0 -0
  286. data/ext/iup-win32/iupluagl51.lib +0 -0
  287. data/ext/iup-win32/iupluaim51.lib +0 -0
  288. data/ext/iup-win32/iupluaimglib51.lib +0 -0
  289. data/ext/iup-win32/iupluaole51.lib +0 -0
  290. data/ext/iup-win32/iupole.dll +0 -0
  291. data/ext/iup-win32/iupole.lib +0 -0
  292. data/ext/iup-win32/iupstub.lib +0 -0
  293. data/ext/iup-win32/pdflib.dll +0 -0
  294. data/ext/iup-win32/pdflib.lib +0 -0
  295. data/ext/iup.c +1261 -0
  296. data/ext/mkrf_conf.rb +72 -0
  297. data/ext/rb_cd.h +1525 -0
  298. data/ext/rb_iup.h +2446 -0
  299. data/ext/rb_iup_pplot.h +129 -0
  300. data/ext/rb_iupcb.h +13 -0
  301. data/ext/rb_iupcbox.h +40 -0
  302. data/ext/rb_iupcells.h +15 -0
  303. data/ext/rb_iupcolorbar.h +17 -0
  304. data/ext/rb_iupcompat.h +237 -0
  305. data/ext/rb_iupcontrols.h +28 -0
  306. data/ext/rb_iupdef.h +3 -0
  307. data/ext/rb_iupdial.h +24 -0
  308. data/ext/rb_iupgauge.h +15 -0
  309. data/ext/rb_iupgc.h +18 -0
  310. data/ext/rb_iupgetparam.h +72 -0
  311. data/ext/rb_iupgl.h +58 -0
  312. data/ext/rb_iupim.h +25 -0
  313. data/ext/rb_iupmask.h +189 -0
  314. data/ext/rb_iupmatrix.h +80 -0
  315. data/ext/rb_iupole.h +24 -0
  316. data/ext/rb_iupsbox.h +23 -0
  317. data/ext/rb_iupspeech.h +25 -0
  318. data/ext/rb_iupspin.h +29 -0
  319. data/ext/rb_iuptabs.h +29 -0
  320. data/ext/rb_iuptree.h +94 -0
  321. data/ext/rb_iupval.h +24 -0
  322. data/lib/README +1 -0
  323. metadata +391 -0
@@ -0,0 +1,712 @@
1
+ /** \file
2
+ * \brief Image Processing - Pontual Operations
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PROCESS_PON_H
8
+ #define __IM_PROCESS_PON_H
9
+
10
+ #include "im_image.h"
11
+
12
+ #if defined(__cplusplus)
13
+ extern "C" {
14
+ #endif
15
+
16
+
17
+
18
+ /** \defgroup arithm Arithmetic Operations
19
+ * \par
20
+ * Simple math operations for images.
21
+ * \par
22
+ * See \ref im_process_pon.h
23
+ * \ingroup process */
24
+
25
+ /** Unary Arithmetic Operations.
26
+ * Inverse and log may lead to math exceptions.
27
+ * \ingroup arithm */
28
+ enum imUnaryOp {
29
+ IM_UN_EQL, /**< equal = a */
30
+ IM_UN_ABS, /**< abssolute = |a| */
31
+ IM_UN_LESS, /**< less = -a */
32
+ IM_UN_INC, /**< increment += a */
33
+ IM_UN_INV, /**< invert = 1/a (#) */
34
+ IM_UN_SQR, /**< square = a*a */
35
+ IM_UN_SQRT, /**< square root = a^(1/2) */
36
+ IM_UN_LOG, /**< natural logarithm = ln(a) (#) */
37
+ IM_UN_EXP, /**< exponential = exp(a) */
38
+ IM_UN_SIN, /**< sine = sin(a) */
39
+ IM_UN_COS, /**< cosine = cos(a) */
40
+ IM_UN_CONJ, /**< complex conjugate = ar - ai*i */
41
+ IM_UN_CPXNORM /**< complex normalization by magnitude = a / cpxmag(a) */
42
+ };
43
+
44
+ /** Apply an arithmetic unary operation. \n
45
+ * Can be done in place, images must match size, does not need to match type.
46
+ *
47
+ * \verbatim im.ProcessUnArithmeticOp(src_image: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
48
+ * \verbatim im.ProcessUnArithmeticOpNew(image: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
49
+ * \ingroup arithm */
50
+ void imProcessUnArithmeticOp(const imImage* src_image, imImage* dst_image, int op);
51
+
52
+ /** Binary Arithmetic Operations.
53
+ * Inverse and log may lead to math exceptions.
54
+ * \ingroup arithm */
55
+ enum imBinaryOp {
56
+ IM_BIN_ADD, /**< add = a+b */
57
+ IM_BIN_SUB, /**< subtract = a-b */
58
+ IM_BIN_MUL, /**< multiply = a*b */
59
+ IM_BIN_DIV, /**< divide = a/b (#) */
60
+ IM_BIN_DIFF, /**< difference = |a-b| */
61
+ IM_BIN_POW, /**< power = a^b */
62
+ IM_BIN_MIN, /**< minimum = (a < b)? a: b */
63
+ IM_BIN_MAX /**< maximum = (a > b)? a: b */
64
+ };
65
+
66
+ /** Apply a binary arithmetic operation. \n
67
+ * Can be done in place, images must match size. \n
68
+ * Source images must match type, destiny image can be several types depending on source: \n
69
+ * \li byte -> byte, ushort, int, float
70
+ * \li ushort -> ushort, int, float
71
+ * \li int -> int, float
72
+ * \li float -> float
73
+ * \li complex -> complex
74
+ * One exception is that you can combine complex with float resulting complex.
75
+ *
76
+ * \verbatim im.ProcessArithmeticOp(src_image1: imImage, src_image2: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
77
+ * \verbatim im.ProcessArithmeticOpNew(image1: imImage, image2: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
78
+ * The New function will create a new image of the same type of the source images.
79
+ * \ingroup arithm */
80
+ void imProcessArithmeticOp(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int op);
81
+
82
+ /** Apply a binary arithmetic operation with a constant value. \n
83
+ * Can be done in place, images must match size. \n
84
+ * Destiny image can be several types depending on source: \n
85
+ * \li byte -> byte, ushort, int, float
86
+ * \li ushort -> byte, ushort, int, float
87
+ * \li int -> byte, ushort, int, float
88
+ * \li float -> float
89
+ * \li complex -> complex
90
+ * The constant value is type casted to an apropriate type before the operation.
91
+ *
92
+ * \verbatim im.ProcessArithmeticConstOp(src_image: imImage, src_const: number, dst_image: imImage, op: number) [in Lua 5] \endverbatim
93
+ * \verbatim im.ProcessArithmeticConstOpNew(image: imImage, src_const: number, op: number) -> new_image: imImage [in Lua 5] \endverbatim
94
+ * \ingroup arithm */
95
+ void imProcessArithmeticConstOp(const imImage* src_image, float src_const, imImage* dst_image, int op);
96
+
97
+ /** Blend two images using an alpha value = [a * alpha + b * (1 - alpha)]. \n
98
+ * Can be done in place, images must match size and type. \n
99
+ * alpha value must be in the interval [0.0 - 1.0].
100
+ *
101
+ * \verbatim im.ProcessBlendConst(src_image1: imImage, src_image2: imImage, dst_image: imImage, alpha: number) [in Lua 5] \endverbatim
102
+ * \verbatim im.ProcessBlendConstNew(image1: imImage, image2: imImage, alpha: number) -> new_image: imImage [in Lua 5] \endverbatim
103
+ * \ingroup arithm */
104
+ void imProcessBlendConst(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, float alpha);
105
+
106
+ /** Blend two images using an alpha channel = [a * alpha + b * (1 - alpha)]. \n
107
+ * Can be done in place, images must match size and type. \n
108
+ * alpha_image must have the same data type except for complex images that must be float, and color_space must be IM_GRAY.
109
+ * integer alpha values must be:
110
+ \verbatim
111
+ 0 - 255 IM_BYTE
112
+ 0 - 65535 IM_USHORT
113
+ 0 - 2147483647 IM_INT
114
+ \endverbatim
115
+ * that will be normalized to 0 - 1.
116
+ * \verbatim im.ProcessBlend(src_image1: imImage, src_image2: imImage, alpha_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
117
+ * \verbatim im.ProcessBlendNew(image1: imImage, image2: imImage, alpha_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
118
+ * \ingroup arithm */
119
+ void imProcessBlend(const imImage* src_image1, const imImage* src_image2, const imImage* alpha_image, imImage* dst_image);
120
+
121
+ /** Split a complex image into two images with real and imaginary parts \n
122
+ * or magnitude and phase parts (polar). \n
123
+ * Source image must be IM_CFLOAT, destiny images must be IM_FLOAT.
124
+ *
125
+ * \verbatim im.ProcessSplitComplex(src_image: imImage, dst_image1: imImage, dst_image2: imImage, do_polar: boolean) [in Lua 5] \endverbatim
126
+ * \verbatim im.ProcessSplitComplexNew(image: imImage, do_polar: boolean) -> dst_image1: imImage, dst_image2: imImage [in Lua 5] \endverbatim
127
+ * \ingroup arithm */
128
+ void imProcessSplitComplex(const imImage* src_image, imImage* dst_image1, imImage* dst_image2, int do_polar);
129
+
130
+ /** Merges two images as the real and imaginary parts of a complex image, \n
131
+ * or as magnitude and phase parts (polar = 1). \n
132
+ * Source images must be IM_FLOAT, destiny image must be IM_CFLOAT.
133
+ *
134
+ * \verbatim im.ProcessMergeComplex(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
135
+ * \verbatim im.ProcessMergeComplexNew(image1: imImage, image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
136
+ * \ingroup arithm */
137
+ void imProcessMergeComplex(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int polar);
138
+
139
+ /** Calculates the mean of multiple images. \n
140
+ * Images must match size and type.
141
+ *
142
+ * \verbatim im.ProcessMultipleMean(src_image_list: table of imImage, dst_image: imImage) [in Lua 5] \endverbatim
143
+ * \verbatim im.ProcessMultipleMeanNew(src_image_list: table of imImage) -> new_image: imImage [in Lua 5] \endverbatim
144
+ * \ingroup arithm */
145
+ void imProcessMultipleMean(const imImage** src_image_list, int src_image_count, imImage* dst_image);
146
+
147
+ /** Calculates the standard deviation of multiple images. \n
148
+ * Images must match size and type. Use \ref imProcessMultipleMean to calculate the mean_image.
149
+ *
150
+ * \verbatim im.ProcessMultipleStdDev(src_image_list: table of imImage, mean_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
151
+ * \verbatim im.ProcessMultipleStdDevNew(src_image_list: table of imImage, mean_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
152
+ * \ingroup arithm */
153
+ void imProcessMultipleStdDev(const imImage** src_image_list, int src_image_count, const imImage *mean_image, imImage* dst_image);
154
+
155
+ /** Calculates the auto-covariance of an image with the mean of a set of images. \n
156
+ * Images must match size and type. Returns zero if the counter aborted. \n
157
+ * Destiny is IM_FLOAT.
158
+ *
159
+ * \verbatim im.ProcessAutoCovariance(src_image: imImage, mean_image: imImage, dst_image: imImage) -> counter: boolean [in Lua 5] \endverbatim
160
+ * \verbatim im.ProcessAutoCovarianceNew(src_image: imImage, mean_image: imImage) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
161
+ * \ingroup arithm */
162
+ int imProcessAutoCovariance(const imImage* src_image, const imImage* mean_image, imImage* dst_image);
163
+
164
+ /** Multiplies the conjugate of one complex image with another complex image. \n
165
+ * Images must match size. Conj(img1) * img2 \n
166
+ * Can be done in-place.
167
+ *
168
+ * \verbatim im.ProcessMultiplyConj(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
169
+ * \verbatim im.ProcessMultiplyConjNew(src_image1: imImage, src_image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
170
+ * \ingroup arithm */
171
+ void imProcessMultiplyConj(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
172
+
173
+
174
+
175
+ /** \defgroup quantize Additional Image Quantization Operations
176
+ * \par
177
+ * Additionally operations to the \ref imConvertColorSpace function.
178
+ * \par
179
+ * See \ref im_process_pon.h
180
+ * \ingroup process */
181
+
182
+ /** Converts a RGB image to a MAP image using uniform quantization
183
+ * with an optional 8x8 ordered dither. The RGB image must have data type IM_BYTE.
184
+ *
185
+ * \verbatim im.ProcessQuantizeRGBUniform(src_image: imImage, dst_image: imImage, do_dither: boolean) [in Lua 5] \endverbatim
186
+ * \verbatim im.ProcessQuantizeRGBUniformNew(src_image: imImage, do_dither: boolean) -> new_image: imImage [in Lua 5] \endverbatim
187
+ * \ingroup quantize */
188
+ void imProcessQuantizeRGBUniform(const imImage* src_image, imImage* dst_image, int do_dither);
189
+
190
+ /** Quantizes a gray scale image in less that 256 grays using uniform quantization. \n
191
+ * Both images must be IM_BYTE/IM_GRAY. Can be done in place.
192
+ *
193
+ * \verbatim im.ProcessQuantizeGrayUniform(src_image: imImage, dst_image: imImage, grays: number) [in Lua 5] \endverbatim
194
+ * \verbatim im.ProcessQuantizeGrayUniformNew(src_image: imImage, grays: number) -> new_image: imImage [in Lua 5] \endverbatim
195
+ * \ingroup quantize */
196
+ void imProcessQuantizeGrayUniform(const imImage* src_image, imImage* dst_image, int grays);
197
+
198
+
199
+
200
+ /** \defgroup histo Histogram Based Operations
201
+ * \par
202
+ * See \ref im_process_pon.h
203
+ * \ingroup process */
204
+
205
+ /** Performs an histogram expansion based on a percentage of the number of pixels. \n
206
+ * Percentage defines an amount of pixels to include at the lowest level and at the highest level.
207
+ * If its is zero only empty counts of the histogram will be considered. \n
208
+ * Images must be IM_BYTE/(IM_RGB or IM_GRAY). Can be done in place. \n
209
+ * To expand the gammut without using the histogram, by just specifing the lowest and highest levels
210
+ * use the \ref IM_GAMUT_EXPAND tone gammut operation (\ref imProcessToneGamut).
211
+ *
212
+ * \verbatim im.ProcessExpandHistogram(src_image: imImage, dst_image: imImage, percent: number) [in Lua 5] \endverbatim
213
+ * \verbatim im.ProcessExpandHistogramNew(src_image: imImage, percent: number) -> new_image: imImage [in Lua 5] \endverbatim
214
+ * \ingroup histo */
215
+ void imProcessExpandHistogram(const imImage* src_image, imImage* dst_image, float percent);
216
+
217
+ /** Performs an histogram equalization. \n
218
+ * Images must be IM_BYTE/(IM_RGB or IM_GRAY). Can be done in place.
219
+ *
220
+ * \verbatim im.ProcessEqualizeHistogram(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
221
+ * \verbatim im.ProcessEqualizeHistogramNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
222
+ * \ingroup histo */
223
+ void imProcessEqualizeHistogram(const imImage* src_image, imImage* dst_image);
224
+
225
+
226
+
227
+ /** \defgroup colorproc Color Processing Operations
228
+ * \par
229
+ * Operations to change the color components configuration.
230
+ * \par
231
+ * See \ref im_process_pon.h
232
+ * \ingroup process */
233
+
234
+ /** Split a RGB image into luma and chroma. \n
235
+ * Chroma is calculated as R-Y,G-Y,B-Y. Source image must be IM_RGB/IM_BYTE. \n
236
+ * luma image is IM_GRAY/IM_BYTE and chroma is IM_RGB/IM_BYTE. \n
237
+ * Source and destiny must have the same size.
238
+ *
239
+ * \verbatim im.ProcessSplitYChroma(src_image: imImage, y_image: imImage, chroma_image: imImage) [in Lua 5] \endverbatim
240
+ * \verbatim im.ProcessSplitYChromaNew(src_image: imImage) -> y_image: imImage, chroma_image: imImage [in Lua 5] \endverbatim
241
+ * \ingroup colorproc */
242
+ void imProcessSplitYChroma(const imImage* src_image, imImage* y_image, imImage* chroma_image);
243
+
244
+ /** Split a RGB image into HSI planes. \n
245
+ * Source image must be IM_RGB/IM_BYTE,IM_FLOAT. Destiny images are all IM_GRAY/IM_FLOAT. \n
246
+ * Source images must normalized to 0-1 if type is IM_FLOAT (\ref imProcessToneGamut can be used). See \ref hsi for a definition of the color conversion.\n
247
+ * Source and destiny must have the same size.
248
+ *
249
+ * \verbatim im.ProcessSplitHSI(src_image: imImage, h_image: imImage, s_image: imImage, i_image: imImage) [in Lua 5] \endverbatim
250
+ * \verbatim im.ProcessSplitHSINew(src_image: imImage) -> h_image: imImage, s_image: imImage, i_image: imImage [in Lua 5] \endverbatim
251
+ * \ingroup colorproc */
252
+ void imProcessSplitHSI(const imImage* src_image, imImage* h_image, imImage* s_image, imImage* i_image);
253
+
254
+ /** Merge HSI planes into a RGB image. \n
255
+ * Source images must be IM_GRAY/IM_FLOAT. Destiny image can be IM_RGB/IM_BYTE,IM_FLOAT. \n
256
+ * Source and destiny must have the same size. See \ref hsi for a definition of the color conversion.
257
+ *
258
+ * \verbatim im.ProcessMergeHSI(h_image: imImage, s_image: imImage, i_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
259
+ * \verbatim im.ProcessMergeHSINew(h_image: imImage, s_image: imImage, i_image: imImage) -> dst_image: imImage [in Lua 5] \endverbatim
260
+ * \ingroup colorproc */
261
+ void imProcessMergeHSI(const imImage* h_image, const imImage* s_image, const imImage* i_image, imImage* dst_image);
262
+
263
+ /** Split a multicomponent image into separate components.\n
264
+ * Destiny images must be IM_GRAY. Size and data types must be all the same.\n
265
+ * The number of destiny images must match the depth of the source image.
266
+ *
267
+ * \verbatim im.ProcessSplitComponents(src_image: imImage, dst_image_list: table of imImage) [in Lua 5] \endverbatim
268
+ * \verbatim im.ProcessSplitComponentsNew(src_image: imImage) -> dst_image_list: table of imImage [in Lua 5] \endverbatim
269
+ * \ingroup colorproc */
270
+ void imProcessSplitComponents(const imImage* src_image, imImage** dst_image_list);
271
+
272
+ /** Merges separate components into a multicomponent image.\n
273
+ * Source images must be IM_GRAY. Size and data types must be all the same.\n
274
+ * The number of source images must match the depth of the destiny image.
275
+ *
276
+ * \verbatim im.ProcessMergeComponents(src_image_list: table of imImage, dst_image: imImage) [in Lua 5] \endverbatim
277
+ * \verbatim im.ProcessMergeComponentsNew(src_image_list: table of imImage) -> dst_image: imImage [in Lua 5] \endverbatim
278
+ * \ingroup colorproc */
279
+ void imProcessMergeComponents(const imImage** src_image_list, imImage* dst_image);
280
+
281
+ /** Normalize the color components by their sum. Example: c1 = c1/(c1+c2+c3). \n
282
+ * Destiny image must be IM_FLOAT.
283
+ *
284
+ * \verbatim im.ProcessNormalizeComponents(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
285
+ * \verbatim im.ProcessNormalizeComponentsNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
286
+ * \ingroup colorproc */
287
+ void imProcessNormalizeComponents(const imImage* src_image, imImage* dst_image);
288
+
289
+ /** Replaces the source color by the destiny color. \n
290
+ * The color will be type casted to the image data type. \n
291
+ * The colors must have the same number of components of the images. \n
292
+ * Supports all color spaces and all data types except IM_CFLOAT.
293
+ *
294
+ * \verbatim im.ProcessReplaceColor(src_image: imImage, dst_image: imImage, src_color: table of numbers, dst_color: table of numbers) [in Lua 5] \endverbatim
295
+ * \verbatim im.ProcessReplaceColorNew(src_image: imImage, src_color: table of numbers, dst_color: table of numbers) -> new_image: imImage [in Lua 5] \endverbatim
296
+ * \ingroup colorproc */
297
+ void imProcessReplaceColor(const imImage* src_image, imImage* dst_image, float* src_color, float* dst_color);
298
+
299
+
300
+
301
+ /** \defgroup logic Logical Arithmetic Operations
302
+ * \par
303
+ * Logical binary math operations for images.
304
+ * \par
305
+ * See \ref im_process_pon.h
306
+ * \ingroup process */
307
+
308
+ /** Logical Operations.
309
+ * \ingroup logic */
310
+ enum imLogicOp {
311
+ IM_BIT_AND, /**< and = a & b */
312
+ IM_BIT_OR, /**< or = a | b */
313
+ IM_BIT_XOR /**< xor = ~(a | b) */
314
+ };
315
+
316
+ /** Apply a logical operation.\n
317
+ * Images must have data type IM_BYTE, IM_USHORT or IM_INT. Can be done in place.
318
+ *
319
+ * \verbatim im.ProcessBitwiseOp(src_image1: imImage, src_image2: imImage, dst_image: imImage, op: number) [in Lua 5] \endverbatim
320
+ * \verbatim im.ProcessBitwiseOpNew(src_image1: imImage, src_image2: imImage, op: number) -> new_image: imImage [in Lua 5] \endverbatim
321
+ * \ingroup logic */
322
+ void imProcessBitwiseOp(const imImage* src_image1, const imImage* src_image2, imImage* dst_image, int op);
323
+
324
+ /** Apply a logical NOT operation.\n
325
+ * Images must have data type IM_BYTE, IM_USHORT or IM_INT. Can be done in place.
326
+ *
327
+ * \verbatim im.ProcessBitwiseNot(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
328
+ * \verbatim im.ProcessBitwiseNotNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
329
+ * \ingroup logic */
330
+ void imProcessBitwiseNot(const imImage* src_image, imImage* dst_image);
331
+
332
+ /** Apply a bit mask. \n
333
+ * The same as imProcessBitwiseOp but the second image is replaced by a fixed mask. \n
334
+ * Images must have data type IM_BYTE. It is valid only for AND, OR and XOR. Can be done in place.
335
+ *
336
+ * \verbatim im.ProcessBitMask(src_image: imImage, dst_image: imImage, mask: string, op: number) [in Lua 5] \endverbatim
337
+ * \verbatim im.ProcessBitMaskNew(src_image: imImage, mask: string, op: number) -> new_image: imImage [in Lua 5] \endverbatim
338
+ * In Lua, mask is a string with 0s and 1s, for example: "11001111".
339
+ * \ingroup logic */
340
+ void imProcessBitMask(const imImage* src_image, imImage* dst_image, unsigned char mask, int op);
341
+
342
+ /** Extract or Reset a bit plane. For ex: 000X0000 or XXX0XXXX (plane=3).\n
343
+ * Images must have data type IM_BYTE. Can be done in place.
344
+ *
345
+ * \verbatim im.ProcessBitPlane(src_image: imImage, dst_image: imImage, plane: number, do_reset: boolean) [in Lua 5] \endverbatim
346
+ * \verbatim im.ProcessBitPlaneNew(src_image: imImage, plane: number, do_reset: boolean) -> new_image: imImage [in Lua 5] \endverbatim
347
+ * \ingroup logic */
348
+ void imProcessBitPlane(const imImage* src_image, imImage* dst_image, int plane, int do_reset);
349
+
350
+
351
+
352
+ /** \defgroup render Synthetic Image Render
353
+ * \par
354
+ * Renders some 2D mathematical functions as images. All the functions operates in place
355
+ * and supports all data types except IM_CFLOAT.
356
+ * \par
357
+ * See \ref im_process_pon.h
358
+ * \ingroup process */
359
+
360
+ /** Render Funtion.
361
+ * \verbatim render_func(x: number, y: number, d: number, param: table of number) -> value: number [in Lua 5] \endverbatim
362
+ * \ingroup render */
363
+ typedef float (*imRenderFunc)(int x, int y, int d, float* param);
364
+
365
+ /** Render Conditional Funtion.
366
+ * \verbatim render_cond_func(x: number, y: number, d: number, param: table of number) -> value: number, cond: boolean [in Lua 5] \endverbatim
367
+ * \ingroup render */
368
+ typedef float (*imRenderCondFunc)(int x, int y, int d, int *cond, float* param);
369
+
370
+ /** Render a synthetic image using a render function. \n
371
+ * plus will make the render be added to the current image data,
372
+ * or else all data will be replaced. All the render functions use this or the conditional function. \n
373
+ * Returns zero if the counter aborted.
374
+ *
375
+ * \verbatim im.ProcessRenderOp(image: imImage, render_func: function, render_name: string, param: table of number, plus: boolean) -> counter: boolean [in Lua 5] \endverbatim
376
+ * \ingroup render */
377
+ int imProcessRenderOp(imImage* image, imRenderFunc render_func, char* render_name, float* param, int plus);
378
+
379
+ /** Render a synthetic image using a conditional render function. \n
380
+ * Data will be rendered only if the condional param is true. \n
381
+ * Returns zero if the counter aborted.
382
+ *
383
+ * \verbatim im.ProcessRenderCondOp(image: imImage, render_cond_func: function, render_name: string, param: table of number) -> counter: boolean [in Lua 5] \endverbatim
384
+ * \ingroup render */
385
+ int imProcessRenderCondOp(imImage* image, imRenderCondFunc render_cond_func, char* render_name, float* param);
386
+
387
+ /** Render speckle noise on existing data. Can be done in place.
388
+ *
389
+ * \verbatim im.ProcessRenderAddSpeckleNoise(src_image: imImage, dst_image: imImage, percent: number) -> counter: boolean [in Lua 5] \endverbatim
390
+ * \verbatim im.ProcessRenderAddSpeckleNoiseNew(src_image: imImage, percent: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
391
+ * \ingroup render */
392
+ int imProcessRenderAddSpeckleNoise(const imImage* src_image, imImage* dst_image, float percent);
393
+
394
+ /** Render gaussian noise on existing data. Can be done in place.
395
+ *
396
+ * \verbatim im.ProcessRenderAddGaussianNoise(src_image: imImage, dst_image: imImage, mean: number, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
397
+ * \verbatim im.ProcessRenderAddGaussianNoiseNew(src_image: imImage, mean: number, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
398
+ * \ingroup render */
399
+ int imProcessRenderAddGaussianNoise(const imImage* src_image, imImage* dst_image, float mean, float stddev);
400
+
401
+ /** Render uniform noise on existing data. Can be done in place.
402
+ *
403
+ * \verbatim im.ProcessRenderAddUniformNoise(src_image: imImage, dst_image: imImage, mean: number, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
404
+ * \verbatim im.ProcessRenderAddUniformNoiseNew(src_image: imImage, mean: number, stddev: number) -> counter: boolean, new_image: imImage [in Lua 5] \endverbatim
405
+ * \ingroup render */
406
+ int imProcessRenderAddUniformNoise(const imImage* src_image, imImage* dst_image, float mean, float stddev);
407
+
408
+ /** Render random noise.
409
+ *
410
+ * \verbatim im.ProcessRenderRandomNoise(image: imImage) -> counter: boolean [in Lua 5] \endverbatim
411
+ * \ingroup render */
412
+ int imProcessRenderRandomNoise(imImage* image);
413
+
414
+ /** Render a constant. The number of values must match the depth of the image.
415
+ *
416
+ * \verbatim im.ProcessRenderConstant(image: imImage, value: table of number) -> counter: boolean [in Lua 5] \endverbatim
417
+ * \ingroup render */
418
+ int imProcessRenderConstant(imImage* image, float* value);
419
+
420
+ /** Render a centered wheel.
421
+ *
422
+ * \verbatim im.ProcessRenderWheel(image: imImage, internal_radius: number, external_radius: number) -> counter: boolean [in Lua 5] \endverbatim
423
+ * \ingroup render */
424
+ int imProcessRenderWheel(imImage* image, int internal_radius, int external_radius);
425
+
426
+ /** Render a centered cone.
427
+ *
428
+ * \verbatim im.ProcessRenderCone(image: imImage, radius: number) -> counter: boolean [in Lua 5] \endverbatim
429
+ * \ingroup render */
430
+ int imProcessRenderCone(imImage* image, int radius);
431
+
432
+ /** Render a centered tent.
433
+ *
434
+ * \verbatim im.ProcessRenderTent(image: imImage, tent_width: number, tent_height: number) -> counter: boolean [in Lua 5] \endverbatim
435
+ * \ingroup render */
436
+ int imProcessRenderTent(imImage* image, int tent_width, int tent_height);
437
+
438
+ /** Render a ramp. Direction can be vertical (1) or horizontal (0).
439
+ *
440
+ * \verbatim im.ProcessRenderRamp(image: imImage, start: number, end: number, vert_dir: boolean) -> counter: boolean [in Lua 5] \endverbatim
441
+ * \ingroup render */
442
+ int imProcessRenderRamp(imImage* image, int start, int end, int vert_dir);
443
+
444
+ /** Render a centered box.
445
+ *
446
+ * \verbatim im.ProcessRenderBox(image: imImage, box_width: number, box_height: number) -> counter: boolean [in Lua 5] \endverbatim
447
+ * \ingroup render */
448
+ int imProcessRenderBox(imImage* image, int box_width, int box_height);
449
+
450
+ /** Render a centered sinc.
451
+ *
452
+ * \verbatim im.ProcessRenderSinc(image: imImage, x_period: number, y_period: number) -> counter: boolean [in Lua 5] \endverbatim
453
+ * \ingroup render */
454
+ int imProcessRenderSinc(imImage* image, float x_period, float y_period);
455
+
456
+ /** Render a centered gaussian.
457
+ *
458
+ * \verbatim im.ProcessRenderGaussian(image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
459
+ * \ingroup render */
460
+ int imProcessRenderGaussian(imImage* image, float stddev);
461
+
462
+ /** Render the laplacian of a centered gaussian.
463
+ *
464
+ * \verbatim im.ProcessRenderLapOfGaussian(image: imImage, stddev: number) -> counter: boolean [in Lua 5] \endverbatim
465
+ * \ingroup render */
466
+ int imProcessRenderLapOfGaussian(imImage* image, float stddev);
467
+
468
+ /** Render a centered cosine.
469
+ *
470
+ * \verbatim im.ProcessRenderCosine(image: imImage, x_period: number, y_period: number) -> counter: boolean [in Lua 5] \endverbatim
471
+ * \ingroup render */
472
+ int imProcessRenderCosine(imImage* image, float x_period, float y_period);
473
+
474
+ /** Render a centered grid.
475
+ *
476
+ * \verbatim im.ProcessRenderGrid(image: imImage, x_space: number, y_space: number) -> counter: boolean [in Lua 5] \endverbatim
477
+ * \ingroup render */
478
+ int imProcessRenderGrid(imImage* image, int x_space, int y_space);
479
+
480
+ /** Render a centered chessboard.
481
+ *
482
+ * \verbatim im.ProcessRenderChessboard(image: imImage, x_space: number, y_space: number) -> counter: boolean [in Lua 5] \endverbatim
483
+ * \ingroup render */
484
+ int imProcessRenderChessboard(imImage* image, int x_space, int y_space);
485
+
486
+
487
+
488
+ /** \defgroup tonegamut Tone Gamut Operations
489
+ * \par
490
+ * Operations that try to preserve the min-max interval in the output (the dynamic range).
491
+ * \par
492
+ * See \ref im_process_pon.h
493
+ * \ingroup process */
494
+
495
+
496
+ /** Tone Gamut Operations.
497
+ * \ingroup tonegamut */
498
+ enum imToneGamut {
499
+ IM_GAMUT_NORMALIZE, /**< normalize = (a-min) / (max-min) (destiny image must be IM_FLOAT) */
500
+ IM_GAMUT_POW, /**< pow = ((a-min) / (max-min))^gamma * (max-min) + min \n
501
+ param[0]=gamma */
502
+ IM_GAMUT_LOG, /**< log = log(K * (a-min) / (max-min) + 1))*(max-min)/log(K+1) + min \n
503
+ param[0]=K (K>0) */
504
+ IM_GAMUT_EXP, /**< exp = (exp(K * (a-min) / (max-min)) - 1))*(max-min)/(exp(K)-1) + min \n
505
+ param[0]=K */
506
+ IM_GAMUT_INVERT, /**< invert = max - (a-min) */
507
+ IM_GAMUT_ZEROSTART, /**< zerostart = a - min */
508
+ IM_GAMUT_SOLARIZE, /**< solarize = a < level ? a: (level * (max-min) - a * (level-min)) / (max-level) \n
509
+ param[0]=level percentage (0-100) relative to min-max \n
510
+ photography solarization effect. */
511
+ IM_GAMUT_SLICE, /**< slice = start < a || a > end ? min: binarize? max: a \n
512
+ param[0]=start, param[1]=end, param[2]=binarize */
513
+ IM_GAMUT_EXPAND, /**< expand = a < start ? min: a > end ? max : (a-start)*(max-min)/(end-start) + min \n
514
+ param[0]=start, param[1]=end */
515
+ IM_GAMUT_CROP, /**< crop = a < start ? start: a > end ? end : a \n
516
+ param[0]=start, param[1]=end */
517
+ IM_GAMUT_BRIGHTCONT /**< brightcont = a < min ? min: a > max ? max: a * tan(c_a) + b_s + (max-min)*(1 - tan(c_a))/2 \n
518
+ param[0]=bright_shift (-100%..+100%), param[1]=contrast_factor (-100%..+100%) \n
519
+ change brightness and contrast simultaneously. */
520
+ };
521
+
522
+ /** Apply a gamut operation with arguments. \n
523
+ * Supports all data types except IM_CFLOAT. \n
524
+ * The linear operation do a special convertion when min > 0 and max < 1, it forces min=0 and max=1. \n
525
+ * IM_BYTE images have min=0 and max=255 always. \n
526
+ * Can be done in place. When there is no extra params use NULL.
527
+ *
528
+ * \verbatim im.ProcessToneGamut(src_image: imImage, dst_image: imImage, op: number, param: table of number) [in Lua 5] \endverbatim
529
+ * \verbatim im.ProcessToneGamutNew(src_image: imImage, op: number, param: table of number) -> new_image: imImage [in Lua 5] \endverbatim
530
+ * \ingroup tonegamut */
531
+ void imProcessToneGamut(const imImage* src_image, imImage* dst_image, int op, float* param);
532
+
533
+ /** Converts from (0-1) to (0-255), crop out of bounds values. \n
534
+ * Source image must be IM_FLOAT, and destiny image must be IM_BYTE.
535
+ *
536
+ * \verbatim im.ProcessUnNormalize(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
537
+ * \verbatim im.ProcessUnNormalizeNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
538
+ * \ingroup tonegamut */
539
+ void imProcessUnNormalize(const imImage* src_image, imImage* dst_image);
540
+
541
+ /** Directly converts IM_USHORT, IM_INT and IM_FLOAT into IM_BYTE images. \n
542
+ * This can also be done using \ref imConvertDataType with IM_CAST_DIRECT.
543
+ *
544
+ * \verbatim im.ProcessDirectConv(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
545
+ * \verbatim im.ProcessDirectConvNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
546
+ * \ingroup tonegamut */
547
+ void imProcessDirectConv(const imImage* src_image, imImage* dst_image);
548
+
549
+ /** A negative effect. Uses \ref imProcessToneGamut with IM_GAMUT_INVERT for non MAP images. \n
550
+ * Supports all color spaces and all data types except IM_CFLOAT. \n
551
+ * Can be done in place.
552
+ *
553
+ * \verbatim im.ProcessNegative(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
554
+ * \verbatim im.ProcessNegativeNew(src_image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
555
+ * \ingroup tonegamut */
556
+ void imProcessNegative(const imImage* src_image, imImage* dst_image);
557
+
558
+
559
+
560
+ /** \defgroup threshold Threshold Operations
561
+ * \par
562
+ * Operations that converts a usually IM_GRAY/IM_BYTE image into a IM_BINARY image using several threshold techniques.
563
+ * \par
564
+ * See \ref im_process_pon.h
565
+ * \ingroup process */
566
+
567
+ /** Apply a manual threshold. \n
568
+ * threshold = a <= level ? 0: value \n
569
+ * Normal value is 1 but another common value is 255. Can be done in place for IM_BYTE source. \n
570
+ * Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
571
+ *
572
+ * \verbatim im.ProcessThreshold(src_image: imImage, dst_image: imImage, level: number, value: number) [in Lua 5] \endverbatim
573
+ * \verbatim im.ProcessThresholdNew(src_image: imImage, level: number, value: number) -> new_image: imImage [in Lua 5] \endverbatim
574
+ * \ingroup threshold */
575
+ void imProcessThreshold(const imImage* src_image, imImage* dst_image, int level, int value);
576
+
577
+ /** Apply a threshold by the difference of two images. \n
578
+ * threshold = a1 <= a2 ? 0: 1 \n
579
+ * Can be done in place.
580
+ *
581
+ * \verbatim im.ProcessThresholdByDiff(src_image1: imImage, src_image2: imImage, dst_image: imImage) [in Lua 5] \endverbatim
582
+ * \verbatim im.ProcessThresholdByDiffNew(src_image1: imImage, src_image2: imImage) -> new_image: imImage [in Lua 5] \endverbatim
583
+ * \ingroup threshold */
584
+ void imProcessThresholdByDiff(const imImage* src_image1, const imImage* src_image2, imImage* dst_image);
585
+
586
+ /** Apply a threshold by the Hysteresis method. \n
587
+ * Hysteresis thersholding of edge pixels. Starting at pixels with a
588
+ * value greater than the HIGH threshold, trace a connected sequence
589
+ * of pixels that have a value greater than the LOW threhsold. \n
590
+ * Supports only IM_BYTE images.
591
+ * Note: could not find the original source code author name.
592
+ *
593
+ * \verbatim im.ProcessHysteresisThreshold(src_image: imImage, dst_image: imImage, low_thres: number, high_thres: number) [in Lua 5] \endverbatim
594
+ * \verbatim im.ProcessHysteresisThresholdNew(src_image: imImage, low_thres: number, high_thres: number) -> new_image: imImage [in Lua 5] \endverbatim
595
+ * \ingroup threshold */
596
+ void imProcessHysteresisThreshold(const imImage* src_image, imImage* dst_image, int low_thres, int high_thres);
597
+
598
+ /** Estimates hysteresis low and high threshold levels. \n
599
+ * Supports only IM_BYTE images.
600
+ * Usefull for \ref imProcessHysteresisThreshold.
601
+ *
602
+ * \verbatim im.ProcessHysteresisThresEstimate(image: imImage) -> low_level: number, high_level: number [in Lua 5] \endverbatim
603
+ * \ingroup threshold */
604
+ void imProcessHysteresisThresEstimate(const imImage* image, int *low_level, int *high_level);
605
+
606
+ /** Calculates the threshold level for manual threshold using an uniform error approach. \n
607
+ * Supports only IM_BYTE images.
608
+ * Extracted from XITE, Copyright 1991, Blab, UiO \n
609
+ * http://www.ifi.uio.no/~blab/Software/Xite/
610
+ \verbatim
611
+ Reference:
612
+ S. M. Dunn & D. Harwood & L. S. Davis:
613
+ "Local Estimation of the Uniform Error Threshold"
614
+ IEEE Trans. on PAMI, Vol PAMI-6, No 6, Nov 1984.
615
+ Comments: It only works well on images whith large objects.
616
+ Author: Olav Borgli, BLAB, ifi, UiO
617
+ Image processing lab, Department of Informatics, University of Oslo
618
+ \endverbatim
619
+ * Returns the used level.
620
+ *
621
+ * \verbatim im.ProcessUniformErrThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
622
+ * \verbatim im.ProcessUniformErrThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
623
+ * \ingroup threshold */
624
+ int imProcessUniformErrThreshold(const imImage* src_image, imImage* dst_image);
625
+
626
+ /** Apply a dithering on each image channel by using a difusion error method. \n
627
+ * It can be applied on any IM_BYTE images. It will "threshold" each channel indivudually, so
628
+ * source and destiny must be of the same depth.
629
+ *
630
+ * \verbatim im.ProcessDifusionErrThreshold(src_image: imImage, dst_image: imImage, level: number) [in Lua 5] \endverbatim
631
+ * \verbatim im.ProcessDifusionErrThresholdNew(src_image: imImage, level: number) -> new_image: imImage [in Lua 5] \endverbatim
632
+ * \ingroup threshold */
633
+ void imProcessDifusionErrThreshold(const imImage* src_image, imImage* dst_image, int level);
634
+
635
+ /** Calculates the threshold level for manual threshold using a percentage of pixels
636
+ * that should stay bellow the threshold. \n
637
+ * Supports only IM_BYTE images.
638
+ * Returns the used level.
639
+ *
640
+ * \verbatim im.ProcessPercentThreshold(src_image: imImage, dst_image: imImage, percent: number) -> level: number [in Lua 5] \endverbatim
641
+ * \verbatim im.ProcessPercentThresholdNew(src_image: imImage, percent: number) -> level: number, new_image: imImage [in Lua 5] \endverbatim
642
+ * \ingroup threshold */
643
+ int imProcessPercentThreshold(const imImage* src_image, imImage* dst_image, float percent);
644
+
645
+ /** Calculates the threshold level for manual threshold using the Otsu approach. \n
646
+ * Returns the used level. \n
647
+ * Supports only IM_BYTE images.
648
+ * Original implementation by Flavio Szenberg.
649
+ *
650
+ * \verbatim im.ProcessOtsuThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
651
+ * \verbatim im.ProcessOtsuThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
652
+ * \ingroup threshold */
653
+ int imProcessOtsuThreshold(const imImage* src_image, imImage* dst_image);
654
+
655
+ /** Calculates the threshold level for manual threshold using (max-min)/2. \n
656
+ * Returns the used level. \n
657
+ * Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
658
+ *
659
+ * \verbatim im.ProcessMinMaxThreshold(src_image: imImage, dst_image: imImage) -> level: number [in Lua 5] \endverbatim
660
+ * \verbatim im.ProcessMinMaxThresholdNew(src_image: imImage) -> level: number, new_image: imImage [in Lua 5] \endverbatim
661
+ * \ingroup threshold */
662
+ int imProcessMinMaxThreshold(const imImage* src_image, imImage* dst_image);
663
+
664
+ /** Estimates Local Max threshold level for IM_BYTE images.
665
+ *
666
+ * \verbatim im.ProcessLocalMaxThresEstimate(image: imImage) -> level: number [in Lua 5] \endverbatim
667
+ * \ingroup threshold */
668
+ void imProcessLocalMaxThresEstimate(const imImage* image, int *level);
669
+
670
+ /** Apply a manual threshold using an interval. \n
671
+ * threshold = start_level <= a <= end_level ? 1: 0 \n
672
+ * Normal value is 1 but another common value is 255. Can be done in place for IM_BYTE source. \n
673
+ * Supports all integer IM_GRAY images as source, and IM_BINARY as destiny.
674
+ *
675
+ * \verbatim im.ProcessSliceThreshold(src_image: imImage, dst_image: imImage, start_level: number, end_level: number) [in Lua 5] \endverbatim
676
+ * \verbatim im.ProcessSliceThresholdNew(src_image: imImage, start_level: number, end_level: number) -> new_image: imImage [in Lua 5] \endverbatim
677
+ * \ingroup threshold */
678
+ void imProcessSliceThreshold(const imImage* src_image, imImage* dst_image, int start_level, int end_level);
679
+
680
+
681
+ /** \defgroup effects Special Effects
682
+ * \par
683
+ * Operations to change image appearance.
684
+ * \par
685
+ * See \ref im_process_pon.h
686
+ * \ingroup process */
687
+
688
+
689
+ /** Generates a zoom in effect averaging colors inside a square region. \n
690
+ * Operates only on IM_BYTE images.
691
+ *
692
+ * \verbatim im.ProcessPixelate(src_image: imImage, dst_image: imImage, box_size: number) [in Lua 5] \endverbatim
693
+ * \verbatim im.ProcessPixelateNew(src_image: imImage, box_size: number) -> new_image: imImage [in Lua 5] \endverbatim
694
+ * \ingroup effects */
695
+ void imProcessPixelate(const imImage* src_image, imImage* dst_image, int box_size);
696
+
697
+ /** A simple Posterize effect. It reduces the number of colors in the image eliminating
698
+ * less significant bit planes. Can have 1 to 7 levels. See \ref imProcessBitMask. \n
699
+ * Images must have data type IM_BYTE.
700
+ *
701
+ * \verbatim im.ProcessPosterize(src_image: imImage, dst_image: imImage, level: number) [in Lua 5] \endverbatim
702
+ * \verbatim im.ProcessPosterizeNew(src_image: imImage, level: number) -> new_image: imImage [in Lua 5] \endverbatim
703
+ * \ingroup effects */
704
+ void imProcessPosterize(const imImage* src_image, imImage* dst_image, int level);
705
+
706
+
707
+
708
+ #if defined(__cplusplus)
709
+ }
710
+ #endif
711
+
712
+ #endif