ruby-iup 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. data/CHANGES +3 -0
  2. data/MANIFEST +8 -0
  3. data/MIT-LICENSE +18 -0
  4. data/README +12 -0
  5. data/Rakefile +68 -80
  6. data/doc/build_install.txt +9 -12
  7. data/examples/ctrl/cbox.rb +14 -15
  8. data/examples/ctrl/checkboard.rb +1 -1
  9. data/examples/ctrl/example1.rb +53 -53
  10. data/examples/ctrl/example2.rb +39 -39
  11. data/examples/ctrl/iupcolorbar.rb +95 -95
  12. data/examples/ctrl/iupcolorbrowser.rb +45 -45
  13. data/examples/ctrl/iupdial.rb +117 -117
  14. data/examples/ctrl/iupgetcolor.rb +7 -7
  15. data/examples/ctrl/iupgetparam.rb +62 -62
  16. data/examples/ctrl/iupglcanvas.rb +172 -172
  17. data/examples/ctrl/iupmask.rb +1 -3
  18. data/examples/ctrl/iupmatrix.rb +39 -39
  19. data/examples/ctrl/iupplot2.rb +2 -1
  20. data/examples/ctrl/iuptabs.rb +22 -22
  21. data/examples/ctrl/iuptree.rb +190 -190
  22. data/examples/ctrl/iupval.rb +71 -71
  23. data/examples/ctrl/numbering.rb +46 -46
  24. data/examples/ctrl/sample.rb +166 -166
  25. data/examples/dlg/iupfiledlg.rb +19 -19
  26. data/examples/dlg/iupgetfile.rb +19 -19
  27. data/examples/dlg/iuplistdialog.rb +26 -26
  28. data/examples/dlg/iupmessage.rb +5 -5
  29. data/examples/dlg/iupscanf.rb +17 -17
  30. data/examples/elem/iupdialog2.rb +25 -25
  31. data/examples/elem/iupfill.rb +51 -51
  32. data/examples/elem/iupframe.rb +25 -25
  33. data/examples/elem/iuphbox.rb +68 -68
  34. data/examples/elem/iupimage.rb +113 -113
  35. data/examples/elem/iupitem.rb +60 -60
  36. data/examples/elem/iuplabel.rb +57 -57
  37. data/examples/elem/iuplist.rb +41 -41
  38. data/examples/elem/iuplist2.rb +125 -125
  39. data/examples/elem/iupmenu.rb +32 -32
  40. data/examples/elem/iupmultiline.rb +24 -24
  41. data/examples/elem/iupmultiline2.rb +156 -156
  42. data/examples/elem/iupradio.rb +32 -32
  43. data/examples/elem/iupseparator.rb +81 -81
  44. data/examples/elem/iupsubmenu.rb +85 -85
  45. data/examples/elem/iuptext.rb +61 -61
  46. data/examples/elem/iuptimer.rb +36 -36
  47. data/examples/elem/iuptoggle.rb +110 -110
  48. data/examples/elem/iupvbox.rb +87 -87
  49. data/examples/elem/iupzbox.rb +60 -60
  50. data/examples/elem/mdisample.rb +377 -376
  51. data/examples/elem/scrollbar.rb +66 -66
  52. data/examples/elem/tray.rb +90 -90
  53. data/examples/func/iupgetattribute.rb +32 -32
  54. data/examples/func/iupidle.rb +48 -48
  55. data/ext/extconf.rb +62 -27
  56. data/ext/iup-linux/include/cd.h +9 -5
  57. data/ext/iup-linux/include/cd_private.h +13 -6
  58. data/ext/iup-linux/include/cdsvg.h +22 -0
  59. data/ext/iup-linux/include/im.h +287 -282
  60. data/ext/iup-linux/include/im_attrib.h +120 -116
  61. data/ext/iup-linux/include/im_attrib_flat.h +39 -39
  62. data/ext/iup-linux/include/im_binfile.h +224 -214
  63. data/ext/iup-linux/include/im_capture.h +365 -365
  64. data/ext/iup-linux/include/im_color.h +465 -465
  65. data/ext/iup-linux/include/im_colorhsi.h +56 -61
  66. data/ext/iup-linux/include/im_complex.h +180 -160
  67. data/ext/iup-linux/include/im_convert.h +142 -127
  68. data/ext/iup-linux/include/im_counter.h +69 -69
  69. data/ext/iup-linux/include/im_dib.h +195 -195
  70. data/ext/iup-linux/include/im_file.h +115 -111
  71. data/ext/iup-linux/include/im_format.h +97 -79
  72. data/ext/iup-linux/include/im_format_all.h +575 -576
  73. data/ext/iup-linux/include/im_format_avi.h +88 -87
  74. data/ext/iup-linux/include/im_format_ecw.h +93 -93
  75. data/ext/iup-linux/include/im_format_jp2.h +79 -78
  76. data/ext/iup-linux/include/im_format_raw.h +74 -64
  77. data/ext/iup-linux/include/im_format_wmv.h +101 -100
  78. data/ext/iup-linux/include/im_image.h +425 -403
  79. data/ext/iup-linux/include/im_kernel.h +315 -315
  80. data/ext/iup-linux/include/im_lib.h +191 -191
  81. data/ext/iup-linux/include/im_math.h +368 -368
  82. data/ext/iup-linux/include/im_math_op.h +214 -219
  83. data/ext/iup-linux/include/im_palette.h +172 -172
  84. data/ext/iup-linux/include/im_plus.h +73 -73
  85. data/ext/iup-linux/include/im_process.h +36 -35
  86. data/ext/iup-linux/include/im_process_ana.h +222 -221
  87. data/ext/iup-linux/include/im_process_glo.h +170 -170
  88. data/ext/iup-linux/include/im_process_loc.h +608 -577
  89. data/ext/iup-linux/include/im_process_pon.h +734 -712
  90. data/ext/iup-linux/include/im_raw.h +34 -34
  91. data/ext/iup-linux/include/im_util.h +277 -277
  92. data/ext/iup-linux/include/imlua.h +75 -83
  93. data/ext/iup-linux/include/iup.h +86 -40
  94. data/ext/iup-linux/include/iupcb.h +1 -25
  95. data/ext/iup-linux/include/iupcbox.h +1 -0
  96. data/ext/iup-linux/include/iupcbs.h +1 -1
  97. data/ext/iup-linux/include/iupcells.h +1 -130
  98. data/ext/iup-linux/include/iupcolorbar.h +1 -126
  99. data/ext/iup-linux/include/iupcontrols.h +26 -16
  100. data/ext/iup-linux/include/iupdef.h +205 -0
  101. data/ext/iup-linux/include/iupdial.h +1 -63
  102. data/ext/iup-linux/include/iupgauge.h +1 -57
  103. data/ext/iup-linux/include/iupgc.h +1 -0
  104. data/ext/iup-linux/include/iupgetparam.h +1 -27
  105. data/ext/iup-linux/include/iupgl.h +2 -7
  106. data/ext/iup-linux/include/iupim.h +7 -1
  107. data/ext/iup-linux/include/iupkey.h +4 -4
  108. data/ext/iup-linux/include/iupmask.h +2 -1
  109. data/ext/iup-linux/include/iupmatrix.h +1 -63
  110. data/ext/iup-linux/include/iupsbox.h +1 -0
  111. data/ext/iup-linux/include/iupspin.h +1 -21
  112. data/ext/iup-linux/include/iuptabs.h +1 -75
  113. data/ext/iup-linux/include/iuptree.h +1 -93
  114. data/ext/iup-linux/include/iupval.h +1 -46
  115. data/ext/iup-linux/include/old_im.h +59 -59
  116. data/ext/iup-linux/include/wd.h +5 -0
  117. data/ext/iup-linux/libcd.a +0 -0
  118. data/ext/iup-linux/libcdcontextplus.a +0 -0
  119. data/ext/iup-linux/libcdgdk.a +0 -0
  120. data/ext/iup-linux/libcdpdf.a +0 -0
  121. data/ext/iup-linux/libfreetype.a +0 -0
  122. data/ext/iup-linux/libim.a +0 -0
  123. data/ext/iup-linux/libim_fftw.a +0 -0
  124. data/ext/iup-linux/libim_jp2.a +0 -0
  125. data/ext/iup-linux/libim_process.a +0 -0
  126. data/ext/iup-linux/libiup.a +0 -0
  127. data/ext/iup-linux/libiup_pplot.a +0 -0
  128. data/ext/iup-linux/libiupcd.a +0 -0
  129. data/ext/iup-linux/libiupcontrols.a +0 -0
  130. data/ext/iup-linux/libiupgl.a +0 -0
  131. data/ext/iup-linux/libiupim.a +0 -0
  132. data/ext/iup-linux/libiupimglib.a +0 -0
  133. data/ext/iup-linux/libiupmot.a +0 -0
  134. data/ext/iup-linux/libpdflib.a +0 -0
  135. data/ext/{iup-win32 → iup-mingw32}/include/cd.h +9 -5
  136. data/ext/{iup-win32 → iup-mingw32}/include/cd_canvas.hpp +0 -0
  137. data/ext/{iup-win32 → iup-mingw32}/include/cd_old.h +0 -0
  138. data/ext/{iup-win32 → iup-mingw32}/include/cd_private.h +13 -6
  139. data/ext/{iup-win32 → iup-mingw32}/include/cdcgm.h +0 -0
  140. data/ext/{iup-win32 → iup-mingw32}/include/cdclipbd.h +0 -0
  141. data/ext/{iup-win32 → iup-mingw32}/include/cddbuf.h +0 -0
  142. data/ext/{iup-win32 → iup-mingw32}/include/cddebug.h +0 -0
  143. data/ext/{iup-win32 → iup-mingw32}/include/cddgn.h +0 -0
  144. data/ext/{iup-win32 → iup-mingw32}/include/cddxf.h +0 -0
  145. data/ext/{iup-win32 → iup-mingw32}/include/cdemf.h +0 -0
  146. data/ext/{iup-win32 → iup-mingw32}/include/cdgdiplus.h +0 -0
  147. data/ext/{iup-win32 → iup-mingw32}/include/cdimage.h +0 -0
  148. data/ext/{iup-win32 → iup-mingw32}/include/cdirgb.h +0 -0
  149. data/ext/{iup-win32 → iup-mingw32}/include/cdiup.h +0 -0
  150. data/ext/{iup-win32 → iup-mingw32}/include/cdlua.h +0 -0
  151. data/ext/{iup-win32 → iup-mingw32}/include/cdlua3_private.h +0 -0
  152. data/ext/{iup-win32 → iup-mingw32}/include/cdlua5_private.h +0 -0
  153. data/ext/{iup-win32 → iup-mingw32}/include/cdluaim.h +0 -0
  154. data/ext/{iup-win32 → iup-mingw32}/include/cdluaiup.h +0 -0
  155. data/ext/{iup-win32 → iup-mingw32}/include/cdluapdf.h +0 -0
  156. data/ext/{iup-win32 → iup-mingw32}/include/cdmf.h +0 -0
  157. data/ext/{iup-win32 → iup-mingw32}/include/cdmf_private.h +0 -0
  158. data/ext/{iup-win32 → iup-mingw32}/include/cdnative.h +0 -0
  159. data/ext/{iup-win32 → iup-mingw32}/include/cdpdf.h +0 -0
  160. data/ext/{iup-win32 → iup-mingw32}/include/cdpicture.h +0 -0
  161. data/ext/{iup-win32 → iup-mingw32}/include/cdprint.h +0 -0
  162. data/ext/{iup-win32 → iup-mingw32}/include/cdps.h +0 -0
  163. data/ext/iup-mingw32/include/cdsvg.h +22 -0
  164. data/ext/{iup-win32 → iup-mingw32}/include/cdwmf.h +0 -0
  165. data/ext/iup-mingw32/include/im.h +287 -0
  166. data/ext/iup-mingw32/include/im_attrib.h +120 -0
  167. data/ext/iup-mingw32/include/im_attrib_flat.h +39 -0
  168. data/ext/iup-mingw32/include/im_binfile.h +224 -0
  169. data/ext/iup-mingw32/include/im_capture.h +365 -0
  170. data/ext/iup-mingw32/include/im_color.h +465 -0
  171. data/ext/iup-mingw32/include/im_colorhsi.h +56 -0
  172. data/ext/iup-mingw32/include/im_complex.h +180 -0
  173. data/ext/iup-mingw32/include/im_convert.h +142 -0
  174. data/ext/iup-mingw32/include/im_counter.h +69 -0
  175. data/ext/iup-mingw32/include/im_dib.h +195 -0
  176. data/ext/iup-mingw32/include/im_file.h +115 -0
  177. data/ext/iup-mingw32/include/im_format.h +97 -0
  178. data/ext/iup-mingw32/include/im_format_all.h +575 -0
  179. data/ext/iup-mingw32/include/im_format_avi.h +88 -0
  180. data/ext/iup-mingw32/include/im_format_ecw.h +93 -0
  181. data/ext/iup-mingw32/include/im_format_jp2.h +79 -0
  182. data/ext/iup-mingw32/include/im_format_raw.h +74 -0
  183. data/ext/iup-mingw32/include/im_format_wmv.h +101 -0
  184. data/ext/iup-mingw32/include/im_image.h +425 -0
  185. data/ext/iup-mingw32/include/im_kernel.h +315 -0
  186. data/ext/iup-mingw32/include/im_lib.h +191 -0
  187. data/ext/iup-mingw32/include/im_math.h +368 -0
  188. data/ext/iup-mingw32/include/im_math_op.h +214 -0
  189. data/ext/iup-mingw32/include/im_palette.h +172 -0
  190. data/ext/iup-mingw32/include/im_plus.h +73 -0
  191. data/ext/iup-mingw32/include/im_process.h +36 -0
  192. data/ext/iup-mingw32/include/im_process_ana.h +222 -0
  193. data/ext/iup-mingw32/include/im_process_glo.h +170 -0
  194. data/ext/iup-mingw32/include/im_process_loc.h +608 -0
  195. data/ext/iup-mingw32/include/im_process_pon.h +734 -0
  196. data/ext/iup-mingw32/include/im_raw.h +34 -0
  197. data/ext/iup-mingw32/include/im_util.h +277 -0
  198. data/ext/iup-mingw32/include/imlua.h +75 -0
  199. data/ext/{iup-win32 → iup-mingw32}/include/iup.h +86 -40
  200. data/ext/{iup-win32 → iup-mingw32}/include/iup_pplot.h +0 -0
  201. data/ext/iup-mingw32/include/iupcb.h +1 -0
  202. data/ext/iup-mingw32/include/iupcbox.h +1 -0
  203. data/ext/{iup-win32 → iup-mingw32}/include/iupcbs.h +1 -1
  204. data/ext/iup-mingw32/include/iupcells.h +1 -0
  205. data/ext/iup-mingw32/include/iupcolorbar.h +1 -0
  206. data/ext/iup-mingw32/include/iupcontrols.h +46 -0
  207. data/ext/{iup-win32 → iup-mingw32}/include/iupdef.h +205 -0
  208. data/ext/iup-mingw32/include/iupdial.h +1 -0
  209. data/ext/iup-mingw32/include/iupgauge.h +1 -0
  210. data/ext/iup-mingw32/include/iupgc.h +1 -0
  211. data/ext/iup-mingw32/include/iupgetparam.h +1 -0
  212. data/ext/{iup-win32 → iup-mingw32}/include/iupgl.h +2 -7
  213. data/ext/{iup-win32 → iup-mingw32}/include/iupim.h +7 -1
  214. data/ext/{iup-win32 → iup-mingw32}/include/iupkey.h +4 -4
  215. data/ext/{iup-win32 → iup-mingw32}/include/iuplua.h +0 -0
  216. data/ext/{iup-win32 → iup-mingw32}/include/iuplua_pplot.h +0 -0
  217. data/ext/{iup-win32 → iup-mingw32}/include/iupluacontrols.h +0 -0
  218. data/ext/{iup-win32 → iup-mingw32}/include/iupluagl.h +0 -0
  219. data/ext/{iup-win32 → iup-mingw32}/include/iupluaim.h +0 -0
  220. data/ext/{iup-win32 → iup-mingw32}/include/iupluaole.h +0 -0
  221. data/ext/{iup-win32 → iup-mingw32}/include/iupmask.h +2 -1
  222. data/ext/iup-mingw32/include/iupmatrix.h +1 -0
  223. data/ext/{iup-win32 → iup-mingw32}/include/iupole.h +0 -0
  224. data/ext/iup-mingw32/include/iupsbox.h +1 -0
  225. data/ext/iup-mingw32/include/iupspin.h +1 -0
  226. data/ext/iup-mingw32/include/iuptabs.h +1 -0
  227. data/ext/iup-mingw32/include/iuptree.h +1 -0
  228. data/ext/iup-mingw32/include/iupval.h +1 -0
  229. data/ext/iup-mingw32/include/old_im.h +59 -0
  230. data/ext/{iup-win32 → iup-mingw32}/include/wd.h +5 -0
  231. data/ext/{iup-win32 → iup-mingw32}/include/wd_old.h +0 -0
  232. data/ext/iup-mingw32/libcd.a +0 -0
  233. data/ext/iup-mingw32/libcdpdf.a +0 -0
  234. data/ext/iup-mingw32/libfreetype6.a +0 -0
  235. data/ext/iup-mingw32/libim.a +0 -0
  236. data/ext/iup-mingw32/libim_avi.a +0 -0
  237. data/ext/iup-mingw32/libim_fftw.a +0 -0
  238. data/ext/iup-mingw32/libim_jp2.a +0 -0
  239. data/ext/iup-mingw32/libim_process.a +0 -0
  240. data/ext/iup-mingw32/libiup.a +0 -0
  241. data/ext/iup-mingw32/libiup_pplot.a +0 -0
  242. data/ext/iup-mingw32/libiupcd.a +0 -0
  243. data/ext/iup-mingw32/libiupcontrols.a +0 -0
  244. data/ext/iup-mingw32/libiupgl.a +0 -0
  245. data/ext/iup-mingw32/libiupim.a +0 -0
  246. data/ext/iup-mingw32/libiupimglib.a +0 -0
  247. data/ext/iup-mingw32/libiupole.a +0 -0
  248. data/ext/iup-mingw32/libpdflib.a +0 -0
  249. data/ext/iup-mswin32/cd.lib +0 -0
  250. data/ext/iup-mswin32/cdcontextplus.lib +0 -0
  251. data/ext/iup-mswin32/cdgdk.lib +0 -0
  252. data/ext/iup-mswin32/cdpdf.lib +0 -0
  253. data/ext/iup-mswin32/freetype6.lib +0 -0
  254. data/ext/iup-mswin32/im.lib +0 -0
  255. data/ext/iup-mswin32/im_avi.lib +0 -0
  256. data/ext/iup-mswin32/im_capture.lib +0 -0
  257. data/ext/iup-mswin32/im_fftw.lib +0 -0
  258. data/ext/iup-mswin32/im_jp2.lib +0 -0
  259. data/ext/iup-mswin32/im_process.lib +0 -0
  260. data/ext/iup-mswin32/im_wmv.lib +0 -0
  261. data/ext/iup-mswin32/include/cd.h +498 -0
  262. data/ext/iup-mswin32/include/cd_canvas.hpp +358 -0
  263. data/ext/iup-mswin32/include/cd_old.h +158 -0
  264. data/ext/iup-mswin32/include/cd_private.h +369 -0
  265. data/ext/iup-mswin32/include/cdcgm.h +34 -0
  266. data/ext/iup-mswin32/include/cdclipbd.h +22 -0
  267. data/ext/iup-mswin32/include/cddbuf.h +23 -0
  268. data/ext/iup-mswin32/include/cddebug.h +24 -0
  269. data/ext/iup-mswin32/include/cddgn.h +23 -0
  270. data/ext/iup-mswin32/include/cddxf.h +22 -0
  271. data/ext/iup-mswin32/include/cdemf.h +22 -0
  272. data/ext/iup-mswin32/include/cdgdiplus.h +29 -0
  273. data/ext/iup-mswin32/include/cdimage.h +23 -0
  274. data/ext/iup-mswin32/include/cdirgb.h +30 -0
  275. data/ext/iup-mswin32/include/cdiup.h +22 -0
  276. data/ext/iup-mswin32/include/cdlua.h +39 -0
  277. data/ext/iup-mswin32/include/cdlua3_private.h +120 -0
  278. data/ext/iup-mswin32/include/cdlua5_private.h +141 -0
  279. data/ext/iup-mswin32/include/cdluaim.h +24 -0
  280. data/ext/iup-mswin32/include/cdluaiup.h +27 -0
  281. data/ext/iup-mswin32/include/cdluapdf.h +27 -0
  282. data/ext/iup-mswin32/include/cdmf.h +24 -0
  283. data/ext/iup-mswin32/include/cdmf_private.h +32 -0
  284. data/ext/iup-mswin32/include/cdnative.h +26 -0
  285. data/ext/iup-mswin32/include/cdpdf.h +38 -0
  286. data/ext/iup-mswin32/include/cdpicture.h +22 -0
  287. data/ext/iup-mswin32/include/cdprint.h +23 -0
  288. data/ext/iup-mswin32/include/cdps.h +37 -0
  289. data/ext/iup-mswin32/include/cdsvg.h +22 -0
  290. data/ext/iup-mswin32/include/cdwmf.h +22 -0
  291. data/ext/iup-mswin32/include/im.h +287 -0
  292. data/ext/iup-mswin32/include/im_attrib.h +120 -0
  293. data/ext/iup-mswin32/include/im_attrib_flat.h +39 -0
  294. data/ext/iup-mswin32/include/im_binfile.h +224 -0
  295. data/ext/iup-mswin32/include/im_capture.h +365 -0
  296. data/ext/iup-mswin32/include/im_color.h +465 -0
  297. data/ext/iup-mswin32/include/im_colorhsi.h +56 -0
  298. data/ext/iup-mswin32/include/im_complex.h +180 -0
  299. data/ext/iup-mswin32/include/im_convert.h +142 -0
  300. data/ext/iup-mswin32/include/im_counter.h +69 -0
  301. data/ext/iup-mswin32/include/im_dib.h +195 -0
  302. data/ext/iup-mswin32/include/im_file.h +115 -0
  303. data/ext/iup-mswin32/include/im_format.h +97 -0
  304. data/ext/iup-mswin32/include/im_format_all.h +575 -0
  305. data/ext/iup-mswin32/include/im_format_avi.h +88 -0
  306. data/ext/iup-mswin32/include/im_format_ecw.h +93 -0
  307. data/ext/iup-mswin32/include/im_format_jp2.h +79 -0
  308. data/ext/iup-mswin32/include/im_format_raw.h +74 -0
  309. data/ext/iup-mswin32/include/im_format_wmv.h +101 -0
  310. data/ext/iup-mswin32/include/im_image.h +425 -0
  311. data/ext/iup-mswin32/include/im_kernel.h +315 -0
  312. data/ext/iup-mswin32/include/im_lib.h +191 -0
  313. data/ext/iup-mswin32/include/im_math.h +368 -0
  314. data/ext/iup-mswin32/include/im_math_op.h +214 -0
  315. data/ext/iup-mswin32/include/im_palette.h +172 -0
  316. data/ext/iup-mswin32/include/im_plus.h +73 -0
  317. data/ext/iup-mswin32/include/im_process.h +36 -0
  318. data/ext/iup-mswin32/include/im_process_ana.h +222 -0
  319. data/ext/iup-mswin32/include/im_process_glo.h +170 -0
  320. data/ext/iup-mswin32/include/im_process_loc.h +608 -0
  321. data/ext/iup-mswin32/include/im_process_pon.h +734 -0
  322. data/ext/iup-mswin32/include/im_raw.h +34 -0
  323. data/ext/iup-mswin32/include/im_util.h +277 -0
  324. data/ext/iup-mswin32/include/imlua.h +75 -0
  325. data/ext/iup-mswin32/include/iup.h +364 -0
  326. data/ext/iup-mswin32/include/iup_pplot.h +40 -0
  327. data/ext/iup-mswin32/include/iupcb.h +1 -0
  328. data/ext/iup-mswin32/include/iupcbox.h +1 -0
  329. data/ext/iup-mswin32/include/iupcbs.h +43 -0
  330. data/ext/iup-mswin32/include/iupcells.h +1 -0
  331. data/ext/iup-mswin32/include/iupcolorbar.h +1 -0
  332. data/ext/iup-mswin32/include/iupcontrols.h +46 -0
  333. data/ext/iup-mswin32/include/iupdef.h +725 -0
  334. data/ext/iup-mswin32/include/iupdial.h +1 -0
  335. data/ext/iup-mswin32/include/iupgauge.h +1 -0
  336. data/ext/iup-mswin32/include/iupgc.h +1 -0
  337. data/ext/iup-mswin32/include/iupgetparam.h +1 -0
  338. data/ext/iup-mswin32/include/iupgl.h +96 -0
  339. data/ext/iup-mswin32/include/iupim.h +27 -0
  340. data/ext/iup-mswin32/include/iupkey.h +457 -0
  341. data/ext/iup-mswin32/include/iuplua.h +41 -0
  342. data/ext/iup-mswin32/include/iuplua_pplot.h +26 -0
  343. data/ext/iup-mswin32/include/iupluacontrols.h +27 -0
  344. data/ext/iup-mswin32/include/iupluagl.h +26 -0
  345. data/ext/iup-mswin32/include/iupluaim.h +26 -0
  346. data/ext/iup-mswin32/include/iupluaole.h +26 -0
  347. data/ext/iup-mswin32/include/iupmask.h +41 -0
  348. data/ext/iup-mswin32/include/iupmatrix.h +1 -0
  349. data/ext/iup-mswin32/include/iupole.h +24 -0
  350. data/ext/iup-mswin32/include/iupsbox.h +1 -0
  351. data/ext/iup-mswin32/include/iupspin.h +1 -0
  352. data/ext/iup-mswin32/include/iuptabs.h +1 -0
  353. data/ext/iup-mswin32/include/iuptree.h +1 -0
  354. data/ext/iup-mswin32/include/iupval.h +1 -0
  355. data/ext/iup-mswin32/include/old_im.h +59 -0
  356. data/ext/iup-mswin32/include/wd.h +83 -0
  357. data/ext/iup-mswin32/include/wd_old.h +85 -0
  358. data/ext/iup-mswin32/iup.lib +0 -0
  359. data/ext/iup-mswin32/iup_pplot.lib +0 -0
  360. data/ext/iup-mswin32/iupcd.lib +0 -0
  361. data/ext/iup-mswin32/iupcontrols.lib +0 -0
  362. data/ext/iup-mswin32/iupgl.lib +0 -0
  363. data/ext/iup-mswin32/iupgtk.lib +0 -0
  364. data/ext/iup-mswin32/iupim.lib +0 -0
  365. data/ext/{iup-win32/iupimglib.dll → iup-mswin32/iupimglib.lib} +0 -0
  366. data/ext/iup-mswin32/iupole.lib +0 -0
  367. data/ext/iup-mswin32/pdflib.lib +0 -0
  368. data/ext/iup.c +6 -37
  369. data/ext/{rb_cd.h → rb_cd.c} +300 -302
  370. data/ext/rb_iup.c +2485 -0
  371. data/ext/rb_iup.h +400 -2475
  372. data/ext/{rb_iup_pplot.h → rb_iup_pplot.c} +21 -22
  373. data/ext/{rb_iupcb.h → rb_iupcb.c} +2 -3
  374. data/ext/{rb_iupcells.h → rb_iupcells.c} +5 -5
  375. data/ext/{rb_iupcolorbar.h → rb_iupcolorbar.c} +2 -3
  376. data/ext/{rb_iupcontrols.h → rb_iupcontrols.c} +1 -1
  377. data/ext/{rb_iupdial.h → rb_iupdial.c} +3 -4
  378. data/ext/{rb_iupgauge.h → rb_iupgauge.c} +2 -3
  379. data/ext/{rb_iupgc.h → rb_iupgc.c} +1 -1
  380. data/ext/{rb_iupgetparam.h → rb_iupgetparam.c} +12 -10
  381. data/ext/{rb_iupgl.h → rb_iupgl.c} +10 -10
  382. data/ext/{rb_iupim.h → rb_iupim.c} +6 -6
  383. data/ext/{rb_iupmatrix.h → rb_iupmatrix.c} +15 -16
  384. data/ext/{rb_iupole.h → rb_iupole.c} +4 -4
  385. data/ext/{rb_iupsbox.h → rb_iupsbox.c} +3 -3
  386. data/ext/{rb_iupspin.h → rb_iupspin.c} +4 -5
  387. data/ext/{rb_iuptabs.h → rb_iuptabs.c} +5 -6
  388. data/ext/{rb_iuptree.h → rb_iuptree.c} +20 -21
  389. data/ext/{rb_iupval.h → rb_iupval.c} +3 -4
  390. data/ruby-iup.gemspec +26 -0
  391. data/test/test_ruby_iup.rb +25 -0
  392. metadata +395 -270
  393. data/ext/iup-linux/include/lauxlib.h +0 -174
  394. data/ext/iup-linux/include/lua.h +0 -388
  395. data/ext/iup-linux/include/lua.hpp +0 -9
  396. data/ext/iup-linux/include/luaconf.h +0 -763
  397. data/ext/iup-linux/include/lualib.h +0 -53
  398. data/ext/iup-linux/libcd.so +0 -0
  399. data/ext/iup-linux/libcdcontextplus.so +0 -0
  400. data/ext/iup-linux/libcdpdf.so +0 -0
  401. data/ext/iup-linux/libfreetype.so +0 -0
  402. data/ext/iup-linux/libim.so +0 -0
  403. data/ext/iup-linux/libim_fftw.so +0 -0
  404. data/ext/iup-linux/libim_jp2.so +0 -0
  405. data/ext/iup-linux/libim_process.so +0 -0
  406. data/ext/iup-linux/libiup.so +0 -0
  407. data/ext/iup-linux/libiup_pplot.so +0 -0
  408. data/ext/iup-linux/libiupcd.so +0 -0
  409. data/ext/iup-linux/libiupcontrols.so +0 -0
  410. data/ext/iup-linux/libiupgl.so +0 -0
  411. data/ext/iup-linux/libiupim.so +0 -0
  412. data/ext/iup-linux/libiupimglib.so +0 -0
  413. data/ext/iup-linux/libiupmot.so +0 -0
  414. data/ext/iup-linux/libpdflib.so +0 -0
  415. data/ext/iup-win32/cd.dll +0 -0
  416. data/ext/iup-win32/cd.lib +0 -0
  417. data/ext/iup-win32/cdcontextplus.dll +0 -0
  418. data/ext/iup-win32/cdcontextplus.lib +0 -0
  419. data/ext/iup-win32/cdpdf.dll +0 -0
  420. data/ext/iup-win32/cdpdf.lib +0 -0
  421. data/ext/iup-win32/freetype6.dll +0 -0
  422. data/ext/iup-win32/freetype6.lib +0 -0
  423. data/ext/iup-win32/im.dll +0 -0
  424. data/ext/iup-win32/im.lib +0 -0
  425. data/ext/iup-win32/im_avi.dll +0 -0
  426. data/ext/iup-win32/im_avi.lib +0 -0
  427. data/ext/iup-win32/im_capture.dll +0 -0
  428. data/ext/iup-win32/im_capture.lib +0 -0
  429. data/ext/iup-win32/im_ecw.dll +0 -0
  430. data/ext/iup-win32/im_fftw.dll +0 -0
  431. data/ext/iup-win32/im_fftw.lib +0 -0
  432. data/ext/iup-win32/im_jp2.dll +0 -0
  433. data/ext/iup-win32/im_jp2.lib +0 -0
  434. data/ext/iup-win32/im_process.dll +0 -0
  435. data/ext/iup-win32/im_process.lib +0 -0
  436. data/ext/iup-win32/im_wmv.dll +0 -0
  437. data/ext/iup-win32/im_wmv.lib +0 -0
  438. data/ext/iup-win32/imlua_capture51.dll +0 -0
  439. data/ext/iup-win32/imlua_capture51.lib +0 -0
  440. data/ext/iup-win32/imlua_wmv51.dll +0 -0
  441. data/ext/iup-win32/imlua_wmv51.lib +0 -0
  442. data/ext/iup-win32/include/iupcb.h +0 -25
  443. data/ext/iup-win32/include/iupcells.h +0 -130
  444. data/ext/iup-win32/include/iupcolorbar.h +0 -126
  445. data/ext/iup-win32/include/iupcontrols.h +0 -36
  446. data/ext/iup-win32/include/iupdial.h +0 -63
  447. data/ext/iup-win32/include/iupgauge.h +0 -57
  448. data/ext/iup-win32/include/iupgetparam.h +0 -27
  449. data/ext/iup-win32/include/iupmatrix.h +0 -63
  450. data/ext/iup-win32/include/iupspin.h +0 -21
  451. data/ext/iup-win32/include/iuptabs.h +0 -75
  452. data/ext/iup-win32/include/iuptree.h +0 -93
  453. data/ext/iup-win32/include/iupval.h +0 -46
  454. data/ext/iup-win32/iup.dll +0 -0
  455. data/ext/iup-win32/iup.lib +0 -0
  456. data/ext/iup-win32/iup_pplot.dll +0 -0
  457. data/ext/iup-win32/iup_pplot.lib +0 -0
  458. data/ext/iup-win32/iupcd.dll +0 -0
  459. data/ext/iup-win32/iupcd.lib +0 -0
  460. data/ext/iup-win32/iupcontrols.dll +0 -0
  461. data/ext/iup-win32/iupcontrols.lib +0 -0
  462. data/ext/iup-win32/iupgl.dll +0 -0
  463. data/ext/iup-win32/iupgl.lib +0 -0
  464. data/ext/iup-win32/iupgtk.dll +0 -0
  465. data/ext/iup-win32/iupgtk.lib +0 -0
  466. data/ext/iup-win32/iupim.dll +0 -0
  467. data/ext/iup-win32/iupim.lib +0 -0
  468. data/ext/iup-win32/iupimglib.lib +0 -0
  469. data/ext/iup-win32/iupole.dll +0 -0
  470. data/ext/iup-win32/iupole.lib +0 -0
  471. data/ext/iup-win32/iupstub.lib +0 -0
  472. data/ext/iup-win32/pdflib.dll +0 -0
  473. data/ext/iup-win32/pdflib.lib +0 -0
  474. data/ext/mkrf_conf.rb +0 -72
  475. data/ext/rb_iupcompat.h +0 -237
  476. data/ext/rb_iupdef.h +0 -3
  477. data/ext/rb_iupmask.h +0 -189
  478. data/lib/README +0 -1
