ruby-iup 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,172 @@
1
+ /** \file
2
+ * \brief Palette Generators
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PALETTE_H
8
+ #define __IM_PALETTE_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+
15
+ /** \defgroup palette Palette Generators
16
+ * \par
17
+ * Creates several standard palettes. The palette is just an array of encoded color values.
18
+ * See also \ref colorutl.
19
+ * \par
20
+ * In Lua, to create a palette you can call im.PaletteCreate.
21
+ * \verbatim im.PaletteCreate([count: number]) -> pal: imPalette [in Lua 5] \endverbatim
22
+ * Default count is 256.
23
+ * IMLua and CDLua palettes are 100% compatible. The IM palette metatable name is "imPalette". \n
24
+ * When converted to a string will return "imPalete(%p)" where %p is replaced by the userdata address.
25
+ * If the palette is already destroyed by im.PaletteDestroy, then it will return also the suffix "-destroyed".
26
+ * \par
27
+ * In Lua, to destroy a palette you can call im.PaletteDestroy.
28
+ * If this function is not called, the palette is destroyed by the garbage collector.
29
+ * \verbatim im.PaletteDestroy(pal: imPalette) [in Lua 5] \endverbatim
30
+ * \par
31
+ * In Lua, array access is enabled so you can do:.
32
+ * \verbatim color = pal[index] \endverbatim
33
+ * \verbatim pal[index] = color \endverbatim
34
+ * \verbatim count = #pal \endverbatim
35
+ * \par
36
+ * See \ref im_palette.h
37
+ * \ingroup util */
38
+
39
+
40
+ /** Searches for the nearest color on the table and returns the color index if successful.
41
+ * It looks in all palette entries and finds the minimum euclidian square distance.
42
+ * If the color matches the given color it returns immediately.
43
+ * See also \ref colorutl.
44
+ *
45
+ * \verbatim im.PaletteFindNearest(pal: imPalette, color: lightuserdata) -> index: number [in Lua 5] \endverbatim
46
+ * \ingroup palette */
47
+ int imPaletteFindNearest(const long *palette, int palette_count, long color);
48
+
49
+ /** Searches for the color on the table and returns the color index if successful.
50
+ * If the tolerance is 0 search for the exact match in the palette else search for the
51
+ * first color that fits in the tolerance range.
52
+ * See also \ref colorutl.
53
+ *
54
+ * \verbatim im.PaletteFindColor(pal: imPalette, color: lightuserdata, tol: number) -> index: number [in Lua 5] \endverbatim
55
+ * \ingroup palette */
56
+ int imPaletteFindColor(const long *palette, int palette_count, long color, unsigned char tol);
57
+
58
+ /** Creates a palette of gray scale values.
59
+ * The colors are arranged from black to white.
60
+ *
61
+ * \verbatim im.PaletteGray() -> pal: imPalette [in Lua 5] \endverbatim
62
+ * \ingroup palette */
63
+ long* imPaletteGray(void);
64
+
65
+ /** Creates a palette of a gradient of red colors.
66
+ * The colors are arranged from black to pure red.
67
+ *
68
+ * \verbatim im.PaletteRed() -> pal: imPalette [in Lua 5] \endverbatim
69
+ * \ingroup palette */
70
+ long* imPaletteRed(void);
71
+
72
+ /** Creates a palette of a gradient of green colors.
73
+ * The colors are arranged from black to pure green.
74
+ *
75
+ * \verbatim im.PaletteGreen() -> pal: imPalette [in Lua 5] \endverbatim
76
+ * \ingroup palette */
77
+ long* imPaletteGreen(void);
78
+
79
+ /** Creates a palette of a gradient of blue colors.
80
+ * The colors are arranged from black to pure blue.
81
+ *
82
+ * \verbatim im.PaletteBlue() -> pal: imPalette [in Lua 5] \endverbatim
83
+ * \ingroup palette */
84
+ long* imPaletteBlue(void);
85
+
86
+ /** Creates a palette of a gradient of yellow colors.
87
+ * The colors are arranged from black to pure yellow.
88
+ *
89
+ * \verbatim im.PaletteYellow() -> pal: imPalette [in Lua 5] \endverbatim
90
+ * \ingroup palette */
91
+ long* imPaletteYellow(void);
92
+
93
+ /** Creates a palette of a gradient of magenta colors.
94
+ * The colors are arranged from black to pure magenta.
95
+ *
96
+ * \verbatim im.PaletteMagenta() -> pal: imPalette [in Lua 5] \endverbatim
97
+ * \ingroup palette */
98
+ long* imPaletteMagenta(void);
99
+
100
+ /** Creates a palette of a gradient of cian colors.
101
+ * The colors are arranged from black to pure cian.
102
+ *
103
+ * \verbatim im.PaletteCian() -> pal: imPalette [in Lua 5] \endverbatim
104
+ * \ingroup palette */
105
+ long* imPaletteCian(void);
106
+
107
+ /** Creates a palette of rainbow colors.
108
+ * The colors are arranged in the light wave length spectrum order (starting from purple).
109
+ *
110
+ * \verbatim im.PaletteRainbow() -> pal: imPalette [in Lua 5] \endverbatim
111
+ * \ingroup palette */
112
+ long* imPaletteRainbow(void);
113
+
114
+ /** Creates a palette of hues with maximum saturation.
115
+ *
116
+ * \verbatim im.PaletteHues() -> pal: imPalette [in Lua 5] \endverbatim
117
+ * \ingroup palette */
118
+ long* imPaletteHues(void);
119
+
120
+ /** Creates a palette of a gradient of blue colors.
121
+ * The colors are arranged from pure blue to white.
122
+ *
123
+ * \verbatim im.PaletteBlueIce() -> pal: imPalette [in Lua 5] \endverbatim
124
+ * \ingroup palette */
125
+ long* imPaletteBlueIce(void);
126
+
127
+ /** Creates a palette of a gradient from black to white passing trough red and orange.
128
+ *
129
+ * \verbatim im.PaletteHotIron() -> pal: imPalette [in Lua 5] \endverbatim
130
+ * \ingroup palette */
131
+ long* imPaletteHotIron(void);
132
+
133
+ /** Creates a palette of a gradient from black to white passing trough red and yellow.
134
+ *
135
+ * \verbatim im.PaletteBlackBody() -> pal: imPalette [in Lua 5] \endverbatim
136
+ * \ingroup palette */
137
+ long* imPaletteBlackBody(void);
138
+
139
+ /** Creates a palette with high contrast colors.
140
+ *
141
+ * \verbatim im.PaletteHighContrast() -> pal: imPalette [in Lua 5] \endverbatim
142
+ * \ingroup palette */
143
+ long* imPaletteHighContrast(void);
144
+
145
+ /** Creates a palette of an uniform range of colors from black to white.
146
+ * This is a 2^(2.6) bits per pixel palette.
147
+ *
148
+ * \verbatim im.PaletteUniform() -> pal: imPalette [in Lua 5] \endverbatim
149
+ * \ingroup palette */
150
+ long* imPaletteUniform(void);
151
+
152
+ /** Returns the index of the correspondent RGB color of an uniform palette.
153
+ *
154
+ * \verbatim im.PaletteUniformIndex(color: lightuserdata) -> index: number [in Lua 5] \endverbatim
155
+ * \ingroup palette */
156
+ int imPaletteUniformIndex(long color);
157
+
158
+ /** Returns the index of the correspondent RGB color of an uniform palette.
159
+ * Uses an 8x8 ordered dither to lookup the index in a halftone matrix.
160
+ * The spatial position used by the halftone method.
161
+ *
162
+ * \verbatim im.PaletteUniformIndexHalftoned(color: lightuserdata, x: number, y: number) -> index: number [in Lua 5] \endverbatim
163
+ * \ingroup palette */
164
+ int imPaletteUniformIndexHalftoned(long color, int x, int y);
165
+
166
+
167
+ #if defined(__cplusplus)
168
+ }
169
+ #endif
170
+
171
+ #endif
172
+
@@ -0,0 +1,73 @@
1
+ /** \file
2
+ * \brief C++ Wrapper for File Access
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PLUS_H
8
+ #define __IM_PLUS_H
9
+
10
+
11
+ /** \brief C++ Wrapper for the Image File Structure
12
+ *
13
+ * \par
14
+ * Usage is just like the C API. Open and New are replaced by equivalent constructors. \n
15
+ * Close is replaced by the destructor. Error checking is done by the Error() member. \n
16
+ * Open and New errors are cheked using the Failed() member.
17
+ * \ingroup file */
18
+ class imImageFile
19
+ {
20
+ imFile* ifile;
21
+ int error;
22
+
23
+ imImageFile() {};
24
+
25
+ public:
26
+
27
+ imImageFile(const char* file_name)
28
+ { this->ifile = imFileOpen(file_name, &this->error); }
29
+
30
+ imImageFile(const char* file_name, const char* format)
31
+ { this->ifile = imFileNew(file_name, format, &this->error); }
32
+
33
+ ~imImageFile()
34
+ { if (this->ifile) imFileClose(this->ifile); }
35
+
36
+ int Failed()
37
+ { return this->ifile == 0; }
38
+
39
+ int Error()
40
+ { return this->error; }
41
+
42
+ void SetAttribute(const char* attrib, int data_type, int count, const void* data)
43
+ { imFileSetAttribute(this->ifile, attrib, data_type, count, data); }
44
+
45
+ const void* GetAttribute(const char* attrib, int *data_type, int *count)
46
+ { return imFileGetAttribute(this->ifile, attrib, data_type, count); }
47
+
48
+ void GetInfo(char* format, char* compression, int *image_count)
49
+ { imFileGetInfo(this->ifile, format, compression, image_count); }
50
+
51
+ void ReadImageInfo(int index, int *width, int *height, int *color_mode, int *data_type)
52
+ { this->error = imFileReadImageInfo(this->ifile, index, width, height, color_mode, data_type); }
53
+
54
+ void GetPalette(long* palette, int *palette_count)
55
+ { imFileGetPalette(this->ifile, palette, palette_count); }
56
+
57
+ void ReadImageData(void* data, int convert2bitmap, int color_mode_flags)
58
+ { this->error = imFileReadImageData(this->ifile, data, convert2bitmap, color_mode_flags); }
59
+
60
+ void SetInfo(const char* compression)
61
+ { imFileSetInfo(this->ifile, compression); }
62
+
63
+ void SetPalette(long* palette, int palette_count)
64
+ { imFileSetPalette(this->ifile, palette, palette_count); }
65
+
66
+ void WriteImageInfo(int width, int height, int color_mode, int data_type)
67
+ { this->error = imFileWriteImageInfo(this->ifile, width, height, color_mode, data_type); }
68
+
69
+ void WriteImageData(void* data)
70
+ { this->error = imFileWriteImageData(this->ifile, data); }
71
+ };
72
+
73
+ #endif
@@ -0,0 +1,35 @@
1
+ /** \file
2
+ * \brief Image Processing
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PROCESS_H
8
+ #define __IM_PROCESS_H
9
+
10
+ #include "im_process_pon.h"
11
+ #include "im_process_loc.h"
12
+ #include "im_process_glo.h"
13
+ #include "im_process_ana.h"
14
+
15
+ #if defined(__cplusplus)
16
+ extern "C" {
17
+ #endif
18
+
19
+
20
+ /** \defgroup process Image Processing
21
+ * \par
22
+ * Several image processing functions based on the \ref imImage structure.
23
+ * \par
24
+ * You must link the application with "im_process.lib/.a/.so". \n
25
+ * Some complex operations use the \ref counter.\n
26
+ * There is no check on the input/output image properties,
27
+ * check each function documentation before using it.
28
+ */
29
+
30
+
31
+ #if defined(__cplusplus)
32
+ }
33
+ #endif
34
+
35
+ #endif
@@ -0,0 +1,221 @@
1
+ /** \file
2
+ * \brief Image Statistics and Analysis
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_PROC_ANA_H
8
+ #define __IM_PROC_ANA_H
9
+
10
+ #include "im_image.h"
11
+
12
+ #if defined(__cplusplus)
13
+ extern "C" {
14
+ #endif
15
+
16
+
17
+
18
+ /** \defgroup stats Image Statistics Calculations
19
+ * \par
20
+ * Operations to calculate some statistics over images.
21
+ * \par
22
+ * See \ref im_process_ana.h
23
+ * \ingroup process */
24
+
25
+ /** Calculates the RMS error between two images (Root Mean Square Error).
26
+ *
27
+ * \verbatim im.CalcRMSError(image1: imImage, image2: imImage) -> rms: number [in Lua 5] \endverbatim
28
+ * \ingroup stats */
29
+ float imCalcRMSError(const imImage* image1, const imImage* image2);
30
+
31
+ /** Calculates the SNR of an image and its noise (Signal Noise Ratio).
32
+ *
33
+ * \verbatim im.CalcSNR(src_image: imImage, noise_image: imImage) -> snr: number [in Lua 5] \endverbatim
34
+ * \ingroup stats */
35
+ float imCalcSNR(const imImage* src_image, const imImage* noise_image);
36
+
37
+ /** Count the number of different colors in an image. \n
38
+ * Image must be IM_BYTE, but all color spaces except IM_CMYK.
39
+ *
40
+ * \verbatim im.CalcCountColors(image: imImage) -> count: number [in Lua 5] \endverbatim
41
+ * \ingroup stats */
42
+ unsigned long imCalcCountColors(const imImage* image);
43
+
44
+ /** Calculates the histogram of a IM_BYTE data. \n
45
+ * Histogram is always 256 positions long. \n
46
+ * When cumulative is different from zero it calculates the cumulative histogram.
47
+ *
48
+ * \verbatim im.CalcHistogram(image: imImage, plane: number, cumulative: number) -> histo: table of numbers [in Lua 5] \endverbatim
49
+ * Where plane is the depth plane to calculate the histogram. \n
50
+ * The returned table is zero indexed. image can be IM_USHORT or IM_BYTE.
51
+ * \ingroup stats */
52
+ void imCalcHistogram(const unsigned char* data, int count, unsigned long* histo, int cumulative);
53
+
54
+ /** Calculates the histogram of a IM_USHORT data. \n
55
+ * Histogram is always 65535 positions long. \n
56
+ * When cumulative is different from zero it calculates the cumulative histogram. \n
57
+ * Use \ref imCalcHistogram in Lua.
58
+ * \ingroup stats */
59
+ void imCalcUShortHistogram(const unsigned short* data, int count, unsigned long* histo, int cumulative);
60
+
61
+ /** Calculates the gray histogram of an image. \n
62
+ * Image must be IM_BYTE/(IM_RGB, IM_GRAY, IM_BINARY or IM_MAP). \n
63
+ * If the image is IM_RGB then the histogram of the luma component is calculated. \n
64
+ * Histogram is always 256 positions long. \n
65
+ * When cumulative is different from zero it calculates the cumulative histogram.
66
+ *
67
+ * \verbatim im.CalcGrayHistogram(image: imImage, cumulative: number) -> histo: table of numbers [in Lua 5] \endverbatim
68
+ * \ingroup stats */
69
+ void imCalcGrayHistogram(const imImage* image, unsigned long* histo, int cumulative);
70
+
71
+ /** Numerical Statistics Structure
72
+ * \ingroup stats */
73
+ typedef struct _imStats
74
+ {
75
+ float max; /**< Maximum value */
76
+ float min; /**< Minimum value */
77
+ unsigned long positive; /**< Number of Positive Values */
78
+ unsigned long negative; /**< Number of Negative Values */
79
+ unsigned long zeros; /**< Number of Zeros */
80
+ float mean; /**< Mean */
81
+ float stddev; /**< Standard Deviation */
82
+ } imStats;
83
+
84
+ /** Calculates the statistics about the image data. \n
85
+ * There is one stats for each depth plane. For ex: stats[0]=red stats, stats[0]=green stats, ... \n
86
+ * Supports all data types except IM_CFLOAT. \n
87
+ *
88
+ * \verbatim im.CalcImageStatistics(image: imImage) -> stats: table [in Lua 5] \endverbatim
89
+ * Table contains the following fields: max, min, positive, negative, zeros, mean, stddev.
90
+ * The same as the \ref imStats structure.
91
+ * \ingroup stats */
92
+ void imCalcImageStatistics(const imImage* image, imStats* stats);
93
+
94
+ /** Calculates the statistics about the image histogram data.\n
95
+ * There is one stats for each depth plane. For ex: stats[0]=red stats, stats[0]=green stats, ... \n
96
+ * Only IM_BYTE images are supported.
97
+ *
98
+ * \verbatim im.CalcHistogramStatistics(image: imImage) -> stats: table [in Lua 5] \endverbatim
99
+ * \ingroup stats */
100
+ void imCalcHistogramStatistics(const imImage* image, imStats* stats);
101
+
102
+ /** Calculates some extra statistics about the image histogram data.\n
103
+ * There is one stats for each depth plane. \n
104
+ * Only IM_BYTE images are supported. \n
105
+ * mode will be -1 if more than one max is found.
106
+ *
107
+ * \verbatim im.CalcHistoImageStatistics(image: imImage) -> median: number, mode: number [in Lua 5] \endverbatim
108
+ * \ingroup stats */
109
+ void imCalcHistoImageStatistics(const imImage* image, int* median, int* mode);
110
+
111
+
112
+
113
+ /** \defgroup analyze Image Analysis
114
+ * \par
115
+ * See \ref im_process_ana.h
116
+ * \ingroup process */
117
+
118
+ /** Find white regions in binary image. \n
119
+ * Result is IM_GRAY/IM_USHORT type. Regions can be 4 connected or 8 connected. \n
120
+ * Returns the number of regions found. Background is marked as 0. \n
121
+ * Regions touching the border are considered only if touch_border=1.
122
+ *
123
+ * \verbatim im.AnalyzeFindRegions(src_image: imImage, dst_image: imImage, connect: number, touch_border: number) -> count: number [in Lua 5] \endverbatim
124
+ * \verbatim im.AnalyzeFindRegionsNew(image: imImage, connect: number, touch_border: number) -> count: number, new_image: imImage [in Lua 5] \endverbatim
125
+ * \ingroup analyze */
126
+ int imAnalyzeFindRegions(const imImage* src_image, imImage* dst_image, int connect, int touch_border);
127
+
128
+ /** Measure the actual area of all regions. Holes are not included. \n
129
+ * This is the number of pixels of each region. \n
130
+ * Source image is IM_GRAY/IM_USHORT type (the result of \ref imAnalyzeFindRegions). \n
131
+ * area has size the number of regions.
132
+ *
133
+ * \verbatim im.AnalyzeMeasureArea(image: imImage, [region_count: number]) -> area: table of numbers [in Lua 5] \endverbatim
134
+ * The returned table is zero indexed.
135
+ * \ingroup analyze */
136
+ void imAnalyzeMeasureArea(const imImage* image, int* area, int region_count);
137
+
138
+ /** Measure the polygonal area limited by the perimeter line of all regions. Holes are not included. \n
139
+ * Notice that some regions may have polygonal area zero. \n
140
+ * Source image is IM_GRAY/IM_USHORT type (the result of \ref imAnalyzeFindRegions). \n
141
+ * perimarea has size the number of regions.
142
+ *
143
+ * \verbatim im.AnalyzeMeasurePerimArea(image: imImage, [region_count: number]) -> perimarea: table of numbers [in Lua 5] \endverbatim
144
+ * The returned table is zero indexed.
145
+ * \ingroup analyze */
146
+ void imAnalyzeMeasurePerimArea(const imImage* image, float* perimarea);
147
+
148
+ /** Calculate the centroid position of all regions. Holes are not included. \n
149
+ * Source image is IM_GRAY/IM_USHORT type (the result of \ref imAnalyzeFindRegions). \n
150
+ * area, cx and cy have size the number of regions. If area is NULL will be internally calculated.
151
+ *
152
+ * \verbatim im.AnalyzeMeasureCentroid(image: imImage, [area: table of numbers], [region_count: number]) -> cx: table of numbers, cy: table of numbers [in Lua 5] \endverbatim
153
+ * The returned tables are zero indexed.
154
+ * \ingroup analyze */
155
+ void imAnalyzeMeasureCentroid(const imImage* image, const int* area, int region_count, float* cx, float* cy);
156
+
157
+ /** Calculate the principal major axis slope of all regions. \n
158
+ * Source image is IM_GRAY/IM_USHORT type (the result of \ref imAnalyzeFindRegions). \n
159
+ * data has size the number of regions. If area or centroid are NULL will be internally calculated. \n
160
+ * Principal (major and minor) axes are defined to be those axes that pass through the
161
+ * centroid, about which the moment of inertia of the region is, respectively maximal or minimal.
162
+ *
163
+ * \verbatim im.AnalyzeMeasurePrincipalAxis(image: imImage, [area: table of numbers], [cx: table of numbers], [cy: table of numbers], [region_count: number])
164
+ -> major_slope: table of numbers, major_length: table of numbers, minor_slope: table of numbers, minor_length: table of numbers [in Lua 5] \endverbatim
165
+ * The returned tables are zero indexed.
166
+ * \ingroup analyze */
167
+ void imAnalyzeMeasurePrincipalAxis(const imImage* image, const int* area, const float* cx, const float* cy,
168
+ const int region_count, float* major_slope, float* major_length,
169
+ float* minor_slope, float* minor_length);
170
+
171
+ /** Measure the number and area of holes of all regions. \n
172
+ * Source image is IM_USHORT type (the result of \ref imAnalyzeFindRegions). \n
173
+ * area and perim has size the number of regions, if some is NULL it will be not calculated.
174
+ *
175
+ * \verbatim im.AnalyzeMeasureHoles(image: imImage, connect: number, [region_count: number]) -> holes_count: number, area: table of numbers, perim: table of numbers [in Lua 5] \endverbatim
176
+ * The returned tables are zero indexed.
177
+ * \ingroup analyze */
178
+ void imAnalyzeMeasureHoles(const imImage* image, int connect, int *holes_count, int* area, float* perim);
179
+
180
+ /** Measure the total perimeter of all regions (external and internal). \n
181
+ * Source image is IM_GRAY/IM_USHORT type (the result of imAnalyzeFindRegions). \n
182
+ * It uses a half-pixel inter distance for 8 neighboors in a perimeter of a 4 connected region. \n
183
+ * This function can also be used to measure line lenght. \n
184
+ * perim has size the number of regions.
185
+ *
186
+ * \verbatim im.AnalyzeMeasurePerimeter(image: imImage) -> perim: table of numbers [in Lua 5] \endverbatim
187
+ * \ingroup analyze */
188
+ void imAnalyzeMeasurePerimeter(const imImage* image, float* perim, int region_count);
189
+
190
+ /** Isolates the perimeter line of gray integer images. Background is defined as being black (0). \n
191
+ * It just checks if at least one of the 4 connected neighboors is non zero. Image borders are extended with zeros.
192
+ *
193
+ * \verbatim im.ProcessPerimeterLine(src_image: imImage, dst_image: imImage) [in Lua 5] \endverbatim
194
+ * \verbatim im.ProcessPerimeterLineNew(image: imImage) -> new_image: imImage [in Lua 5] \endverbatim
195
+ * \ingroup analyze */
196
+ void imProcessPerimeterLine(const imImage* src_image, imImage* dst_image);
197
+
198
+ /** Eliminates regions that have size outside the given interval. \n
199
+ * Source and destiny are a binary images. Regions can be 4 connected or 8 connected. \n
200
+ * Can be done in-place. end_size can be zero to ignore big objects.
201
+ *
202
+ * \verbatim im.ProcessPrune(src_image: imImage, dst_image: imImage, connect: number, start_size: number, end_size: number) [in Lua 5] \endverbatim
203
+ * \verbatim im.ProcessPruneNew(image: imImage, connect: number, start_size: number, end_size: number) -> new_image: imImage [in Lua 5] \endverbatim
204
+ * \ingroup analyze */
205
+ void imProcessPrune(const imImage* src_image, imImage* dst_image, int connect, int start_size, int end_size);
206
+
207
+ /** Fill holes inside white regions. \n
208
+ * Source and destiny are a binary images. Regions can be 4 connected or 8 connected. \n
209
+ * Can be done in-place.
210
+ *
211
+ * \verbatim im.ProcessFillHoles(src_image: imImage, dst_image: imImage, connect: number) [in Lua 5] \endverbatim
212
+ * \verbatim im.ProcessFillHolesNew(image: imImage, connect: number) -> new_image: imImage [in Lua 5] \endverbatim
213
+ * \ingroup analyze */
214
+ void imProcessFillHoles(const imImage* src_image, imImage* dst_image, int connect);
215
+
216
+
217
+ #if defined(__cplusplus)
218
+ }
219
+ #endif
220
+
221
+ #endif