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,87 @@
1
+ /** \file
2
+ * \brief Register the AVI Format
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_FORMAT_AVI_H
8
+ #define __IM_FORMAT_AVI_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+ /** \defgroup avi AVI - Windows Audio-Video Interleaved RIFF
15
+ * \section Description
16
+ *
17
+ * \par
18
+ * Windows Copyright Microsoft Corporation.
19
+ * \par
20
+ * Access to the AVI format uses Windows AVIFile library. Available in Windows Only. \n
21
+ * When writing a new file you must use an ".avi" extension, or the Windows API will fail. \n
22
+ * You must link the application with "im_avi.lib"
23
+ * and you must call the function \ref imFormatRegisterAVI once
24
+ * to register the format into the IM core library. \n
25
+ * Depends also on the VFW library (vfw32.lib).
26
+ * When using the "im_avi.dll" this extra library is not necessary. \n
27
+ * If using Cygwin or MingW must link with "-lvfw32".
28
+ * Old versions of Cygwin and MingW use the "-lvfw_ms32" and "-lvfw_avi32".
29
+ * \par
30
+ * See \ref im_format_avi.h
31
+ *
32
+ * \section Features
33
+ *
34
+ \verbatim
35
+ Data Types: Byte
36
+ Color Spaces: RGB, MAP and Binary (Gray saved as MAP)
37
+ Compressions (installed in Windows XP by default):
38
+ NONE - no compression [default]
39
+ RLE - Microsoft RLE (8bpp only)
40
+ CINEPACK - Cinepak Codec by Radius
41
+ MSVC - Microsoft Video 1 (old)
42
+ M261 - Microsoft H.261 Video Codec
43
+ M263 - Microsoft H.263 Video Codec
44
+ I420 - Intel 4:2:0 Video Codec (same as M263)
45
+ IV32 - Intel Indeo Video Codec 3.2 (old)
46
+ IV41 - Intel Indeo Video Codec 4.5 (old)
47
+ IV50 - Intel Indeo Video 5.1
48
+ IYUV - Intel IYUV Codec
49
+ MPG4 - Microsoft MPEG-4 Video Codec V1 (not MPEG-4 compliant) (old)
50
+ MP42 - Microsoft MPEG-4 Video Codec V2 (not MPEG-4 compliant)
51
+ CUSTOM - (show compression dialog)
52
+ DIVX - DivX 5.0.4 Codec (DivX must be installed)
53
+ (others, must be the 4 charaters of the fourfcc code)
54
+ Can have more than one image.
55
+ Can have an alpha channel (only for RGB)
56
+ Internally the components are always packed.
57
+ Lines arranged from top down to bottom or bottom up to top. But are saved always as bottom up.
58
+ Handle(0) returns NULL. imBinFile is not supported.
59
+ Handle(1) returns PAVIFILE.
60
+ Handle(2) returns PAVISTREAM.
61
+
62
+ Attributes:
63
+ FPS IM_FLOAT (1) (should set when writing, default 15)
64
+ AVIQuality IM_INT (1) [1-10000, default -1] (write only)
65
+ KeyFrameRate IM_INT (1) (write only) [key frame frequency, if 0 not using key frames, default 15]
66
+ DataRate IM_INT (1) (write only) [kilobits/second, default 2400]
67
+
68
+ Comments:
69
+ Reads only the first video stream. Other streams are ignored.
70
+ All the images have the same size, you must call imFileReadImageInfo/imFileWriteImageInfo
71
+ at least once.
72
+ For codecs comparsion and download go to:
73
+ http://graphics.lcs.mit.edu/~tbuehler/video/codecs/
74
+ http://www.fourcc.org
75
+ \endverbatim
76
+ * \ingroup format */
77
+
78
+ /** Register the AVI Format. \n
79
+ * In Lua, when using require"imlua_avi" this function will be automatically called.
80
+ * \ingroup avi */
81
+ void imFormatRegisterAVI(void);
82
+
83
+ #if defined(__cplusplus)
84
+ }
85
+ #endif
86
+
87
+ #endif
@@ -0,0 +1,93 @@
1
+ /** \file
2
+ * \brief Register the ECW Format
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_FORMAT_ECW_H
8
+ #define __IM_FORMAT_ECW_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+ /** \defgroup ecw ECW - ECW JPEG 2000
15
+ * \section Description
16
+ *
17
+ * \par
18
+ * ECW JPEG 2000 Copyright 1998 Earth Resource Mapping Ltd.
19
+ * Two formats are supported with this module. The ECW (Enhanced Compression Wavelet) format and the ISO JPEG 2000 format.
20
+ * \par
21
+ * Access to the ECW format uses the ECW JPEG 2000 SDK version 3.3.
22
+ * Available in Windows, Linux and Solaris Only. But source code is also available. \n
23
+ * You must link the application with "im_ecw.lib"
24
+ * and you must call the function \ref imFormatRegisterECW once
25
+ * to register the format into the IM core library. \n
26
+ * Depends also on the ECW JPEG 2000 SDK libraries (NCSEcw.lib).
27
+ * \par
28
+ * When using other JPEG 2000 libraries the first registered library will be used to guess the file format.
29
+ * Use the extension *.ecw to shortcut to this implementation of the JPEG 2000 format.
30
+ * \par
31
+ * See \ref im_format_ecw.h
32
+ * \par
33
+ * \par
34
+ * http://www.ermapper.com/ecw/ \n
35
+ * The three types of licenses available for the ECW JPEG 2000 SDK are as follows:
36
+ \verbatim
37
+ - ECW JPEG 2000 SDK Free Use License Agreement - This license governs the free use of
38
+ the ECW JPEG 2000 SDK with Unlimited Decompression and Limited Compression (Less
39
+ than 500MB).
40
+ - ECW JPEG 2000 SDK Public Use License Agreement - This license governs the use of the
41
+ ECW SDK with Unlimited Decompression and Unlimited Compression for applications
42
+ licensed under a GNU General Public style license.
43
+ - ECW JPEG 2000 SDK Commercial Use License Agreement - This license governs the use
44
+ of the ECW JPEG 2000 SDK with Unlimited Decompression and Unlimited Compression
45
+ for commercial applications.
46
+ \endverbatim
47
+ *
48
+ * \section Features
49
+ *
50
+ \verbatim
51
+ Data Types: Byte, UShort, Float
52
+ Color Spaces: BINARY, GRAY, RGB, YCBCR
53
+ Compressions:
54
+ ECW - Enhanced Compression Wavelet
55
+ JPEG-2000 - ISO JPEG 2000
56
+ Only one image.
57
+ Can have an alpha channel
58
+ Internally the components are always packed.
59
+ Lines arranged from top down to bottom.
60
+ Handle() returns NCSFileView* when reading, NCSEcwCompressClient* when writing.
61
+
62
+ Attributes:
63
+ CompressionRatio IM_FLOAT (1) [example: Ratio=7 just like 7:1]
64
+ OriginX, OriginY IM_FLOAT (1)
65
+ Rotation IM_FLOAT (1)
66
+ CellIncrementX, CellIncrementY IM_FLOAT (1)
67
+ CellUnits (string)
68
+ Datum (string)
69
+ Projection (string)
70
+ ViewWidth, ViewHeight IM_INT (1) [view zoom]
71
+ ViewXmin, ViewYmin, ViewXmax, ViewYmax IM_INT (1) [view limits]
72
+ MultiBandCount IM_USHORT (1) [Number of bands in a multiband gray image.]
73
+ MultiBandSelect IM_USHORT (1) [Band number to read one band of a multiband gray image. Must be set before reading image info.]
74
+
75
+ Comments:
76
+ Only read support is implemented.
77
+ To read a region of the image you must set the View* attributes before reading the image data.
78
+ After reading a partial image the width and height returned in ReadImageInfo is the view size.
79
+ The view limits define the region to be readed.
80
+ The view size is the actual size of the image, so the result can be zoomed.
81
+ \endverbatim
82
+ * \ingroup format */
83
+
84
+ /** Register the ECW Format
85
+ * \ingroup ecw */
86
+ void imFormatRegisterECW(void);
87
+
88
+
89
+ #if defined(__cplusplus)
90
+ }
91
+ #endif
92
+
93
+ #endif
@@ -0,0 +1,78 @@
1
+ /** \file
2
+ * \brief Register the JP2 Format
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_FORMAT_JP2_H
8
+ #define __IM_FORMAT_JP2_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+
15
+ /** \defgroup jp2 JP2 - JPEG-2000 JP2 File Format
16
+ * \section Description
17
+ *
18
+ * \par
19
+ * ISO/IEC 15444 (2000, 2003)\n
20
+ * http://www.jpeg.org/
21
+ * \par
22
+ * You must link the application with "im_jp2.lib"
23
+ * and you must call the function \ref imFormatRegisterJP2 once
24
+ * to register the format into the IM core library. \n
25
+ * \par
26
+ * Access to the JPEG2000 file format uses libJasper version 1.900.1 \n
27
+ * http://www.ece.uvic.ca/~mdadams/jasper \n
28
+ * Copyright (c) 2001-2006 Michael David Adams. \n
29
+ * and GeoJasPer 1.4.0 \n
30
+ * Copyright (c) 2003-2007 Dmitry V. Fedorov. \n
31
+ * http://www.dimin.net/software/geojasper/ \n
32
+ *
33
+ * \par
34
+ * See \ref im_format_jp2.h
35
+ *
36
+ * \section Features
37
+ *
38
+ \verbatim
39
+ Data Types: Byte and UShort
40
+ Color Spaces: Binary, Gray, RGB, YCbCr, Lab and XYZ
41
+ Compressions:
42
+ JPEG-2000 - ISO JPEG 2000 [default]
43
+ Only one image.
44
+ Can have an alpha channel.
45
+ Internally the components are always unpacked.
46
+ Internally the lines are arranged from top down to bottom.
47
+ Handle(1) returns jas_image_t*
48
+ Handle(2) returns jas_stream_t*
49
+
50
+ Attributes:
51
+ CompressionRatio IM_FLOAT (1) [write only, example: Ratio=7 just like 7:1]
52
+ GeoTIFFBox IM_BYTE (n)
53
+ XMLPacket IM_BYTE (n)
54
+
55
+ Comments:
56
+ We read code stream syntax and JP2, but we write always as JP2.
57
+ Used definitions EXCLUDE_JPG_SUPPORT,EXCLUDE_MIF_SUPPORT,
58
+ EXCLUDE_PNM_SUPPORT,EXCLUDE_RAS_SUPPORT,
59
+ EXCLUDE_BMP_SUPPORT,EXCLUDE_PGX_SUPPORT
60
+ Changed jas_config.h to match our needs.
61
+ New file jas_binfile.c
62
+ Changed base/jas_stream.c to export jas_stream_create and jas_stream_initbuf.
63
+ Changed jp2/jp2_dec.c and jpc/jpc_cs.c to remove "uint" and "ulong" usage.
64
+ The counter is restarted many times, because it has many phases.
65
+ \endverbatim
66
+ * \ingroup format */
67
+
68
+ /** Register the JP2 Format. \n
69
+ * In Lua, when using require"imlua_jp2" this function will be automatically called.
70
+ * \ingroup jp2 */
71
+ void imFormatRegisterJP2(void);
72
+
73
+
74
+ #if defined(__cplusplus)
75
+ }
76
+ #endif
77
+
78
+ #endif
@@ -0,0 +1,64 @@
1
+ /** \file
2
+ * \brief Initialize the RAW Format Driver
3
+ * Header for internal use only.
4
+ *
5
+ * See Copyright Notice in im_lib.h
6
+ */
7
+
8
+ #ifndef __IM_FORMAT_RAW_H
9
+ #define __IM_FORMAT_RAW_H
10
+
11
+ #if defined(__cplusplus)
12
+ extern "C" {
13
+ #endif
14
+
15
+ /** \defgroup raw RAW - RAW File
16
+ *
17
+ * \par
18
+ * The file must be open/created with the functions \ref imFileOpenRaw and \ref imFileNewRaw.
19
+ *
20
+ * \section Description
21
+ *
22
+ * \par
23
+ * Internal Implementation.
24
+ * \par
25
+ * Supports RAW binary images. You must know image parameters a priori. \n
26
+ * You must set the IM_INT attributes "Width", "Height", "ColorMode", "DataType" before the imFileReadImageInfo/imFileWriteImageInfo functions.
27
+ * \par
28
+ * The data must be in binary form, but can start in an arbitrary offset from the begining of the file, use attribute "StartOffset".
29
+ * The default is at 0 offset.
30
+ * \par
31
+ * Integer sign and double precision can be converted using attribute "SwitchType". \n
32
+ * The conversions will be BYTE<->CHAR, USHORT<->SHORT, INT<->UINT, FLOAT<->DOUBLE.
33
+ * \par
34
+ * Byte Order can be Little Endian (Intel=1) or Big Endian (Motorola=0), use the attribute "ByteOrder", the default is the current CPU.
35
+ * \par
36
+ * The lines can be aligned to a BYTE (1), WORD (2) or DWORD (4) boundaries, ue attribute "Padding" with the respective value.
37
+ * \par
38
+ * See \ref im_raw.h
39
+ *
40
+ * \section Features
41
+ *
42
+ \verbatim
43
+ Data Types: <all>
44
+ Color Spaces: all, except MAP.
45
+ Compressions:
46
+ NONE - no compression
47
+ Can have more than one image, depends on "StartOffset" attribute.
48
+ Can have an alpha channel.
49
+ Components can be packed or not.
50
+ Lines arranged from top down to bottom or bottom up to top.
51
+
52
+ Attributes:
53
+ Width, Height, ColorMode, DataType IM_INT (1)
54
+ StartOffset, SwitchType, ByteOrder, Padding IM_INT (1)
55
+ \endverbatim
56
+ * \ingroup format */
57
+ imFormat* imFormatInitRAW(void);
58
+
59
+
60
+ #if defined(__cplusplus)
61
+ }
62
+ #endif
63
+
64
+ #endif
@@ -0,0 +1,100 @@
1
+ /** \file
2
+ * \brief Register the WMF Format
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_FORMAT_WMV_H
8
+ #define __IM_FORMAT_WMV_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+ /** \defgroup wmv WMV - Windows Media Video Format
15
+ * \section Description
16
+ *
17
+ * \par
18
+ * Advanced Systems Format (ASF) \n
19
+ * Windows Copyright Microsoft Corporation.
20
+ * \par
21
+ * Access to the WMV format uses Windows Media SDK. Available in Windows Only. \n
22
+ * You must link the application with "im_wmv.lib"
23
+ * and you must call the function \ref imFormatRegisterWMV once
24
+ * to register the format into the IM core library. \n
25
+ * Depends also on the WMF SDK (wmvcore.lib).
26
+ * When using the "im_wmv.dll" this extra library is not necessary.
27
+ * \par
28
+ * The application users should have the WMV codec 9 installed:
29
+ * http://www.microsoft.com/windows/windowsmedia/format/codecdownload.aspx
30
+ * \par
31
+ * You must agree with the WMF SDK EULA to use the SDK. \n
32
+ * http://wmlicense.smdisp.net/v9sdk/
33
+ * \par
34
+ * For more information: \n
35
+ * http://www.microsoft.com/windows/windowsmedia/9series/sdk.aspx \n
36
+ * http://msdn.microsoft.com/library/en-us/wmform/htm/introducingwindowsmediaformat.asp
37
+ * \par
38
+ * See \ref im_format_wmv.h
39
+ *
40
+ * \section Features
41
+ *
42
+ \verbatim
43
+ Data Types: Byte
44
+ Color Spaces: RGB and MAP (Gray and Binary saved as MAP)
45
+ Compressions (installed in Windows XP by default):
46
+ NONE - no compression
47
+ MPEG-4v3 - Windows Media MPEG-4 Video V3
48
+ MPEG-4v1 - ISO MPEG-4 Video V1
49
+ WMV7 - Windows Media Video V7
50
+ WMV7Screen - Windows Media Screen V7
51
+ WMV8 - Windows Media Video V8
52
+ WMV9Screen - Windows Media Video 9 Screen
53
+ WMV9 - Windows Media Video 9 [default]
54
+ Unknown - Others
55
+ Can have more than one image.
56
+ Can have an alpha channel (only for RGB) ?
57
+ Internally the components are always packed.
58
+ Lines arranged from top down to bottom or bottom up to top.
59
+ Handle(0) return NULL. imBinFile is not supported.
60
+ Handle(1) returns IWMSyncReader* when reading, IWMWriter* when writing.
61
+
62
+ Attributes:
63
+ FPS IM_FLOAT (1) (should set when writing, default 15)
64
+ WMFQuality IM_INT (1) [0-100, default 50] (write only)
65
+ MaxKeyFrameTime IM_INT (1) (write only) [maximum key frame interval in miliseconds, default 5 seconds]
66
+ DataRate IM_INT (1) (write only) [kilobits/second, default 2400]
67
+ VBR IM_INT (1) [0, 1] (write only) [0 - Constant Bit Rate (default), 1 - Variable Bit Rate (Quality-Based)]
68
+ (and several others from the file-level attributes) For ex:
69
+ Title, Author, Copyright, Description (string)
70
+ Duration IM_INT [100-nanosecond units]
71
+ Seekable, HasAudio, HasVideo, Is_Protected, Is_Trusted, IsVBR IM_INT (1) [0, 1]
72
+ NumberOfFrames IM_INT (1)
73
+
74
+ Comments:
75
+ IMPORTANT - The "image_count" and the "FPS" attribute may not be available from the file,
76
+ we try to estimate from the duration and from the average time between frames, or using the default value.
77
+ We do not handle DRM protected files (Digital Rights Management).
78
+ Reads only the first video stream. Other streams are ignored.
79
+ All the images have the same size, you must call imFileReadImageInfo/imFileWriteImageInfo
80
+ at least once.
81
+ For optimal random reading, the file should be indexed previously.
82
+ If not indexed by frame, random positioning may not be precise.
83
+ Sequencial reading will always be precise.
84
+ When writing we use a custom profile and time indexing only.
85
+ We do not support multipass encoding.
86
+ Since the driver uses COM, CoInitialize(NULL) and CoUninitialize() are called every Open/Close.
87
+ \endverbatim
88
+ * \ingroup format */
89
+
90
+ /** Register the WMF Format. \n
91
+ * In Lua, when using require"imlua_wmv" this function will be automatically called.
92
+ * \ingroup wmv */
93
+ void imFormatRegisterWMV(void);
94
+
95
+
96
+ #if defined(__cplusplus)
97
+ }
98
+ #endif
99
+
100
+ #endif
@@ -0,0 +1,403 @@
1
+ /** \file
2
+ * \brief Image Manipulation
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_IMAGE_H
8
+ #define __IM_IMAGE_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+
15
+ /** \defgroup imgclass imImage
16
+ *
17
+ * \par
18
+ * Base definitions and functions for image representation. \n
19
+ * Only the image processing operations depends on these definitions,
20
+ * Image Storage and Image Capture are completely independent.
21
+ * \par
22
+ * You can also initialize a structure with your own memory buffer, see \ref imImageInit.
23
+ * To release the structure without releasing the buffer,
24
+ * set "data[0]" to NULL before calling imImageDestroy.
25
+ * \par
26
+ * See \ref im_image.h
27
+ * \ingroup imagerep */
28
+
29
+
30
+
31
+ /** \brief imImage Structure Definition.
32
+ *
33
+ * \par
34
+ * An image representation than supports all the color spaces,
35
+ * but planes are always unpacked and the orientation is always bottom up.
36
+ * \ingroup imgclass */
37
+ typedef struct _imImage
38
+ {
39
+ /* main parameters */
40
+ int width; /**< Number of columns. image:Width() -> width: number [in Lua 5]. */
41
+ int height; /**< Number of lines. image:Height() -> height: number [in Lua 5]. */
42
+ int color_space; /**< Color space descriptor. See also \ref imColorSpace. image:ColorSpace() -> color_space: number [in Lua 5]. */
43
+ int data_type; /**< Data type descriptor. See also \ref imDataType. image:DataType() -> data_type: number [in Lua 5]. */
44
+ int has_alpha; /**< Indicates that there is an extra channel with alpha. image:HasAlpha() -> has_alpha: number [in Lua 5]. \n
45
+ It will not affect the secondary parameters, i.e. the number of planes will be in fact depth+1. \n
46
+ It is always 0 unless imImageAddAlpha is called, this is done in image load functions. */
47
+
48
+ /* secondary parameters */
49
+ int depth; /**< Number of planes (ColorSpaceDepth) */
50
+ int line_size; /**< Number of bytes per line in one plane (width * DataTypeSize) */
51
+ int plane_size; /**< Number of bytes per plane. (line_size * height) */
52
+ int size; /**< Number of bytes occupied by the image (plane_size * depth) */
53
+ int count; /**< Number of pixels (width * height) */
54
+
55
+ /* image data */
56
+ void** data; /**< Image data organized as a 2D matrix with several planes. \n
57
+ But plane 0 is also a pointer to the full data. \n
58
+ The remaining planes are: data[i] = data[0] + i*plane_size \n
59
+ In Lua, data indexing is possible using: image[plane][row][column] */
60
+
61
+ /* image attributes */
62
+ long *palette; /**< Color palette. image:GetPalette() -> palette: imPalette [in Lua 5]. \n
63
+ Used when depth=1. Otherwise is NULL. */
64
+ int palette_count; /**< The palette is always 256 colors allocated, but can have less colors used. */
65
+
66
+ void* attrib_table; /**< in fact is an imAttribTable, but we hide this here */
67
+ } imImage;
68
+
69
+
70
+ /** Creates a new image.
71
+ * See also \ref imDataType and \ref imColorSpace. \n
72
+ * In Lua the IM image metatable name is "imImage".
73
+ * When converted to a string will return "imImage(%p) [width=%d,height=%d,color_space=%s,data_type=%s,depth=%d]" where %p is replaced by the userdata address,
74
+ * and other values are replaced by the respective attributes.
75
+ * If the image is already destroyed by im.ImageDestroy, then it will return also the suffix "-destroyed".
76
+ *
77
+ * \verbatim im.ImageCreate(width: number, height: number, color_space: number, data_type: number) -> image: imImage [in Lua 5] \endverbatim
78
+ * \ingroup imgclass */
79
+ imImage* imImageCreate(int width, int height, int color_space, int data_type);
80
+
81
+ /** Initializes the image structure but does not allocates image data.
82
+ * See also \ref imDataType and \ref imColorSpace.
83
+ * \ingroup imgclass */
84
+ imImage* imImageInit(int width, int height, int color_space, int data_type, void* data_buffer, long* palette, int palette_count);
85
+
86
+ /** Creates a new image based on an existing one. \n
87
+ * If the addicional parameters are -1, the given image parameters are used. \n
88
+ * The image atributes always are copied.
89
+ * See also \ref imDataType and \ref imColorSpace.
90
+ *
91
+ * \verbatim im.ImageCreateBased(image: imImage, [width: number], [height: number], [color_space: number], [data_type: number]) -> image: imImage [in Lua 5] \endverbatim
92
+ * The addicional parameters in Lua can be nil,
93
+ * and they can also be functions with the based image as a parameter to return the respective value.
94
+ * \ingroup imgclass */
95
+ imImage* imImageCreateBased(const imImage* image, int width, int height, int color_space, int data_type);
96
+
97
+ /** Destroys the image and frees the memory used.
98
+ * image data is destroyed only if its data[0] is not NULL. \n
99
+ * In Lua if this function is not called, the image is destroyed by the garbage collector.
100
+ *
101
+ * \verbatim im.ImageDestroy(image: imImage) [in Lua 5] \endverbatim
102
+ * \verbatim image:Destroy() [in Lua 5] \endverbatim
103
+ * \ingroup imgclass */
104
+ void imImageDestroy(imImage* image);
105
+
106
+ /** Adds an alpha channel plane.
107
+ *
108
+ * \verbatim image:AddAlpha() [in Lua 5] \endverbatim
109
+ * \ingroup imgclass */
110
+ void imImageAddAlpha(imImage* image);
111
+
112
+ /** Changes the buffer size. Reallocate internal buffers if the new size is larger than the original.
113
+ *
114
+ * \verbatim image:Reshape(width: number, height: number) [in Lua 5] \endverbatim
115
+ * \ingroup imgclass */
116
+ void imImageReshape(imImage* image, int width, int height);
117
+
118
+ /** Copy image data and attributes from one image to another. \n
119
+ * Images must have the same size and type.
120
+ *
121
+ * \verbatim image:Copy(dst_image: imImage) [in Lua 5] \endverbatim
122
+ * \ingroup imgclass */
123
+ void imImageCopy(const imImage* src_image, imImage* dst_image);
124
+
125
+ /** Copy image data only fom one image to another. \n
126
+ * Images must have the same size and type.
127
+ *
128
+ * \verbatim image:CopyData(dst_image: imImage) [in Lua 5] \endverbatim
129
+ * \ingroup imgclass */
130
+ void imImageCopyData(const imImage* src_image, imImage* dst_image);
131
+
132
+ /** Creates a copy of the image.
133
+ *
134
+ * \verbatim image:Duplicate() -> new_image: imImage [in Lua 5] \endverbatim
135
+ * \ingroup imgclass */
136
+ imImage* imImageDuplicate(const imImage* image);
137
+
138
+ /** Creates a clone of the image. i.e. same attributes but ignore contents.
139
+ *
140
+ * \verbatim image:Clone() -> new_image: imImage [in Lua 5] \endverbatim
141
+ * \ingroup imgclass */
142
+ imImage* imImageClone(const imImage* image);
143
+
144
+ /** Changes an extended attribute. \n
145
+ * The data will be internally duplicated. \n
146
+ * If data is NULL the attribute is removed. \n
147
+ * If count is -1 and data_type is IM_BYTE then data is zero terminated.
148
+ * See also \ref imDataType.
149
+ *
150
+ * \verbatim image:SetAttribute(attrib: string, data_type: number, data: table of numbers or string) [in Lua 5] \endverbatim
151
+ * If data_type is IM_BYTE, as_string can be used as data.
152
+ * \ingroup imgclass */
153
+ void imImageSetAttribute(imImage* image, const char* attrib, int data_type, int count, const void* data);
154
+
155
+ /** Returns an extended attribute. \n
156
+ * Returns NULL if not found.
157
+ * See also \ref imDataType.
158
+ *
159
+ * \verbatim image:GetAttribute(attrib: string, [as_string: boolean]) -> data: table of numbers or string, data_type: number [in Lua 5] \endverbatim
160
+ * If data_type is IM_BYTE, as_string can be used to return a string instead of a table.
161
+ * \ingroup imgclass */
162
+ const void* imImageGetAttribute(const imImage* image, const char* attrib, int *data_type, int *count);
163
+
164
+ /** Returns a list of the attribute names. \n
165
+ * "attrib" must contain room enough for "attrib_count" names. Use "attrib=NULL" to return only the count.
166
+ *
167
+ * \verbatim image:GetAttributeList() -> data: table of strings [in Lua 5] \endverbatim
168
+ * \ingroup imgclass */
169
+ void imImageGetAttributeList(const imImage* image, char** attrib, int *attrib_count);
170
+
171
+ /** Sets all image data to zero.
172
+ *
173
+ * \verbatim image:Clear() [in Lua 5] \endverbatim
174
+ * \ingroup imgclass */
175
+ void imImageClear(imImage* image);
176
+
177
+ /** Indicates that the image can be viewed in common graphic devices.
178
+ * Data type must be IM_BYTE. Color mode can be IM_RGB, IM_MAP, IM_GRAY or IM_BINARY.
179
+ *
180
+ * \verbatim image:IsBitmap() -> is_bitmap: boolean [in Lua 5] \endverbatim
181
+ * \ingroup imgclass */
182
+ int imImageIsBitmap(const imImage* image);
183
+
184
+ /** Changes the image palette.
185
+ * This will destroy the existing palette and replace it with the given palette buffer.
186
+ *
187
+ * \verbatim image:SetPalette(palette: imPalette) [in Lua 5] \endverbatim
188
+ * \ingroup imgclass */
189
+ void imImageSetPalette(imImage* image, long* palette, int palette_count);
190
+
191
+ /** Copies the image attributes from src to dst.
192
+ *
193
+ * \verbatim image:CopyAttributes(dst_image: imImage) [in Lua 5] \endverbatim
194
+ * \ingroup imgclass */
195
+ void imImageCopyAttributes(const imImage* src_image, imImage* dst_image);
196
+
197
+ /** Returns 1 if the images match width and height. Returns 0 otherwise.
198
+ *
199
+ * \verbatim image:MatchSize(image2: imImage) -> match: boolean [in Lua 5] \endverbatim
200
+ * \ingroup imgclass */
201
+ int imImageMatchSize(const imImage* image1, const imImage* image2);
202
+
203
+ /** Returns 1 if the images match color mode and data type. Returns 0 otherwise.
204
+ *
205
+ * \verbatim image:MatchColor(image2: imImage) -> match: boolean [in Lua 5] \endverbatim
206
+ * \ingroup imgclass */
207
+ int imImageMatchColor(const imImage* image1, const imImage* image2);
208
+
209
+ /** Returns 1 if the images match width, height and data type. Returns 0 otherwise.
210
+ *
211
+ * \verbatim image:MatchDataType(image2: imImage) -> match: boolean [in Lua 5] \endverbatim
212
+ * \ingroup imgclass */
213
+ int imImageMatchDataType(const imImage* image1, const imImage* image2);
214
+
215
+ /** Returns 1 if the images match width, height and color space. Returns 0 otherwise.
216
+ *
217
+ * \verbatim image:MatchColorSpace(image2: imImage) -> match: boolean [in Lua 5] \endverbatim
218
+ * \ingroup imgclass */
219
+ int imImageMatchColorSpace(const imImage* image1, const imImage* image2);
220
+
221
+ /** Returns 1 if the images match in width, height, data type and color space. Returns 0 otherwise.
222
+ *
223
+ * \verbatim image:Match(image2: imImage) -> match: boolean [in Lua 5] \endverbatim
224
+ * \ingroup imgclass */
225
+ int imImageMatch(const imImage* image1, const imImage* image2);
226
+
227
+ /** Changes the image space from gray to binary by just changing color_space and the palette.
228
+ *
229
+ * \verbatim image:SetBinary() [in Lua 5] \endverbatim
230
+ * \ingroup imgclass */
231
+ void imImageSetBinary(imImage* image);
232
+
233
+ /** Changes a gray data into a binary data, done in-place.
234
+ *
235
+ * \verbatim image:MakeBinary() [in Lua 5] \endverbatim
236
+ * \ingroup imgclass */
237
+ void imImageMakeBinary(imImage *image);
238
+
239
+
240
+
241
+ /** \defgroup imgfile imImage Storage
242
+ *
243
+ * \par
244
+ * Functions to simplify the process of reading and writting imImage structures.
245
+ * Will also load and save the alpha planes when possible.
246
+ * \par
247
+ * See \ref im_image.h
248
+ * \ingroup file */
249
+
250
+
251
+ /** Loads an image from an already open file. Returns NULL if failed. \n
252
+ * This will call \ref imFileReadImageInfo and \ref imFileReadImageData. \n
253
+ * index specifies the image number between 0 and image_count-1. \n
254
+ * The returned image will be of the same color_space and data_type of the image in the file. \n
255
+ * Attributes from the file will be stored at the image.
256
+ * See also \ref imErrorCodes.
257
+ *
258
+ * \verbatim ifile:LoadImage([index: number]) -> image: imImage, error: number [in Lua 5] \endverbatim
259
+ * Default index is 0.
260
+ * \ingroup imgfile */
261
+ imImage* imFileLoadImage(imFile* ifile, int index, int *error);
262
+
263
+ /** Loads an image from an already open file. Returns NULL if failed. \n
264
+ * This function assumes that the image in the file has the same parameters as the given image. \n
265
+ * This will call \ref imFileReadImageInfo and \ref imFileReadImageData. \n
266
+ * index specifies the image number between 0 and image_count-1. \n
267
+ * The returned image will be of the same color_space and data_type of the image in the file. \n
268
+ * Attributes from the file will be stored at the image.
269
+ * See also \ref imErrorCodes.
270
+ *
271
+ * \verbatim ifile:LoadImageFrame(index: number, image: imImage) -> error: number [in Lua 5] \endverbatim
272
+ * Default index is 0.
273
+ * \ingroup imgfile */
274
+ void imFileLoadImageFrame(imFile* ifile, int index, imImage* image, int *error);
275
+
276
+ /** Loads an image from an already open file, but forces the image to be a bitmap.\n
277
+ * The returned imagem will be always a Bitmap image, with color_space RGB, MAP, GRAY or BINARY, and data_type IM_BYTE. \n
278
+ * index specifies the image number between 0 and image_count-1. \n
279
+ * Returns NULL if failed.
280
+ * Attributes from the file will be stored at the image.
281
+ * See also \ref imErrorCodes.
282
+ *
283
+ * \verbatim ifile:LoadBitmap([index: number]) -> image: imImage, error: number [in Lua 5] \endverbatim
284
+ * Default index is 0.
285
+ * \ingroup imgfile */
286
+ imImage* imFileLoadBitmap(imFile* ifile, int index, int *error);
287
+
288
+ /** Loads an image region from an already open file. Returns NULL if failed. \n
289
+ * This will call \ref imFileReadImageInfo and \ref imFileReadImageData. \n
290
+ * index specifies the image number between 0 and image_count-1. \n
291
+ * The returned image will be of the same color_space and data_type of the image in the file,
292
+ * or will be a Bitmap image. \n
293
+ * Attributes from the file will be stored at the image.
294
+ * See also \ref imErrorCodes. \n
295
+ * For now works only for ECW file format.
296
+ *
297
+ * \verbatim ifile:LoadRegion(index, bitmap, xmin, xmax, ymin, ymax, width, height: number) -> image: imImage, error: number [in Lua 5] \endverbatim
298
+ * Default index is 0.
299
+ * \ingroup imgfile */
300
+ imImage* imFileLoadImageRegion(imFile* ifile, int index, int bitmap, int *error,
301
+ int xmin, int xmax, int ymin, int ymax, int width, int height);
302
+
303
+ /** Loads an image from an already open file, but forces the image to be a bitmap.\n
304
+ * This function assumes that the image in the file has the same parameters as the given image. \n
305
+ * The imagem must be a Bitmap image, with color_space RGB, MAP, GRAY or BINARY, and data_type IM_BYTE. \n
306
+ * index specifies the image number between 0 and image_count-1. \n
307
+ * Returns NULL if failed.
308
+ * Attributes from the file will be stored at the image.
309
+ * See also \ref imErrorCodes.
310
+ *
311
+ * \verbatim ifile:LoadBitmapFrame(index: number, image: imImage) -> error: number [in Lua 5] \endverbatim
312
+ * Default index is 0.
313
+ * \ingroup imgfile */
314
+ void imFileLoadBitmapFrame(imFile* ifile, int index, imImage* image, int *error);
315
+
316
+ /** Saves the image to an already open file. \n
317
+ * This will call \ref imFileWriteImageInfo and \ref imFileWriteImageData. \n
318
+ * Attributes from the image will be stored at the file.
319
+ * Returns error code.
320
+ *
321
+ * \verbatim ifile:SaveImage(image: imImage) -> error: number [in Lua 5] \endverbatim
322
+ * \ingroup imgfile */
323
+ int imFileSaveImage(imFile* ifile, const imImage* image);
324
+
325
+ /** Loads an image from file. Open, loads and closes the file. \n
326
+ * index specifies the image number between 0 and image_count-1. \n
327
+ * Returns NULL if failed.
328
+ * Attributes from the file will be stored at the image.
329
+ * See also \ref imErrorCodes.
330
+ *
331
+ * \verbatim im.FileImageLoad(file_name: string, [index: number]) -> image: imImage, error: number [in Lua 5] \endverbatim
332
+ * Default index is 0.
333
+ * \ingroup imgfile */
334
+ imImage* imFileImageLoad(const char* file_name, int index, int *error);
335
+
336
+ /** Loads an image from file, but forces the image to be a bitmap. Open, loads and closes the file. \n
337
+ * index specifies the image number between 0 and image_count-1. \n
338
+ * Returns NULL if failed.
339
+ * Attributes from the file will be stored at the image.
340
+ * See also \ref imErrorCodes.
341
+ *
342
+ * \verbatim im.FileImageLoadBitmap(file_name: string, [index: number]) -> image: imImage, error: number [in Lua 5] \endverbatim
343
+ * Default index is 0.
344
+ * \ingroup imgfile */
345
+ imImage* imFileImageLoadBitmap(const char* file_name, int index, int *error);
346
+
347
+ /** Loads an image region from file. Open, loads and closes the file. \n
348
+ * index specifies the image number between 0 and image_count-1. \n
349
+ * Returns NULL if failed.
350
+ * Attributes from the file will be stored at the image.
351
+ * See also \ref imErrorCodes. \n
352
+ * For now works only for ECW file format.
353
+ *
354
+ * \verbatim im.FileImageLoadRegion(file_name: string, index, bitmap, xmin, xmax, ymin, ymax, width, height: number, ) -> image: imImage, error: number [in Lua 5] \endverbatim
355
+ * Default index is 0.
356
+ * \ingroup imgfile */
357
+ imImage* imFileImageLoadRegion(const char* file_name, int index, int bitmap, int *error,
358
+ int xmin, int xmax, int ymin, int ymax, int width, int height);
359
+
360
+ /** Saves the image to file. Open, saves and closes the file. \n
361
+ * Returns error code. \n
362
+ * Attributes from the image will be stored at the file.
363
+ *
364
+ * \verbatim im.FileImageSave(file_name: string, format: string, image: imImage) -> error: number [in Lua 5] \endverbatim
365
+ * \verbatim image:Save(file_name: string, format: string) -> error: number [in Lua 5] \endverbatim
366
+ * \ingroup imgfile */
367
+ int imFileImageSave(const char* file_name, const char* format, const imImage* image);
368
+
369
+
370
+
371
+ /** Utility macro to draw the image in a CD library canvas.
372
+ * Works only for data_type IM_BYTE, and color spaces: IM_RGB, IM_MAP, IMGRAY and IM_BINARY.
373
+ * \ingroup imgclass */
374
+ #define imcdCanvasPutImage(_canvas, _image, _x, _y, _w, _h, _xmin, _xmax, _ymin, _ymax) \
375
+ { \
376
+ if (_image->color_space == IM_RGB) \
377
+ { \
378
+ if (_image->has_alpha) \
379
+ cdCanvasPutImageRectRGBA(_canvas, _image->width, _image->height, \
380
+ (unsigned char*)_image->data[0], \
381
+ (unsigned char*)_image->data[1], \
382
+ (unsigned char*)_image->data[2], \
383
+ (unsigned char*)_image->data[3], \
384
+ _x, _y, _w, _h, _xmin, _xmax, _ymin, _ymax); \
385
+ else \
386
+ cdCanvasPutImageRectRGB(_canvas, _image->width, _image->height, \
387
+ (unsigned char*)_image->data[0], \
388
+ (unsigned char*)_image->data[1], \
389
+ (unsigned char*)_image->data[2], \
390
+ _x, _y, _w, _h, _xmin, _xmax, _ymin, _ymax); \
391
+ } \
392
+ else \
393
+ cdCanvasPutImageRectMap(_canvas, _image->width, _image->height, \
394
+ (unsigned char*)_image->data[0], _image->palette, \
395
+ _x, _y, _w, _h, _xmin, _xmax, _ymin, _ymax); \
396
+ }
397
+
398
+
399
+ #if defined(__cplusplus)
400
+ }
401
+ #endif
402
+
403
+ #endif