@@ -1,191 +1,191 @@
1
- /** \file
2
- * \brief Library Management and Main Documentation
3
- *
4
- * See Copyright Notice in this file.
5
- */
6
-
7
- #ifndef __IM_LIB_H
8
- #define __IM_LIB_H
9
-
10
- #if defined(__cplusplus)
11
- extern "C" {
12
- #endif
13
-
14
-
15
- /** \defgroup lib Library Management
16
- * \ingroup util
17
- * \par
18
- * Usefull definitions for about dialogs and
19
- * for comparing the compiled version with the linked version of the library.
20
- * \par
21
- * \verbatim im._AUTHOR [in Lua 5] \endverbatim
22
- * \verbatim im._COPYRIGHT [in Lua 5] \endverbatim
23
- * \verbatim im._VERSION [in Lua 5] \endverbatim
24
- * \verbatim im._VERSION_DATE [in Lua 5] \endverbatim
25
- * \verbatim im._VERSION_NUMBER [in Lua 5] \endverbatim
26
- * \verbatim im._DESCRIPTION [in Lua 5] \endverbatim
27
- * \verbatim im._NAME [in Lua 5] \endverbatim
28
- * \par
29
- * See \ref im_lib.h
30
- * @{
31
- */
32
- #define IM_AUTHOR "Antonio Scuri"
33
- #define IM_COPYRIGHT "Copyright (C) 1994-2008 Tecgraf, PUC-Rio."
34
- #define IM_VERSION "3.4.0"
35
- #define IM_VERSION_NUMBER 304000
36
- #define IM_VERSION_DATE "2008/10/14"
37
- #define IM_DESCRIPTION "Image Representation, Storage, Capture and Processing"
38
- #define IM_NAME "IM - An Imaging Toolkit"
39
- /** @} */
40
-
41
-
42
- /** Returns the library current version. Returns the definition IM_VERSION.
43
- *
44
- * \verbatim im.Version() -> version: string [in Lua 5] \endverbatim
45
- * \ingroup lib */
46
- const char* imVersion(void);
47
-
48
- /** Returns the library current version release date. Returns the definition IM_VERSION_DATE.
49
- *
50
- * \verbatim im.VersionDate() -> date: string [in Lua 5] \endverbatim
51
- * \ingroup lib */
52
- const char* imVersionDate(void);
53
-
54
- /** Returns the library current version number. Returns the definition IM_VERSION_NUMBER. \n
55
- * Can be compared in run time with IM_VERSION_NUMBER to compare compiled and linked versions of the library.
56
- *
57
- * \verbatim im.VersionNumber() -> version: number [in Lua 5] \endverbatim
58
- * \ingroup lib */
59
- int imVersionNumber(void);
60
-
61
-
62
- #if defined(__cplusplus)
63
- }
64
- #endif
65
-
66
-
67
- /*! \mainpage IM
68
- * <CENTER>
69
- * <H3> Image Representation, Storage, Capture and Processing </H3>
70
- * Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil \n
71
- * http://www.tecgraf.puc-rio.br/im \n
72
- * mailto:im@tecgraf.puc-rio.br
73
- * </CENTER>
74
- *
75
- * \section over Overview
76
- * \par
77
- * IM is a toolkit for Digital Imaging.
78
- * \par
79
- * It provides support for image capture, several image file formats and many image processing operations.
80
- * \par
81
- * Image representation includes scientific data types (like IEEE floating point data)
82
- * and attributes (or metadata like GeoTIFF and Exif tags).
83
- * Animation, video and volumes are supported as image sequences,
84
- * but there is no digital audio support.
85
- * \par
86
- * The main goal of the library is to provide a simple API and abstraction
87
- * of images for scientific applications.
88
- * \par
89
- * The toolkit API is written in C.
90
- * The core library source code is implemented in C++ and it is very portable,
91
- * it can be compiled in Windows and UNIX with no modifications.
92
- * New image processing operations can be implemented in C or in C++.
93
- * \par
94
- * IM is free software, can be used for public and commercial applications.
95
- * \par
96
- * This work was developed at Tecgraf/PUC-Rio
97
- * by means of the partnership with PETROBRAS/CENPES.
98
- *
99
- * \section author Author
100
- * \par
101
- * Basic Software Group @ Tecgraf/PUC-Rio
102
- * - Antonio Scuri scuri@tecgraf.puc-rio.br
103
- *
104
- * \section copyright Copyright Notice
105
- \verbatim
106
-
107
- ****************************************************************************
108
- Copyright (C) 1994-2008 Tecgraf, PUC-Rio.
109
-
110
- Permission is hereby granted, free of charge, to any person obtaining
111
- a copy of this software and associated documentation files (the
112
- "Software"), to deal in the Software without restriction, including
113
- without limitation the rights to use, copy, modify, merge, publish,
114
- distribute, sublicense, and/or sell copies of the Software, and to
115
- permit persons to whom the Software is furnished to do so, subject to
116
- the following conditions:
117
-
118
- The above copyright notice and this permission notice shall be
119
- included in all copies or substantial portions of the Software.
120
-
121
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
122
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
123
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
124
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
125
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
126
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
127
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
128
- ****************************************************************************
129
- \endverbatim
130
- */
131
-
132
-
133
- /** \defgroup imagerep Image Representation
134
- * \par
135
- * See \ref im.h
136
- */
137
-
138
-
139
- /** \defgroup file Image Storage
140
- * \par
141
- * See \ref im.h
142
- */
143
-
144
-
145
- /** \defgroup format File Formats
146
- * \par
147
- * See \ref im.h
148
- *
149
- * Internal Predefined File Formats:
150
- * \li "BMP" - Windows Device Independent Bitmap
151
- * \li "PCX" - ZSoft Picture
152
- * \li "GIF" - Graphics Interchange Format
153
- * \li "TIFF" - Tagged Image File Format
154
- * \li "RAS" - Sun Raster File
155
- * \li "SGI" - Silicon Graphics Image File Format
156
- * \li "JPEG" - JPEG File Interchange Format
157
- * \li "LED" - IUP image in LED
158
- * \li "TGA" - Truevision Targa
159
- * \li "RAW" - RAW File
160
- * \li "PNM" - Netpbm Portable Image Map
161
- * \li "ICO" - Windows Icon
162
- * \li "PNG" - Portable Network Graphic Format
163
- *
164
- * Other Supported File Formats:
165
- * \li "JP2" - JPEG-2000 JP2 File Format
166
- * \li "AVI" - Windows Audio-Video Interleaved RIFF
167
- * \li "WMV" - Windows Media Video Format
168
- *
169
- * Some Known Compressions:
170
- * \li "NONE" - No Compression.
171
- * \li "RLE" - Run Lenght Encoding.
172
- * \li "LZW" - Lempel, Ziff and Welsh.
173
- * \li "JPEG" - Join Photographics Experts Group.
174
- * \li "DEFLATE" - LZ77 variation (ZIP)
175
- *
176
- * \ingroup file */
177
-
178
-
179
- /* Library Names Convention
180
- *
181
- * Global Functions and Types - "im[Object][Action]" using first capitals (imFileOpen)
182
- * Local Functions and Types - "i[Object][Action]" using first capitals (iTIFFGetCompIndex)
183
- * Local Static Variables - same as local functions and types (iFormatCount)
184
- * Local Static Tables - same as local functions and types with "Table" suffix (iTIFFCompTable)
185
- * Variables and Members - no prefix, all lower case (width)
186
- * Defines and Enumerations - all capitals (IM_ERR_NONE)
187
- *
188
- */
189
-
190
-
191
- #endif
1
+ /** \file
2
+ * \brief Library Management and Main Documentation
3
+ *
4
+ * See Copyright Notice in this file.
5
+ */
6
+
7
+ #ifndef __IM_LIB_H
8
+ #define __IM_LIB_H
9
+
10
+ #if defined(__cplusplus)
11
+ extern "C" {
12
+ #endif
13
+
14
+
15
+ /** \defgroup lib Library Management
16
+ * \ingroup util
17
+ * \par
18
+ * Usefull definitions for about dialogs and
19
+ * for comparing the compiled version with the linked version of the library.
20
+ * \par
21
+ * \verbatim im._AUTHOR [in Lua 5] \endverbatim
22
+ * \verbatim im._COPYRIGHT [in Lua 5] \endverbatim
23
+ * \verbatim im._VERSION [in Lua 5] \endverbatim
24
+ * \verbatim im._VERSION_DATE [in Lua 5] \endverbatim
25
+ * \verbatim im._VERSION_NUMBER [in Lua 5] \endverbatim
26
+ * \verbatim im._DESCRIPTION [in Lua 5] \endverbatim
27
+ * \verbatim im._NAME [in Lua 5] \endverbatim
28
+ * \par
29
+ * See \ref im_lib.h
30
+ * @{
31
+ */
32
+ #define IM_AUTHOR "Antonio Scuri"
33
+ #define IM_COPYRIGHT "Copyright (C) 1994-2010 Tecgraf, PUC-Rio."
34
+ #define IM_VERSION "3.6" /* bug fixes are reported only by imVersion functions */
35
+ #define IM_VERSION_NUMBER 306000
36
+ #define IM_VERSION_DATE "2010/01/26"
37
+ #define IM_DESCRIPTION "Image Representation, Storage, Capture and Processing"
38
+ #define IM_NAME "IM - An Imaging Toolkit"
39
+ /** @} */
40
+
41
+
42
+ /** Returns the library current version. Returns the definition IM_VERSION plus the bug fix number.
43
+ *
44
+ * \verbatim im.Version() -> version: string [in Lua 5] \endverbatim
45
+ * \ingroup lib */
46
+ const char* imVersion(void);
47
+
48
+ /** Returns the library current version release date. Returns the definition IM_VERSION_DATE.
49
+ *
50
+ * \verbatim im.VersionDate() -> date: string [in Lua 5] \endverbatim
51
+ * \ingroup lib */
52
+ const char* imVersionDate(void);
53
+
54
+ /** Returns the library current version number. Returns the definition IM_VERSION_NUMBER plus the bug fix number. \n
55
+ * Can be compared in run time with IM_VERSION_NUMBER to compare compiled and linked versions of the library.
56
+ *
57
+ * \verbatim im.VersionNumber() -> version: number [in Lua 5] \endverbatim
58
+ * \ingroup lib */
59
+ int imVersionNumber(void);
60
+
61
+
62
+ #if defined(__cplusplus)
63
+ }
64
+ #endif
65
+
66
+
67
+ /*! \mainpage IM
68
+ * <CENTER>
69
+ * <H3> Image Representation, Storage, Capture and Processing </H3>
70
+ * Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil \n
71
+ * http://www.tecgraf.puc-rio.br/im \n
72
+ * mailto:im@tecgraf.puc-rio.br
73
+ * </CENTER>
74
+ *
75
+ * \section over Overview
76
+ * \par
77
+ * IM is a toolkit for Digital Imaging.
78
+ * \par
79
+ * It provides support for image capture, several image file formats and many image processing operations.
80
+ * \par
81
+ * Image representation includes scientific data types (like IEEE floating point data)
82
+ * and attributes (or metadata like GeoTIFF and Exif tags).
83
+ * Animation, video and volumes are supported as image sequences,
84
+ * but there is no digital audio support.
85
+ * \par
86
+ * The main goal of the library is to provide a simple API and abstraction
87
+ * of images for scientific applications.
88
+ * \par
89
+ * The toolkit API is written in C.
90
+ * The core library source code is implemented in C++ and it is very portable,
91
+ * it can be compiled in Windows and UNIX with no modifications.
92
+ * New image processing operations can be implemented in C or in C++.
93
+ * \par
94
+ * IM is free software, can be used for public and commercial applications.
95
+ * \par
96
+ * This work was developed at Tecgraf/PUC-Rio
97
+ * by means of the partnership with PETROBRAS/CENPES.
98
+ *
99
+ * \section author Author
100
+ * \par
101
+ * Basic Software Group @ Tecgraf/PUC-Rio
102
+ * - Antonio Scuri scuri@tecgraf.puc-rio.br
103
+ *
104
+ * \section copyright Copyright Notice
105
+ \verbatim
106
+
107
+ ****************************************************************************
108
+ Copyright (C) 1994-2010 Tecgraf, PUC-Rio.
109
+
110
+ Permission is hereby granted, free of charge, to any person obtaining
111
+ a copy of this software and associated documentation files (the
112
+ "Software"), to deal in the Software without restriction, including
113
+ without limitation the rights to use, copy, modify, merge, publish,
114
+ distribute, sublicense, and/or sell copies of the Software, and to
115
+ permit persons to whom the Software is furnished to do so, subject to
116
+ the following conditions:
117
+
118
+ The above copyright notice and this permission notice shall be
119
+ included in all copies or substantial portions of the Software.
120
+
121
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
122
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
123
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
124
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
125
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
126
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
127
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
128
+ ****************************************************************************
129
+ \endverbatim
130
+ */
131
+
132
+
133
+ /** \defgroup imagerep Image Representation
134
+ * \par
135
+ * See \ref im.h
136
+ */
137
+
138
+
139
+ /** \defgroup file Image Storage
140
+ * \par
141
+ * See \ref im.h
142
+ */
143
+
144
+
145
+ /** \defgroup format File Formats
146
+ * \par
147
+ * See \ref im.h
148
+ *
149
+ * Internal Predefined File Formats:
150
+ * \li "BMP" - Windows Device Independent Bitmap
151
+ * \li "PCX" - ZSoft Picture
152
+ * \li "GIF" - Graphics Interchange Format
153
+ * \li "TIFF" - Tagged Image File Format
154
+ * \li "RAS" - Sun Raster File
155
+ * \li "SGI" - Silicon Graphics Image File Format
156
+ * \li "JPEG" - JPEG File Interchange Format
157
+ * \li "LED" - IUP image in LED
158
+ * \li "TGA" - Truevision Targa
159
+ * \li "RAW" - RAW File
160
+ * \li "PNM" - Netpbm Portable Image Map
161
+ * \li "ICO" - Windows Icon
162
+ * \li "PNG" - Portable Network Graphic Format
163
+ *
164
+ * Other Supported File Formats:
165
+ * \li "JP2" - JPEG-2000 JP2 File Format
166
+ * \li "AVI" - Windows Audio-Video Interleaved RIFF
167
+ * \li "WMV" - Windows Media Video Format
168
+ *
169
+ * Some Known Compressions:
170
+ * \li "NONE" - No Compression.
171
+ * \li "RLE" - Run Lenght Encoding.
172
+ * \li "LZW" - Lempel, Ziff and Welsh.
173
+ * \li "JPEG" - Join Photographics Experts Group.
174
+ * \li "DEFLATE" - LZ77 variation (ZIP)
175
+ *
176
+ * \ingroup file */
177
+
178
+
179
+ /* Library Names Convention
180
+ *
181
+ * Global Functions and Types - "im[Object][Action]" using first capitals (imFileOpen)
182
+ * Local Functions and Types - "i[Object][Action]" using first capitals (iTIFFGetCompIndex)
183
+ * Local Static Variables - same as local functions and types (iFormatCount)
184
+ * Local Static Tables - same as local functions and types with "Table" suffix (iTIFFCompTable)
185
+ * Variables and Members - no prefix, all lower case (width)
186
+ * Defines and Enumerations - all capitals (IM_ERR_NONE)
187
+ *
188
+ */
189
+
190
+
191
+ #endif
@@ -1,368 +1,368 @@
1
- /** \file
2
- * \brief Math Utilities
3
- *
4
- * See Copyright Notice in im_lib.h
5
- */
6
-
7
- #ifndef __IM_MATH_H
8
- #define __IM_MATH_H
9
-
10
- #include <math.h>
11
- #include "im_util.h"
12
-
13
- #ifdef IM_DEFMATHFLOAT
14
- inline float acosf(float _X) {return ((float)acos((double)_X)); }
15
- inline float asinf(float _X) {return ((float)asin((double)_X)); }
16
- inline float atanf(float _X) {return ((float)atan((double)_X)); }
17
- inline float atan2f(float _X, float _Y) {return ((float)atan2((double)_X, (double)_Y)); }
18
- inline float ceilf(float _X) {return ((float)ceil((double)_X)); }
19
- inline float cosf(float _X) {return ((float)cos((double)_X)); }
20
- inline float coshf(float _X) {return ((float)cosh((double)_X)); }
21
- inline float expf(float _X) {return ((float)exp((double)_X)); }
22
- inline float fabsf(float _X) {return ((float)fabs((double)_X)); }
23
- inline float floorf(float _X) {return ((float)floor((double)_X)); }
24
- inline float fmodf(float _X, float _Y) {return ((float)fmod((double)_X, (double)_Y)); }
25
- inline float logf(float _X) {return ((float)log((double)_X)); }
26
- inline float log10f(float _X) {return ((float)log10((double)_X)); }
27
- inline float powf(float _X, float _Y) {return ((float)pow((double)_X, (double)_Y)); }
28
- inline float sinf(float _X) {return ((float)sin((double)_X)); }
29
- inline float sinhf(float _X) {return ((float)sinh((double)_X)); }
30
- inline float sqrtf(float _X) {return ((float)sqrt((double)_X)); }
31
- inline float tanf(float _X) {return ((float)tan((double)_X)); }
32
- inline float tanhf(float _X) {return ((float)tanh((double)_X)); }
33
- #endif
34
-
35
- /** \defgroup math Math Utilities
36
- * \par
37
- * When converting between continuous and discrete use: \n
38
- * Continuous = Discrete + 0.5 [Reconstruction/Interpolation] \n
39
- * Discrete = Round(Continuous - 0.5) [Sampling/Quantization] \n
40
- * \par
41
- * Notice that must check 0-max limits when converting from Continuous to Discrete.
42
- * \par
43
- * When converting between discrete and discrete use: \n
44
- * integer src_size, dst_len, src_i, dst_i \n
45
- * real factor = (real)(dst_size)/(real)(src_size) \n
46
- * dst_i = Round(factor*(src_i + 0.5) - 0.5)
47
- * \par
48
- * See \ref im_math.h
49
- * \ingroup util */
50
-
51
-
52
- /** Round a real to the nearest integer.
53
- * \ingroup math */
54
- inline int imRound(float x)
55
- {
56
- return (int)(x < 0? x-0.5f: x+0.5f);
57
- }
58
- inline int imRound(double x)
59
- {
60
- return (int)(x < 0? x-0.5: x+0.5);
61
- }
62
-
63
- /** Converts between two discrete grids.
64
- * factor is "dst_size/src_size".
65
- * \ingroup math */
66
- inline int imResample(int x, float factor)
67
- {
68
- float xr = factor*(x + 0.5f) - 0.5f;
69
- return (int)(xr < 0? xr-0.5f: xr+0.5f); /* Round */
70
- }
71
-
72
- /** Does Zero Order Decimation (Mean).
73
- * \ingroup math */
74
- template <class T, class TU>
75
- inline T imZeroOrderDecimation(int width, int height, T *map, float xl, float yl, float box_width, float box_height, TU Dummy)
76
- {
77
- int x0,x1,y0,y1;
78
- (void)Dummy;
79
-
80
- x0 = (int)floor(xl - box_width/2.0 - 0.5) + 1;
81
- y0 = (int)floor(yl - box_height/2.0 - 0.5) + 1;
82
- x1 = (int)floor(xl + box_width/2.0 - 0.5);
83
- y1 = (int)floor(yl + box_height/2.0 - 0.5);
84
-
85
- if (x0 == x1) x1++;
86
- if (y0 == y1) y1++;
87
-
88
- x0 = x0<0? 0: x0>width-1? width-1: x0;
89
- y0 = y0<0? 0: y0>height-1? height-1: y0;
90
- x1 = x1<0? 0: x1>width-1? width-1: x1;
91
- y1 = y1<0? 0: y1>height-1? height-1: y1;
92
-
93
- TU Value;
94
- int Count = 0;
95
-
96
- Value = 0;
97
-
98
- for (int y = y0; y <= y1; y++)
99
- {
100
- for (int x = x0; x <= x1; x++)
101
- {
102
- Value += map[y*width+x];
103
- Count++;
104
- }
105
- }
106
-
107
- if (Count == 0)
108
- {
109
- Value = 0;
110
- return (T)Value;
111
- }
112
-
113
- return (T)(Value/(float)Count);
114
- }
115
-
116
- /** Does Bilinear Decimation.
117
- * \ingroup math */
118
- template <class T, class TU>
119
- inline T imBilinearDecimation(int width, int height, T *map, float xl, float yl, float box_width, float box_height, TU Dummy)
120
- {
121
- int x0,x1,y0,y1;
122
- (void)Dummy;
123
-
124
- x0 = (int)floor(xl - box_width/2.0 - 0.5) + 1;
125
- y0 = (int)floor(yl - box_height/2.0 - 0.5) + 1;
126
- x1 = (int)floor(xl + box_width/2.0 - 0.5);
127
- y1 = (int)floor(yl + box_height/2.0 - 0.5);
128
-
129
- if (x0 == x1) x1++;
130
- if (y0 == y1) y1++;
131
-
132
- x0 = x0<0? 0: x0>width-1? width-1: x0;
133
- y0 = y0<0? 0: y0>height-1? height-1: y0;
134
- x1 = x1<0? 0: x1>width-1? width-1: x1;
135
- y1 = y1<0? 0: y1>height-1? height-1: y1;
136
-
137
- TU Value, LineValue;
138
- float LineNorm, Norm, dxr, dyr;
139
-
140
- Value = 0;
141
- Norm = 0;
142
-
143
- for (int y = y0; y <= y1; y++)
144
- {
145
- dyr = yl - (y+0.5f);
146
- if (dyr < 0) dyr *= -1;
147
-
148
- LineValue = 0;
149
- LineNorm = 0;
150
-
151
- for (int x = x0; x <= x1; x++)
152
- {
153
- dxr = xl - (x+0.5f);
154
- if (dxr < 0) dxr *= -1;
155
-
156
- LineValue += map[y*width+x] * dxr;
157
- LineNorm += dxr;
158
- }
159
-
160
- Value += LineValue * dyr;
161
- Norm += dyr * LineNorm;
162
- }
163
-
164
- if (Norm == 0)
165
- {
166
- Value = 0;
167
- return (T)Value;
168
- }
169
-
170
- return (T)(Value/Norm);
171
- }
172
-
173
- /** Does Zero Order Interpolation (Nearest Neighborhood).
174
- * \ingroup math */
175
- template <class T>
176
- inline T imZeroOrderInterpolation(int width, int height, T *map, float xl, float yl)
177
- {
178
- int x0 = imRound(xl-0.5f);
179
- int y0 = imRound(yl-0.5f);
180
- x0 = x0<0? 0: x0>width-1? width-1: x0;
181
- y0 = y0<0? 0: y0>height-1? height-1: y0;
182
- return map[y0*width + x0];
183
- }
184
-
185
- /** Does Bilinear Interpolation.
186
- * \ingroup math */
187
- template <class T>
188
- inline T imBilinearInterpolation(int width, int height, T *map, float xl, float yl)
189
- {
190
- int x0, y0, x1, y1;
191
- float t, u;
192
-
193
- if (xl < 0.5)
194
- {
195
- x1 = x0 = 0;
196
- t = 0;
197
- }
198
- else if (xl > width-0.5)
199
- {
200
- x1 = x0 = width-1;
201
- t = 0;
202
- }
203
- else
204
- {
205
- x0 = (int)(xl-0.5f);
206
- x1 = x0+1;
207
- t = xl - (x0+0.5f);
208
- }
209
-
210
- if (yl < 0.5)
211
- {
212
- y1 = y0 = 0;
213
- u = 0;
214
- }
215
- else if (yl > height-0.5)
216
- {
217
- y1 = y0 = height-1;
218
- u = 0;
219
- }
220
- else
221
- {
222
- y0 = (int)(yl-0.5f);
223
- y1 = y0+1;
224
- u = yl - (y0+0.5f);
225
- }
226
-
227
- T fll = map[y0*width + x0];
228
- T fhl = map[y0*width + x1];
229
- T flh = map[y1*width + x0];
230
- T fhh = map[y1*width + x1];
231
-
232
- return (T)((fhh - flh - fhl + fll) * u * t +
233
- (fhl - fll) * t +
234
- (flh - fll) * u +
235
- fll);
236
- }
237
-
238
- /** Does Bicubic Interpolation.
239
- * \ingroup math */
240
- template <class T, class TU>
241
- inline T imBicubicInterpolation(int width, int height, T *map, float xl, float yl, TU Dummy)
242
- {
243
- int X[4], Y[4];
244
- float t, u;
245
- (void)Dummy;
246
-
247
- if (xl > width-0.5)
248
- {
249
- X[3] = X[2] = X[1] = width-1;
250
- X[0] = X[1]-1;
251
- t = 0;
252
- }
253
- else
254
- {
255
- X[1] = (int)(xl-0.5f);
256
- if (X[1] < 0) X[1] = 0;
257
-
258
- X[0] = X[1]-1;
259
- X[2] = X[1]+1;
260
- X[3] = X[1]+2;
261
-
262
- if (X[0] < 0) X[0] = 0;
263
- if (X[3] > width-1) X[3] = width-1;
264
-
265
- t = xl - (X[1]+0.5f);
266
- }
267
-
268
- if (yl > height-0.5)
269
- {
270
- Y[3] = Y[2] = Y[1] = height-1;
271
- Y[0] = Y[1]-1;
272
- u = 0;
273
- }
274
- else
275
- {
276
- Y[1] = (int)(yl-0.5f);
277
- if (Y[1] < 0) Y[1] = 0;
278
-
279
- Y[0] = Y[1]-1;
280
- Y[2] = Y[1]+1;
281
- Y[3] = Y[1]+2;
282
-
283
- if (Y[0] < 0) Y[0] = 0;
284
- if (Y[3] > height-1) Y[3] = height-1;
285
-
286
- u = yl - (Y[1]+0.5f);
287
- }
288
-
289
- float CX[4], CY[4];
290
-
291
- // Optimize calculations
292
- {
293
- float c, c2, c3;
294
-
295
- #define C0 (-c3 + 2.0f*c2 - c)
296
- #define C1 ( c3 - 2.0f*c2 + 1.0f)
297
- #define C2 (-c3 + c2 + c)
298
- #define C3 ( c3 - c2)
299
-
300
- c = t;
301
- c2 = c*c; c3 = c2*c;
302
- CX[0] = C0; CX[1] = C1; CX[2] = C2; CX[3] = C3;
303
-
304
- c = u;
305
- c2 = c*c; c3 = c2*c;
306
- CY[0] = C0; CY[1] = C1; CY[2] = C2; CY[3] = C3;
307
-
308
- #undef C0
309
- #undef C1
310
- #undef C2
311
- #undef C3
312
- }
313
-
314
- TU LineValue, Value;
315
- float LineNorm, Norm;
316
-
317
- Value = 0;
318
- Norm = 0;
319
-
320
- for (int y = 0; y < 4; y++)
321
- {
322
- LineValue = 0;
323
- LineNorm = 0;
324
-
325
- for (int x = 0; x < 4; x++)
326
- {
327
- LineValue += map[Y[y]*width+X[x]] * CX[x];
328
- LineNorm += CX[x];
329
- }
330
-
331
- Value += LineValue * CY[y];
332
- Norm += CY[y] * LineNorm;
333
- }
334
-
335
- if (Norm == 0)
336
- {
337
- Value = 0;
338
- return (T)Value;
339
- }
340
-
341
- Value = (Value/Norm);
342
-
343
- int size = sizeof(T);
344
- if (size == 1)
345
- return (T)(Value<=(TU)0? (TU)0: Value<=(TU)255? Value: (TU)255);
346
- else
347
- return (T)(Value);
348
- }
349
-
350
- /** Calculates minimum and maximum values.
351
- * \ingroup math */
352
- template <class T>
353
- inline void imMinMax(const T *map, int count, T& min, T& max)
354
- {
355
- min = *map++;
356
- max = min;
357
- for (int i = 1; i < count; i++)
358
- {
359
- T value = *map++;
360
-
361
- if (value > max)
362
- max = value;
363
- else if (value < min)
364
- min = value;
365
- }
366
- }
367
-
368
- #endif
1
+ /** \file
2
+ * \brief Math Utilities
3
+ *
4
+ * See Copyright Notice in im_lib.h
5
+ */
6
+
7
+ #ifndef __IM_MATH_H
8
+ #define __IM_MATH_H
9
+
10
+ #include <math.h>
11
+ #include "im_util.h"
12
+
13
+ #ifdef IM_DEFMATHFLOAT
14
+ inline float acosf(float _X) {return ((float)acos((double)_X)); }
15
+ inline float asinf(float _X) {return ((float)asin((double)_X)); }
16
+ inline float atanf(float _X) {return ((float)atan((double)_X)); }
17
+ inline float atan2f(float _X, float _Y) {return ((float)atan2((double)_X, (double)_Y)); }
18
+ inline float ceilf(float _X) {return ((float)ceil((double)_X)); }
19
+ inline float cosf(float _X) {return ((float)cos((double)_X)); }
20
+ inline float coshf(float _X) {return ((float)cosh((double)_X)); }
21
+ inline float expf(float _X) {return ((float)exp((double)_X)); }
22
+ inline float fabsf(float _X) {return ((float)fabs((double)_X)); }
23
+ inline float floorf(float _X) {return ((float)floor((double)_X)); }
24
+ inline float fmodf(float _X, float _Y) {return ((float)fmod((double)_X, (double)_Y)); }
25
+ inline float logf(float _X) {return ((float)log((double)_X)); }
26
+ inline float log10f(float _X) {return ((float)log10((double)_X)); }
27
+ inline float powf(float _X, float _Y) {return ((float)pow((double)_X, (double)_Y)); }
28
+ inline float sinf(float _X) {return ((float)sin((double)_X)); }
29
+ inline float sinhf(float _X) {return ((float)sinh((double)_X)); }
30
+ inline float sqrtf(float _X) {return ((float)sqrt((double)_X)); }
31
+ inline float tanf(float _X) {return ((float)tan((double)_X)); }
32
+ inline float tanhf(float _X) {return ((float)tanh((double)_X)); }
33
+ #endif
34
+
35
+ /** \defgroup math Math Utilities
36
+ * \par
37
+ * When converting between continuous and discrete use: \n
38
+ * Continuous = Discrete + 0.5 [Reconstruction/Interpolation] \n
39
+ * Discrete = Round(Continuous - 0.5) [Sampling/Quantization] \n
40
+ * \par
41
+ * Notice that must check 0-max limits when converting from Continuous to Discrete.
42
+ * \par
43
+ * When converting between discrete and discrete use: \n
44
+ * integer src_size, dst_len, src_i, dst_i \n
45
+ * real factor = (real)(dst_size)/(real)(src_size) \n
46
+ * dst_i = Round(factor*(src_i + 0.5) - 0.5)
47
+ * \par
48
+ * See \ref im_math.h
49
+ * \ingroup util */
50
+
51
+
52
+ /** Round a real to the nearest integer.
53
+ * \ingroup math */
54
+ inline int imRound(float x)
55
+ {
56
+ return (int)(x < 0? x-0.5f: x+0.5f);
57
+ }
58
+ inline int imRound(double x)
59
+ {
60
+ return (int)(x < 0? x-0.5: x+0.5);
61
+ }
62
+
63
+ /** Converts between two discrete grids.
64
+ * factor is "dst_size/src_size".
65
+ * \ingroup math */
66
+ inline int imResample(int x, float factor)
67
+ {
68
+ float xr = factor*(x + 0.5f) - 0.5f;
69
+ return (int)(xr < 0? xr-0.5f: xr+0.5f); /* Round */
70
+ }
71
+
72
+ /** Does Zero Order Decimation (Mean).
73
+ * \ingroup math */
74
+ template <class T, class TU>
75
+ inline T imZeroOrderDecimation(int width, int height, T *map, float xl, float yl, float box_width, float box_height, TU Dummy)
76
+ {
77
+ int x0,x1,y0,y1;
78
+ (void)Dummy;
79
+
80
+ x0 = (int)floor(xl - box_width/2.0 - 0.5) + 1;
81
+ y0 = (int)floor(yl - box_height/2.0 - 0.5) + 1;
82
+ x1 = (int)floor(xl + box_width/2.0 - 0.5);
83
+ y1 = (int)floor(yl + box_height/2.0 - 0.5);
84
+
85
+ if (x0 == x1) x1++;
86
+ if (y0 == y1) y1++;
87
+
88
+ x0 = x0<0? 0: x0>width-1? width-1: x0;
89
+ y0 = y0<0? 0: y0>height-1? height-1: y0;
90
+ x1 = x1<0? 0: x1>width-1? width-1: x1;
91
+ y1 = y1<0? 0: y1>height-1? height-1: y1;
92
+
93
+ TU Value;
94
+ int Count = 0;
95
+
96
+ Value = 0;
97
+
98
+ for (int y = y0; y <= y1; y++)
99
+ {
100
+ for (int x = x0; x <= x1; x++)
101
+ {
102
+ Value += map[y*width+x];
103
+ Count++;
104
+ }
105
+ }
106
+
107
+ if (Count == 0)
108
+ {
109
+ Value = 0;
110
+ return (T)Value;
111
+ }
112
+
113
+ return (T)(Value/(float)Count);
114
+ }
115
+
116
+ /** Does Bilinear Decimation.
117
+ * \ingroup math */
118
+ template <class T, class TU>
119
+ inline T imBilinearDecimation(int width, int height, T *map, float xl, float yl, float box_width, float box_height, TU Dummy)
120
+ {
121
+ int x0,x1,y0,y1;
122
+ (void)Dummy;
123
+
124
+ x0 = (int)floor(xl - box_width/2.0 - 0.5) + 1;
125
+ y0 = (int)floor(yl - box_height/2.0 - 0.5) + 1;
126
+ x1 = (int)floor(xl + box_width/2.0 - 0.5);
127
+ y1 = (int)floor(yl + box_height/2.0 - 0.5);
128
+
129
+ if (x0 == x1) x1++;
130
+ if (y0 == y1) y1++;
131
+
132
+ x0 = x0<0? 0: x0>width-1? width-1: x0;
133
+ y0 = y0<0? 0: y0>height-1? height-1: y0;
134
+ x1 = x1<0? 0: x1>width-1? width-1: x1;
135
+ y1 = y1<0? 0: y1>height-1? height-1: y1;
136
+
137
+ TU Value, LineValue;
138
+ float LineNorm, Norm, dxr, dyr;
139
+
140
+ Value = 0;
141
+ Norm = 0;
142
+
143
+ for (int y = y0; y <= y1; y++)
144
+ {
145
+ dyr = yl - (y+0.5f);
146
+ if (dyr < 0) dyr *= -1;
147
+
148
+ LineValue = 0;
149
+ LineNorm = 0;
150
+
151
+ for (int x = x0; x <= x1; x++)
152
+ {
153
+ dxr = xl - (x+0.5f);
154
+ if (dxr < 0) dxr *= -1;
155
+
156
+ LineValue += map[y*width+x] * dxr;
157
+ LineNorm += dxr;
158
+ }
159
+
160
+ Value += LineValue * dyr;
161
+ Norm += dyr * LineNorm;
162
+ }
163
+
164
+ if (Norm == 0)
165
+ {
166
+ Value = 0;
167
+ return (T)Value;
168
+ }
169
+
170
+ return (T)(Value/Norm);
171
+ }
172
+
173
+ /** Does Zero Order Interpolation (Nearest Neighborhood).
174
+ * \ingroup math */
175
+ template <class T>
176
+ inline T imZeroOrderInterpolation(int width, int height, T *map, float xl, float yl)
177
+ {
178
+ int x0 = imRound(xl-0.5f);
179
+ int y0 = imRound(yl-0.5f);
180
+ x0 = x0<0? 0: x0>width-1? width-1: x0;
181
+ y0 = y0<0? 0: y0>height-1? height-1: y0;
182
+ return map[y0*width + x0];
183
+ }
184
+
185
+ /** Does Bilinear Interpolation.
186
+ * \ingroup math */
187
+ template <class T>
188
+ inline T imBilinearInterpolation(int width, int height, T *map, float xl, float yl)
189
+ {
190
+ int x0, y0, x1, y1;
191
+ float t, u;
192
+
193
+ if (xl < 0.5)
194
+ {
195
+ x1 = x0 = 0;
196
+ t = 0;
197
+ }
198
+ else if (xl > width-0.5)
199
+ {
200
+ x1 = x0 = width-1;
201
+ t = 0;
202
+ }
203
+ else
204
+ {
205
+ x0 = (int)(xl-0.5f);
206
+ x1 = x0+1;
207
+ t = xl - (x0+0.5f);
208
+ }
209
+
210
+ if (yl < 0.5)
211
+ {
212
+ y1 = y0 = 0;
213
+ u = 0;
214
+ }
215
+ else if (yl > height-0.5)
216
+ {
217
+ y1 = y0 = height-1;
218
+ u = 0;
219
+ }
220
+ else
221
+ {
222
+ y0 = (int)(yl-0.5f);
223
+ y1 = y0+1;
224
+ u = yl - (y0+0.5f);
225
+ }
226
+
227
+ T fll = map[y0*width + x0];
228
+ T fhl = map[y0*width + x1];
229
+ T flh = map[y1*width + x0];
230
+ T fhh = map[y1*width + x1];
231
+
232
+ return (T)((fhh - flh - fhl + fll) * u * t +
233
+ (fhl - fll) * t +
234
+ (flh - fll) * u +
235
+ fll);
236
+ }
237
+
238
+ /** Does Bicubic Interpolation.
239
+ * \ingroup math */
240
+ template <class T, class TU>
241
+ inline T imBicubicInterpolation(int width, int height, T *map, float xl, float yl, TU Dummy)
242
+ {
243
+ int X[4], Y[4];
244
+ float t, u;
245
+ (void)Dummy;
246
+
247
+ if (xl > width-0.5)
248
+ {
249
+ X[3] = X[2] = X[1] = width-1;
250
+ X[0] = X[1]-1;
251
+ t = 0;
252
+ }
253
+ else
254
+ {
255
+ X[1] = (int)(xl-0.5f);
256
+ if (X[1] < 0) X[1] = 0;
257
+
258
+ X[0] = X[1]-1;
259
+ X[2] = X[1]+1;
260
+ X[3] = X[1]+2;
261
+
262
+ if (X[0] < 0) X[0] = 0;
263
+ if (X[3] > width-1) X[3] = width-1;
264
+
265
+ t = xl - (X[1]+0.5f);
266
+ }
267
+
268
+ if (yl > height-0.5)
269
+ {
270
+ Y[3] = Y[2] = Y[1] = height-1;
271
+ Y[0] = Y[1]-1;
272
+ u = 0;
273
+ }
274
+ else
275
+ {
276
+ Y[1] = (int)(yl-0.5f);
277
+ if (Y[1] < 0) Y[1] = 0;
278
+
279
+ Y[0] = Y[1]-1;
280
+ Y[2] = Y[1]+1;
281
+ Y[3] = Y[1]+2;
282
+
283
+ if (Y[0] < 0) Y[0] = 0;
284
+ if (Y[3] > height-1) Y[3] = height-1;
285
+
286
+ u = yl - (Y[1]+0.5f);
287
+ }
288
+
289
+ float CX[4], CY[4];
290
+
291
+ // Optimize calculations
292
+ {
293
+ float c, c2, c3;
294
+
295
+ #define C0 (-c3 + 2.0f*c2 - c)
296
+ #define C1 ( c3 - 2.0f*c2 + 1.0f)
297
+ #define C2 (-c3 + c2 + c)
298
+ #define C3 ( c3 - c2)
299
+
300
+ c = t;
301
+ c2 = c*c; c3 = c2*c;
302
+ CX[0] = C0; CX[1] = C1; CX[2] = C2; CX[3] = C3;
303
+
304
+ c = u;
305
+ c2 = c*c; c3 = c2*c;
306
+ CY[0] = C0; CY[1] = C1; CY[2] = C2; CY[3] = C3;
307
+
308
+ #undef C0
309
+ #undef C1
310
+ #undef C2
311
+ #undef C3
312
+ }
313
+
314
+ TU LineValue, Value;
315
+ float LineNorm, Norm;
316
+
317
+ Value = 0;
318
+ Norm = 0;
319
+
320
+ for (int y = 0; y < 4; y++)
321
+ {
322
+ LineValue = 0;
323
+ LineNorm = 0;
324
+
325
+ for (int x = 0; x < 4; x++)
326
+ {
327
+ LineValue += map[Y[y]*width+X[x]] * CX[x];
328
+ LineNorm += CX[x];
329
+ }
330
+
331
+ Value += LineValue * CY[y];
332
+ Norm += CY[y] * LineNorm;
333
+ }
334
+
335
+ if (Norm == 0)
336
+ {
337
+ Value = 0;
338
+ return (T)Value;
339
+ }
340
+
341
+ Value = (Value/Norm);
342
+
343
+ int size = sizeof(T);
344
+ if (size == 1)
345
+ return (T)(Value<=(TU)0? (TU)0: Value<=(TU)255? Value: (TU)255);
346
+ else
347
+ return (T)(Value);
348
+ }
349
+
350
+ /** Calculates minimum and maximum values.
351
+ * \ingroup math */
352
+ template <class T>
353
+ inline void imMinMax(const T *map, int count, T& min, T& max)
354
+ {
355
+ min = *map++;
356
+ max = min;
357
+ for (int i = 1; i < count; i++)
358
+ {
359
+ T value = *map++;
360
+
361
+ if (value > max)
362
+ max = value;
363
+ else if (value < min)
364
+ min = value;
365
+ }
366
+ }
367
+
368
+ #endif