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.
- data/Rakefile +97 -0
- data/doc/README +10 -0
- data/doc/build_install.txt +77 -0
- data/examples/README +16 -0
- data/examples/ctrl/cbox.rb +221 -0
- data/examples/ctrl/checkboard.rb +33 -0
- data/examples/ctrl/degrade.rb +73 -0
- data/examples/ctrl/example1.rb +53 -0
- data/examples/ctrl/example2.rb +39 -0
- data/examples/ctrl/iupcolorbar.rb +95 -0
- data/examples/ctrl/iupcolorbrowser.rb +45 -0
- data/examples/ctrl/iupdial.rb +117 -0
- data/examples/ctrl/iupgauge.rb +242 -0
- data/examples/ctrl/iupgetcolor.rb +8 -0
- data/examples/ctrl/iupgetparam.rb +62 -0
- data/examples/ctrl/iupglcanvas.rb +172 -0
- data/examples/ctrl/iupmask.rb +15 -0
- data/examples/ctrl/iupmatrix.rb +39 -0
- data/examples/ctrl/iupplot2.rb +603 -0
- data/examples/ctrl/iuptabs.rb +22 -0
- data/examples/ctrl/iuptree.rb +190 -0
- data/examples/ctrl/iupval.rb +71 -0
- data/examples/ctrl/numbering.rb +46 -0
- data/examples/ctrl/sample.rb +166 -0
- data/examples/dlg/iupalarm.rb +14 -0
- data/examples/dlg/iupfiledlg.rb +19 -0
- data/examples/dlg/iupgetfile.rb +19 -0
- data/examples/dlg/iuplistdialog.rb +26 -0
- data/examples/dlg/iupmessage.rb +5 -0
- data/examples/dlg/iupscanf.rb +17 -0
- data/examples/elem/iupbutton.rb +197 -0
- data/examples/elem/iupcanvas.rb +27 -0
- data/examples/elem/iupcanvas2.rb +113 -0
- data/examples/elem/iupcanvas3.rb +62 -0
- data/examples/elem/iupdialog.rb +71 -0
- data/examples/elem/iupdialog2.rb +25 -0
- data/examples/elem/iupfill.rb +51 -0
- data/examples/elem/iupframe.rb +25 -0
- data/examples/elem/iuphbox.rb +68 -0
- data/examples/elem/iupimage.rb +113 -0
- data/examples/elem/iupitem.rb +60 -0
- data/examples/elem/iuplabel.rb +57 -0
- data/examples/elem/iuplist.rb +41 -0
- data/examples/elem/iuplist2.rb +125 -0
- data/examples/elem/iupmenu.rb +32 -0
- data/examples/elem/iupmultiline.rb +24 -0
- data/examples/elem/iupmultiline2.rb +156 -0
- data/examples/elem/iupradio.rb +32 -0
- data/examples/elem/iupseparator.rb +81 -0
- data/examples/elem/iupsubmenu.rb +85 -0
- data/examples/elem/iuptext.rb +61 -0
- data/examples/elem/iuptimer.rb +36 -0
- data/examples/elem/iuptoggle.rb +110 -0
- data/examples/elem/iupvbox.rb +87 -0
- data/examples/elem/iupzbox.rb +60 -0
- data/examples/elem/mdisample.rb +376 -0
- data/examples/elem/progressbar.rb +294 -0
- data/examples/elem/scrollbar.rb +66 -0
- data/examples/elem/tray.rb +90 -0
- data/examples/func/iupgetattribute.rb +32 -0
- data/examples/func/iupidle.rb +48 -0
- data/ext/extconf.rb +27 -0
- data/ext/iup-linux/include/cd.h +494 -0
- data/ext/iup-linux/include/cd_canvas.hpp +358 -0
- data/ext/iup-linux/include/cd_old.h +158 -0
- data/ext/iup-linux/include/cd_private.h +362 -0
- data/ext/iup-linux/include/cdcgm.h +34 -0
- data/ext/iup-linux/include/cdclipbd.h +22 -0
- data/ext/iup-linux/include/cddbuf.h +23 -0
- data/ext/iup-linux/include/cddebug.h +24 -0
- data/ext/iup-linux/include/cddgn.h +23 -0
- data/ext/iup-linux/include/cddxf.h +22 -0
- data/ext/iup-linux/include/cdemf.h +22 -0
- data/ext/iup-linux/include/cdgdiplus.h +29 -0
- data/ext/iup-linux/include/cdimage.h +23 -0
- data/ext/iup-linux/include/cdirgb.h +30 -0
- data/ext/iup-linux/include/cdiup.h +22 -0
- data/ext/iup-linux/include/cdlua.h +39 -0
- data/ext/iup-linux/include/cdlua3_private.h +120 -0
- data/ext/iup-linux/include/cdlua5_private.h +141 -0
- data/ext/iup-linux/include/cdluaim.h +24 -0
- data/ext/iup-linux/include/cdluaiup.h +27 -0
- data/ext/iup-linux/include/cdluapdf.h +27 -0
- data/ext/iup-linux/include/cdmf.h +24 -0
- data/ext/iup-linux/include/cdmf_private.h +32 -0
- data/ext/iup-linux/include/cdnative.h +26 -0
- data/ext/iup-linux/include/cdpdf.h +38 -0
- data/ext/iup-linux/include/cdpicture.h +22 -0
- data/ext/iup-linux/include/cdprint.h +23 -0
- data/ext/iup-linux/include/cdps.h +37 -0
- data/ext/iup-linux/include/cdwmf.h +22 -0
- data/ext/iup-linux/include/im.h +282 -0
- data/ext/iup-linux/include/im_attrib.h +116 -0
- data/ext/iup-linux/include/im_attrib_flat.h +39 -0
- data/ext/iup-linux/include/im_binfile.h +214 -0
- data/ext/iup-linux/include/im_capture.h +365 -0
- data/ext/iup-linux/include/im_color.h +465 -0
- data/ext/iup-linux/include/im_colorhsi.h +61 -0
- data/ext/iup-linux/include/im_complex.h +160 -0
- data/ext/iup-linux/include/im_convert.h +127 -0
- data/ext/iup-linux/include/im_counter.h +69 -0
- data/ext/iup-linux/include/im_dib.h +195 -0
- data/ext/iup-linux/include/im_file.h +111 -0
- data/ext/iup-linux/include/im_format.h +79 -0
- data/ext/iup-linux/include/im_format_all.h +576 -0
- data/ext/iup-linux/include/im_format_avi.h +87 -0
- data/ext/iup-linux/include/im_format_ecw.h +93 -0
- data/ext/iup-linux/include/im_format_jp2.h +78 -0
- data/ext/iup-linux/include/im_format_raw.h +64 -0
- data/ext/iup-linux/include/im_format_wmv.h +100 -0
- data/ext/iup-linux/include/im_image.h +403 -0
- data/ext/iup-linux/include/im_kernel.h +315 -0
- data/ext/iup-linux/include/im_lib.h +191 -0
- data/ext/iup-linux/include/im_math.h +368 -0
- data/ext/iup-linux/include/im_math_op.h +219 -0
- data/ext/iup-linux/include/im_palette.h +172 -0
- data/ext/iup-linux/include/im_plus.h +73 -0
- data/ext/iup-linux/include/im_process.h +35 -0
- data/ext/iup-linux/include/im_process_ana.h +221 -0
- data/ext/iup-linux/include/im_process_glo.h +170 -0
- data/ext/iup-linux/include/im_process_loc.h +577 -0
- data/ext/iup-linux/include/im_process_pon.h +712 -0
- data/ext/iup-linux/include/im_raw.h +34 -0
- data/ext/iup-linux/include/im_util.h +277 -0
- data/ext/iup-linux/include/imlua.h +83 -0
- data/ext/iup-linux/include/iup.h +255 -0
- data/ext/iup-linux/include/iup_pplot.h +40 -0
- data/ext/iup-linux/include/iupcb.h +25 -0
- data/ext/iup-linux/include/iupcbox.h +23 -0
- data/ext/iup-linux/include/iupcbs.h +42 -0
- data/ext/iup-linux/include/iupcells.h +130 -0
- data/ext/iup-linux/include/iupcolorbar.h +126 -0
- data/ext/iup-linux/include/iupcompat.h +62 -0
- data/ext/iup-linux/include/iupcontrols.h +40 -0
- data/ext/iup-linux/include/iupcpi.h +76 -0
- data/ext/iup-linux/include/iupdef.h +520 -0
- data/ext/iup-linux/include/iupdial.h +64 -0
- data/ext/iup-linux/include/iupgauge.h +57 -0
- data/ext/iup-linux/include/iupgc.h +20 -0
- data/ext/iup-linux/include/iupgetparam.h +27 -0
- data/ext/iup-linux/include/iupgl.h +101 -0
- data/ext/iup-linux/include/iupim.h +21 -0
- data/ext/iup-linux/include/iupkey.h +290 -0
- data/ext/iup-linux/include/iuplua.h +41 -0
- data/ext/iup-linux/include/iuplua_pplot.h +26 -0
- data/ext/iup-linux/include/iupluacontrols.h +27 -0
- data/ext/iup-linux/include/iupluagl.h +26 -0
- data/ext/iup-linux/include/iupluaim.h +26 -0
- data/ext/iup-linux/include/iupluaole.h +26 -0
- data/ext/iup-linux/include/iupmask.h +52 -0
- data/ext/iup-linux/include/iupmatrix.h +69 -0
- data/ext/iup-linux/include/iupole.h +24 -0
- data/ext/iup-linux/include/iupsbox.h +20 -0
- data/ext/iup-linux/include/iupspeech.h +23 -0
- data/ext/iup-linux/include/iupspin.h +21 -0
- data/ext/iup-linux/include/iuptabs.h +79 -0
- data/ext/iup-linux/include/iuptree.h +93 -0
- data/ext/iup-linux/include/iupval.h +46 -0
- data/ext/iup-linux/include/lauxlib.h +174 -0
- data/ext/iup-linux/include/lua.h +388 -0
- data/ext/iup-linux/include/lua.hpp +9 -0
- data/ext/iup-linux/include/luaconf.h +763 -0
- data/ext/iup-linux/include/lualib.h +53 -0
- data/ext/iup-linux/include/old_im.h +59 -0
- data/ext/iup-linux/include/wd.h +78 -0
- data/ext/iup-linux/include/wd_old.h +85 -0
- data/ext/iup-linux/libcd.so +0 -0
- data/ext/iup-linux/libcdcontextplus.so +0 -0
- data/ext/iup-linux/libcdluacontextplus51.so +0 -0
- data/ext/iup-linux/libcdpdf.so +0 -0
- data/ext/iup-linux/libfreetype.so +0 -0
- data/ext/iup-linux/libim.so +0 -0
- data/ext/iup-linux/libim_fftw.so +0 -0
- data/ext/iup-linux/libim_jp2.so +0 -0
- data/ext/iup-linux/libim_process.so +0 -0
- data/ext/iup-linux/libiup.so +0 -0
- data/ext/iup-linux/libiup_pplot.so +0 -0
- data/ext/iup-linux/libiupcd.so +0 -0
- data/ext/iup-linux/libiupcontrols.so +0 -0
- data/ext/iup-linux/libiupgl.so +0 -0
- data/ext/iup-linux/libiupim.so +0 -0
- data/ext/iup-linux/libiupimglib.so +0 -0
- data/ext/iup-linux/libpdflib.so +0 -0
- data/ext/iup-win32/cd.dll +0 -0
- data/ext/iup-win32/cd.lib +0 -0
- data/ext/iup-win32/cdcontextplus.dll +0 -0
- data/ext/iup-win32/cdcontextplus.lib +0 -0
- data/ext/iup-win32/cdlua51.lib +0 -0
- data/ext/iup-win32/cdluacontextplus51.lib +0 -0
- data/ext/iup-win32/cdluaim51.lib +0 -0
- data/ext/iup-win32/cdluapdf51.lib +0 -0
- data/ext/iup-win32/cdpdf.dll +0 -0
- data/ext/iup-win32/cdpdf.lib +0 -0
- data/ext/iup-win32/freetype6.dll +0 -0
- data/ext/iup-win32/freetype6.lib +0 -0
- data/ext/iup-win32/im.dll +0 -0
- data/ext/iup-win32/im_avi.dll +0 -0
- data/ext/iup-win32/im_capture.dll +0 -0
- data/ext/iup-win32/im_ecw.dll +0 -0
- data/ext/iup-win32/im_fftw.dll +0 -0
- data/ext/iup-win32/im_jp2.dll +0 -0
- data/ext/iup-win32/im_process.dll +0 -0
- data/ext/iup-win32/im_wmv.dll +0 -0
- data/ext/iup-win32/include/cd.h +494 -0
- data/ext/iup-win32/include/cd_canvas.hpp +358 -0
- data/ext/iup-win32/include/cd_old.h +158 -0
- data/ext/iup-win32/include/cd_private.h +362 -0
- data/ext/iup-win32/include/cdcgm.h +34 -0
- data/ext/iup-win32/include/cdclipbd.h +22 -0
- data/ext/iup-win32/include/cddbuf.h +23 -0
- data/ext/iup-win32/include/cddebug.h +24 -0
- data/ext/iup-win32/include/cddgn.h +23 -0
- data/ext/iup-win32/include/cddxf.h +22 -0
- data/ext/iup-win32/include/cdemf.h +22 -0
- data/ext/iup-win32/include/cdgdiplus.h +29 -0
- data/ext/iup-win32/include/cdimage.h +23 -0
- data/ext/iup-win32/include/cdirgb.h +30 -0
- data/ext/iup-win32/include/cdiup.h +22 -0
- data/ext/iup-win32/include/cdlua.h +39 -0
- data/ext/iup-win32/include/cdlua3_private.h +120 -0
- data/ext/iup-win32/include/cdlua5_private.h +141 -0
- data/ext/iup-win32/include/cdluaim.h +24 -0
- data/ext/iup-win32/include/cdluaiup.h +27 -0
- data/ext/iup-win32/include/cdluapdf.h +27 -0
- data/ext/iup-win32/include/cdmf.h +24 -0
- data/ext/iup-win32/include/cdmf_private.h +32 -0
- data/ext/iup-win32/include/cdnative.h +26 -0
- data/ext/iup-win32/include/cdpdf.h +38 -0
- data/ext/iup-win32/include/cdpicture.h +22 -0
- data/ext/iup-win32/include/cdprint.h +23 -0
- data/ext/iup-win32/include/cdps.h +37 -0
- data/ext/iup-win32/include/cdwmf.h +22 -0
- data/ext/iup-win32/include/iup.h +255 -0
- data/ext/iup-win32/include/iup_pplot.h +40 -0
- data/ext/iup-win32/include/iupcb.h +25 -0
- data/ext/iup-win32/include/iupcbox.h +23 -0
- data/ext/iup-win32/include/iupcbs.h +42 -0
- data/ext/iup-win32/include/iupcells.h +130 -0
- data/ext/iup-win32/include/iupcolorbar.h +126 -0
- data/ext/iup-win32/include/iupcompat.h +62 -0
- data/ext/iup-win32/include/iupcontrols.h +40 -0
- data/ext/iup-win32/include/iupcpi.h +76 -0
- data/ext/iup-win32/include/iupdef.h +520 -0
- data/ext/iup-win32/include/iupdial.h +64 -0
- data/ext/iup-win32/include/iupgauge.h +57 -0
- data/ext/iup-win32/include/iupgc.h +20 -0
- data/ext/iup-win32/include/iupgetparam.h +27 -0
- data/ext/iup-win32/include/iupgl.h +101 -0
- data/ext/iup-win32/include/iupim.h +21 -0
- data/ext/iup-win32/include/iupkey.h +290 -0
- data/ext/iup-win32/include/iuplua.h +41 -0
- data/ext/iup-win32/include/iuplua_pplot.h +26 -0
- data/ext/iup-win32/include/iupluacontrols.h +27 -0
- data/ext/iup-win32/include/iupluagl.h +26 -0
- data/ext/iup-win32/include/iupluaim.h +26 -0
- data/ext/iup-win32/include/iupluaole.h +26 -0
- data/ext/iup-win32/include/iupmask.h +52 -0
- data/ext/iup-win32/include/iupmatrix.h +69 -0
- data/ext/iup-win32/include/iupole.h +24 -0
- data/ext/iup-win32/include/iupsbox.h +20 -0
- data/ext/iup-win32/include/iupspeech.h +23 -0
- data/ext/iup-win32/include/iupspin.h +21 -0
- data/ext/iup-win32/include/iuptabs.h +79 -0
- data/ext/iup-win32/include/iuptree.h +93 -0
- data/ext/iup-win32/include/iupval.h +46 -0
- data/ext/iup-win32/include/wd.h +78 -0
- data/ext/iup-win32/include/wd_old.h +85 -0
- data/ext/iup-win32/iup.dll +0 -0
- data/ext/iup-win32/iup.lib +0 -0
- data/ext/iup-win32/iup_pplot.dll +0 -0
- data/ext/iup-win32/iup_pplot.lib +0 -0
- data/ext/iup-win32/iupcd.dll +0 -0
- data/ext/iup-win32/iupcd.lib +0 -0
- data/ext/iup-win32/iupcontrols.dll +0 -0
- data/ext/iup-win32/iupcontrols.lib +0 -0
- data/ext/iup-win32/iupgl.dll +0 -0
- data/ext/iup-win32/iupgl.lib +0 -0
- data/ext/iup-win32/iupim.dll +0 -0
- data/ext/iup-win32/iupim.lib +0 -0
- data/ext/iup-win32/iupimglib.dll +0 -0
- data/ext/iup-win32/iupimglib.lib +0 -0
- data/ext/iup-win32/iuplua51.lib +0 -0
- data/ext/iup-win32/iuplua_pplot51.lib +0 -0
- data/ext/iup-win32/iupluacd51.lib +0 -0
- data/ext/iup-win32/iupluacontrols51.lib +0 -0
- data/ext/iup-win32/iupluagl51.lib +0 -0
- data/ext/iup-win32/iupluaim51.lib +0 -0
- data/ext/iup-win32/iupluaimglib51.lib +0 -0
- data/ext/iup-win32/iupluaole51.lib +0 -0
- data/ext/iup-win32/iupole.dll +0 -0
- data/ext/iup-win32/iupole.lib +0 -0
- data/ext/iup-win32/iupstub.lib +0 -0
- data/ext/iup-win32/pdflib.dll +0 -0
- data/ext/iup-win32/pdflib.lib +0 -0
- data/ext/iup.c +1261 -0
- data/ext/mkrf_conf.rb +72 -0
- data/ext/rb_cd.h +1525 -0
- data/ext/rb_iup.h +2446 -0
- data/ext/rb_iup_pplot.h +129 -0
- data/ext/rb_iupcb.h +13 -0
- data/ext/rb_iupcbox.h +40 -0
- data/ext/rb_iupcells.h +15 -0
- data/ext/rb_iupcolorbar.h +17 -0
- data/ext/rb_iupcompat.h +237 -0
- data/ext/rb_iupcontrols.h +28 -0
- data/ext/rb_iupdef.h +3 -0
- data/ext/rb_iupdial.h +24 -0
- data/ext/rb_iupgauge.h +15 -0
- data/ext/rb_iupgc.h +18 -0
- data/ext/rb_iupgetparam.h +72 -0
- data/ext/rb_iupgl.h +58 -0
- data/ext/rb_iupim.h +25 -0
- data/ext/rb_iupmask.h +189 -0
- data/ext/rb_iupmatrix.h +80 -0
- data/ext/rb_iupole.h +24 -0
- data/ext/rb_iupsbox.h +23 -0
- data/ext/rb_iupspeech.h +25 -0
- data/ext/rb_iupspin.h +29 -0
- data/ext/rb_iuptabs.h +29 -0
- data/ext/rb_iuptree.h +94 -0
- data/ext/rb_iupval.h +24 -0
- data/lib/README +1 -0
- metadata +391 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** \file
|
|
2
|
+
* \brief HSI Color Manipulation
|
|
3
|
+
*
|
|
4
|
+
* See Copyright Notice in im_lib.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef __IM_COLORHSI_H
|
|
8
|
+
#define __IM_COLORHSI_H
|
|
9
|
+
|
|
10
|
+
#if defined(__cplusplus)
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/** \defgroup hsi HSI Color Coordinate System Conversions
|
|
16
|
+
*
|
|
17
|
+
* \par
|
|
18
|
+
* HSI is just the RGB color space written in a different coordinate system.
|
|
19
|
+
* \par
|
|
20
|
+
* "I" is defined along the cube diagonal. It ranges from 0 (black) to 1 (white). \n
|
|
21
|
+
* HS are the polar coordinates of a plane normal to "I". \n
|
|
22
|
+
* "S" is the normal distance from the diagonal of the RGB cube. It ranges from 0 to Smax. \n
|
|
23
|
+
* "H" is the angle starting from the red vector, given in degrees.
|
|
24
|
+
* \par
|
|
25
|
+
* This is not a new color space, this is exactly the same gammut as RGB. \n
|
|
26
|
+
* Since it is still a cube, Smax depends on H.
|
|
27
|
+
* \par
|
|
28
|
+
* See \ref im_colorhsi.h
|
|
29
|
+
* \ingroup color */
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
/** Returns the maximum S for H (here in radians) and I.
|
|
33
|
+
* \ingroup hsi */
|
|
34
|
+
float imColorHSI_Smax(float h, double cosh, double sinh, float i);
|
|
35
|
+
|
|
36
|
+
/** Returns I where S is maximum given H (here in radians).
|
|
37
|
+
* \ingroup hsi */
|
|
38
|
+
float imColorHSI_ImaxS(float h, double cosh, double sinh);
|
|
39
|
+
|
|
40
|
+
/** Converts from RGB to HSI.
|
|
41
|
+
* \ingroup hsi */
|
|
42
|
+
void imColorRGB2HSI(float r, float g, float b, float *h, float *s, float *i);
|
|
43
|
+
|
|
44
|
+
/** Converts from RGB (byte) to HSI.
|
|
45
|
+
* \ingroup hsi */
|
|
46
|
+
void imColorRGB2HSIbyte(unsigned char r, unsigned char g, unsigned char b, float *h, float *s, float *i);
|
|
47
|
+
|
|
48
|
+
/** Converts from HSI to RGB.
|
|
49
|
+
* \ingroup hsi */
|
|
50
|
+
void imColorHSI2RGB(float h, float s, float i, float *r, float *g, float *b);
|
|
51
|
+
|
|
52
|
+
/** Converts from HSI to RGB (byte).
|
|
53
|
+
* \ingroup hsi */
|
|
54
|
+
void imColorHSI2RGBbyte(float h, float s, float i, unsigned char *r, unsigned char *g, unsigned char *b);
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
#if defined(__cplusplus)
|
|
58
|
+
}
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
#endif
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/** \file
|
|
2
|
+
* \brief Complex Data Type.
|
|
3
|
+
*
|
|
4
|
+
* See Copyright Notice in im_lib.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef __IM_COMPLEX_H
|
|
8
|
+
#define __IM_COMPLEX_H
|
|
9
|
+
|
|
10
|
+
#include "im_math.h"
|
|
11
|
+
|
|
12
|
+
/** \defgroup cpx Complex Numbers
|
|
13
|
+
* \par
|
|
14
|
+
* See \ref im_complex.h
|
|
15
|
+
* \ingroup util
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** \brief Complex Float Data Type
|
|
19
|
+
*
|
|
20
|
+
* \par
|
|
21
|
+
* Complex class using two floats, one for real part, one for the imaginary part.
|
|
22
|
+
* \par
|
|
23
|
+
* It is not a complete complex class, we just implement constructors inside the class.
|
|
24
|
+
* All the other operators and functions are external to the class.
|
|
25
|
+
* \ingroup cpx */
|
|
26
|
+
class imcfloat
|
|
27
|
+
{
|
|
28
|
+
public:
|
|
29
|
+
float real; ///< Real part.
|
|
30
|
+
float imag; ///< Imaginary part.
|
|
31
|
+
|
|
32
|
+
/// Default Constructor (0,0).
|
|
33
|
+
imcfloat():real(0), imag(0) {}
|
|
34
|
+
|
|
35
|
+
/// Constructor from (real, imag)
|
|
36
|
+
imcfloat(const float& r, const float& i):real(r),imag(i) {}
|
|
37
|
+
|
|
38
|
+
/// Constructor from (real)
|
|
39
|
+
imcfloat(const float& r):real(r),imag(0) {}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** \addtogroup cpx
|
|
43
|
+
* Complex numbers operators.
|
|
44
|
+
* @{
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
inline int operator <= (const imcfloat& C1, const imcfloat& C2)
|
|
48
|
+
{
|
|
49
|
+
return ((C1.real <= C2.real) && (C1.imag <= C2.imag));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
inline int operator <= (const imcfloat& C, const float& F)
|
|
53
|
+
{
|
|
54
|
+
return ((F <= C.real) && (0 <= C.imag));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
inline imcfloat operator + (const imcfloat& C1, const imcfloat& C2)
|
|
58
|
+
{
|
|
59
|
+
return imcfloat(C1.real + C2.real, C1.imag + C2.imag);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
inline imcfloat operator += (const imcfloat& C1, const imcfloat& C2)
|
|
63
|
+
{
|
|
64
|
+
return imcfloat(C1.real + C2.real, C1.imag + C2.imag);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
inline imcfloat operator - (const imcfloat& C1, const imcfloat& C2)
|
|
68
|
+
{
|
|
69
|
+
return imcfloat(C1.real - C2.real, C1.imag - C2.imag);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
inline imcfloat operator * (const imcfloat& C1, const imcfloat& C2)
|
|
73
|
+
{
|
|
74
|
+
return imcfloat(C1.real * C2.real - C1.imag * C2.imag,
|
|
75
|
+
C1.imag * C2.real + C1.real * C2.imag);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
inline imcfloat operator / (const imcfloat& C1, const imcfloat& C2)
|
|
79
|
+
{
|
|
80
|
+
float den = C2.real * C2.real - C2.imag * C2.imag;
|
|
81
|
+
return imcfloat((C1.real * C2.real + C1.imag * C2.imag) / den,
|
|
82
|
+
(C1.imag * C2.real - C1.real * C2.imag) / den);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
inline imcfloat operator / (const imcfloat& C, const float& R)
|
|
86
|
+
{
|
|
87
|
+
return imcfloat(C.real / R, C.imag / R);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
inline imcfloat operator /= (const imcfloat& C, const float& R)
|
|
91
|
+
{
|
|
92
|
+
return imcfloat(C.real / R, C.imag / R);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
inline imcfloat operator * (const imcfloat& C, const float& R)
|
|
96
|
+
{
|
|
97
|
+
return imcfloat(C.real * R, C.imag * R);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
inline int operator == (const imcfloat& C1, const imcfloat& C2)
|
|
101
|
+
{
|
|
102
|
+
return ((C1.real == C2.real) && (C1.imag == C2.imag));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
inline float cpxreal(const imcfloat& C)
|
|
106
|
+
{
|
|
107
|
+
return C.real;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
inline float cpximag(const imcfloat& C)
|
|
111
|
+
{
|
|
112
|
+
return C.imag;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
inline float cpxmag(const imcfloat& C)
|
|
116
|
+
{
|
|
117
|
+
return sqrtf(C.real*C.real + C.imag*C.imag);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
inline float cpxphase(const imcfloat& C)
|
|
121
|
+
{
|
|
122
|
+
return atan2f(C.real, C.imag);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
inline imcfloat cpxconj(const imcfloat& C)
|
|
126
|
+
{
|
|
127
|
+
return imcfloat(C.real, -C.imag);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
inline imcfloat log(const imcfloat& C)
|
|
131
|
+
{
|
|
132
|
+
return imcfloat(logf(cpxmag(C)), atan2f(C.real, C.imag));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
inline imcfloat exp(const imcfloat& C)
|
|
136
|
+
{
|
|
137
|
+
float mag = expf(C.real);
|
|
138
|
+
return imcfloat(mag * cosf(C.imag), mag * sinf(C.imag));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
inline imcfloat pow(const imcfloat& C1, const imcfloat& C2)
|
|
142
|
+
{
|
|
143
|
+
return exp(C1 * log(C2));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
inline imcfloat sqrt(const imcfloat& C)
|
|
147
|
+
{
|
|
148
|
+
float mag = sqrtf(sqrtf(C.real*C.real + C.imag*C.imag));
|
|
149
|
+
float phase = atan2f(C.real, C.imag) / 2;
|
|
150
|
+
return imcfloat(mag * cosf(phase), mag * sinf(phase));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
inline imcfloat cpxpolar(const float& mag, const float& phase)
|
|
154
|
+
{
|
|
155
|
+
return imcfloat(mag * cosf(phase), mag * sinf(phase));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** @} */
|
|
159
|
+
|
|
160
|
+
#endif
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** \file
|
|
2
|
+
* \brief Image Conversion
|
|
3
|
+
*
|
|
4
|
+
* See Copyright Notice in im_lib.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef __IM_CONVERT_H
|
|
8
|
+
#define __IM_CONVERT_H
|
|
9
|
+
|
|
10
|
+
#include "im_image.h"
|
|
11
|
+
|
|
12
|
+
#if defined(__cplusplus)
|
|
13
|
+
extern "C" {
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/** \defgroup convert Image Conversion
|
|
18
|
+
* \par
|
|
19
|
+
* Converts one type of image into another. Can convert between color modes
|
|
20
|
+
* and between data types.
|
|
21
|
+
* \par
|
|
22
|
+
* See \ref im_convert.h
|
|
23
|
+
* \ingroup imgclass */
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/** Complex to real conversions
|
|
27
|
+
* \ingroup convert */
|
|
28
|
+
enum imComplex2Real
|
|
29
|
+
{
|
|
30
|
+
IM_CPX_REAL,
|
|
31
|
+
IM_CPX_IMAG,
|
|
32
|
+
IM_CPX_MAG,
|
|
33
|
+
IM_CPX_PHASE
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** Predefined Gamma factors. Gamma can be any real number.
|
|
37
|
+
* When gamma<0 use logarithmic, when gamma>0 use exponential.
|
|
38
|
+
* gamma(x,g) = ((e^(g*x))-1)/(exp(g)-1)
|
|
39
|
+
* gamma(x,g) = (log((g*x)+1))/(log(g+1))
|
|
40
|
+
* \ingroup convert */
|
|
41
|
+
enum imGammaFactor
|
|
42
|
+
{
|
|
43
|
+
IM_GAMMA_LINEAR = 0,
|
|
44
|
+
IM_GAMMA_LOGLITE = -10,
|
|
45
|
+
IM_GAMMA_LOGHEAVY = -1000,
|
|
46
|
+
IM_GAMMA_EXPLITE = 2,
|
|
47
|
+
IM_GAMMA_EXPHEAVY = 7
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** Predefined Cast Modes
|
|
51
|
+
* \ingroup convert */
|
|
52
|
+
enum imCastMode
|
|
53
|
+
{
|
|
54
|
+
IM_CAST_MINMAX, /**< scan for min and max values */
|
|
55
|
+
IM_CAST_FIXED, /**< use predefied 0-max values, see \ref color Color Manipulation. */
|
|
56
|
+
IM_CAST_DIRECT /**< direct type cast the value. Only byte and ushort will be cropped. */
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/** Changes the image data type, using a complex2real conversion,
|
|
60
|
+
* a gamma factor, and an abssolute mode (modulus). \n
|
|
61
|
+
* When demoting the data type the function will scan for min/max values or use fixed values (cast_mode)
|
|
62
|
+
* to scale the result according to the destiny range. \n
|
|
63
|
+
* Except complex to real that will use only the complex2real conversion. \n
|
|
64
|
+
* Images must be of the same size and color mode. \n
|
|
65
|
+
* Returns IM_ERR_NONE, IM_ERR_DATA or IM_ERR_COUNTER, see also \ref imErrorCodes.
|
|
66
|
+
* See also \ref imComplex2Real, \ref imGammaFactor and \ref imCastMode.
|
|
67
|
+
*
|
|
68
|
+
* \verbatim im.ConvertDataType(src_image: imImage, dst_image: imImage, cpx2real: number, gamma: number, abssolute: bool, cast_mode: number) -> error: number [in Lua 5] \endverbatim
|
|
69
|
+
* \ingroup convert */
|
|
70
|
+
int imConvertDataType(const imImage* src_image, imImage* dst_image, int cpx2real, float gamma, int abssolute, int cast_mode);
|
|
71
|
+
|
|
72
|
+
/** Converts one color space to another. Images must be of the same size and data type. \n
|
|
73
|
+
* CMYK can be converted to RGB only, and it is a very simple conversion. \n
|
|
74
|
+
* All colors can be converted to Binary, the non zero gray values are converted to 1. \n
|
|
75
|
+
* RGB to Map uses the median cut implementation from the free IJG JPEG software, copyright Thomas G. Lane. \n
|
|
76
|
+
* All other color space conversions assume sRGB and CIE definitions. \n
|
|
77
|
+
* Returns IM_ERR_NONE, IM_ERR_DATA or IM_ERR_COUNTER, see also \ref imErrorCodes.
|
|
78
|
+
*
|
|
79
|
+
* \verbatim im.ConvertColorSpace(src_image: imImage, dst_image: imImage) -> error: number [in Lua 5] \endverbatim
|
|
80
|
+
* \ingroup convert */
|
|
81
|
+
int imConvertColorSpace(const imImage* src_image, imImage* dst_image);
|
|
82
|
+
|
|
83
|
+
/** Converts the image to its bitmap equivalent,
|
|
84
|
+
* uses \ref imConvertColorSpace and \ref imConvertDataType. \n
|
|
85
|
+
* Returns IM_ERR_NONE, IM_ERR_DATA or IM_ERR_COUNTER, see also \ref imErrorCodes.
|
|
86
|
+
* See also \ref imComplex2Real, \ref imGammaFactor and \ref imCastMode.
|
|
87
|
+
*
|
|
88
|
+
* \verbatim im.ConvertToBitmap(src_image: imImage, dst_image: imImage, cpx2real: number, gamma: number, abssolute: bool, cast_mode: number) -> error: number [in Lua 5] \endverbatim
|
|
89
|
+
* \ingroup convert */
|
|
90
|
+
int imConvertToBitmap(const imImage* src_image, imImage* dst_image, int cpx2real, float gamma, int abssolute, int cast_mode);
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/** \defgroup cnvutil Raw Data Conversion Utilities
|
|
95
|
+
* \par
|
|
96
|
+
* Utilities for raw data buffers.
|
|
97
|
+
* \par
|
|
98
|
+
* See \ref im_convert.h
|
|
99
|
+
* \ingroup imagerep */
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/** Changes the packing of the data buffer.
|
|
103
|
+
* \ingroup cnvutil */
|
|
104
|
+
void imConvertPacking(const void* src_data, void* dst_data, int width, int height, int depth, int data_type, int src_is_packed);
|
|
105
|
+
|
|
106
|
+
/** Changes in-place a MAP data into a RGB data. The data must have room for the RGB image. \n
|
|
107
|
+
* depth can be 3 or 4. count=width*height. \n
|
|
108
|
+
* Very usefull for OpenGL applications.
|
|
109
|
+
* \ingroup cnvutil */
|
|
110
|
+
void imConvertMapToRGB(unsigned char* data, int count, int depth, int packed, long* palette, int palette_count);
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
/* Converts a RGB bitmap into a map bitmap using the median cut algorithm.
|
|
115
|
+
* Used only "im_convertcolor.cpp" implemented in "im_rgb2map.cpp".
|
|
116
|
+
* Internal function kept here because of the compatibility module.
|
|
117
|
+
* Will not be at the documentation. */
|
|
118
|
+
int imConvertRGB2Map(int width, int height,
|
|
119
|
+
unsigned char *red, unsigned char *green, unsigned char *blue,
|
|
120
|
+
unsigned char *map, long *palette, int *palette_count);
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
#if defined(__cplusplus)
|
|
124
|
+
}
|
|
125
|
+
#endif
|
|
126
|
+
|
|
127
|
+
#endif
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** \file
|
|
2
|
+
* \brief Processing Counter
|
|
3
|
+
*
|
|
4
|
+
* See Copyright Notice in im_lib.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef __IM_COUNTER_H
|
|
8
|
+
#define __IM_COUNTER_H
|
|
9
|
+
|
|
10
|
+
#if defined(__cplusplus)
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/** \defgroup counter Counter
|
|
16
|
+
* \par
|
|
17
|
+
* Used to notify the application that a step in the loading, saving or processing operation has been performed.
|
|
18
|
+
* \par
|
|
19
|
+
* See \ref im_counter.h
|
|
20
|
+
* \ingroup util */
|
|
21
|
+
|
|
22
|
+
/** Counter callback, informs the progress of the operation to the client. \n
|
|
23
|
+
* Text contains a constant string that is NULL during normal counting, a title in the begining of a sequence
|
|
24
|
+
* and a message in the begining of a count.
|
|
25
|
+
* Counter id identifies diferrent counters. \n
|
|
26
|
+
* Progress in a count reports a value from 0 to 1000. If -1 indicates the start of a sequence of operations, 1001 ends the sequence. \n
|
|
27
|
+
* If returns 0 the client should abort the operation. \n
|
|
28
|
+
* If the counter is aborted, the callback will be called one last time at 1001.
|
|
29
|
+
* \ingroup counter */
|
|
30
|
+
typedef int (*imCounterCallback)(int counter, void* user_data, const char* text, int progress);
|
|
31
|
+
|
|
32
|
+
/** Changes the counter callback. Returns old callback. \n
|
|
33
|
+
* User data is changed only if not NULL.
|
|
34
|
+
* \ingroup counter */
|
|
35
|
+
imCounterCallback imCounterSetCallback(void* user_data, imCounterCallback counter_func);
|
|
36
|
+
|
|
37
|
+
/** Begins a new count, or a partial-count in a sequence. \n
|
|
38
|
+
* Calls the callback with "-1" and text=title, if it is at the top level. \n
|
|
39
|
+
* This is to be used by the operations. Returns a counter Id.
|
|
40
|
+
* \ingroup counter */
|
|
41
|
+
int imCounterBegin(const char* title);
|
|
42
|
+
|
|
43
|
+
/** Ends a count, or a partial-count in a sequence. \n
|
|
44
|
+
* Calls the callback with "1001", text=null, and releases the counter if it is at top level count. \n
|
|
45
|
+
* \ingroup counter */
|
|
46
|
+
void imCounterEnd(int counter);
|
|
47
|
+
|
|
48
|
+
/** Increments a count. Must set the total first. \n
|
|
49
|
+
* Calls the callback, text=message if it is the first increment for the count. \n
|
|
50
|
+
* Returns 0 if the callback aborted, 1 if returns normally.
|
|
51
|
+
* \ingroup counter */
|
|
52
|
+
int imCounterInc(int counter);
|
|
53
|
+
|
|
54
|
+
/** Set a specific count. Must set the total first. \n
|
|
55
|
+
* Calls the callback, text=message if it is the first increment for the count. \n
|
|
56
|
+
* Returns 0 if the callback aborted, 1 if returns normally.
|
|
57
|
+
* \ingroup counter */
|
|
58
|
+
int imCounterIncTo(int counter, int count);
|
|
59
|
+
|
|
60
|
+
/** Sets the total increments of a count.
|
|
61
|
+
* \ingroup counter */
|
|
62
|
+
void imCounterTotal(int counter, int total, const char* message);
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
#if defined(__cplusplus)
|
|
66
|
+
}
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
#endif
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/** \file
|
|
2
|
+
* \brief Windows DIB (Device Independent Bitmap)
|
|
3
|
+
*
|
|
4
|
+
* See Copyright Notice in im_lib.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef __IM_DIB_H
|
|
8
|
+
#define __IM_DIB_H
|
|
9
|
+
|
|
10
|
+
#if defined(__cplusplus)
|
|
11
|
+
extern "C" {
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/** \defgroup dib Windows DIB
|
|
16
|
+
*
|
|
17
|
+
* \par
|
|
18
|
+
* Windows DIBs in memory are handled just like a BMP file without the file header. \n
|
|
19
|
+
* These functions will work only in Windows. They are usefull for interchanging data
|
|
20
|
+
* with the clipboard, with capture drivers, with the AVI and WMF file formats and others.
|
|
21
|
+
* \par
|
|
22
|
+
* Supported DIB aspects:
|
|
23
|
+
* \li bpp must be 1, 4, 8, 16, 24, or 32.
|
|
24
|
+
* \li BITMAPV4HEADER or BITMAPV5HEADER are handled but ignored. \n
|
|
25
|
+
* \li BITMAPCOREHEADER is not handled .
|
|
26
|
+
* \li BI_JPEG and BI_PNG compressions are not handled.
|
|
27
|
+
* \li biHeight can be negative, compression can be RLE only if created
|
|
28
|
+
* from imDibCreateReference, imDibPasteClipboard, imDibLoadFile.
|
|
29
|
+
* \li can not encode/decode Images to/from RLE compressed Dibs.
|
|
30
|
+
* \li if working with RLE Dibs bits_size is greatter than used.
|
|
31
|
+
* \li the resolution of a new Dib is taken from the screen.
|
|
32
|
+
* \li SetDIBitsToDevice(start_scan is 0, scan_lines is dib->bmih->biHeight).
|
|
33
|
+
* \li StretchDIBits(use always DIB_RGB_COLORS).
|
|
34
|
+
* \li CreateDIBPatternBrushPt(packed_dib is dib->dib).
|
|
35
|
+
* \par
|
|
36
|
+
* Must include <windows.h> before using these functions. \n
|
|
37
|
+
* Check <wingdi.h> for structures and definitions.
|
|
38
|
+
* \par
|
|
39
|
+
* See \ref im_dib.h
|
|
40
|
+
* \ingroup util */
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/** \brief Windows DIB Structure
|
|
44
|
+
*
|
|
45
|
+
* \par
|
|
46
|
+
* Handles a DIB in memory. \n
|
|
47
|
+
* The DIB is stored in only one buffer.
|
|
48
|
+
* The secondary members are pointers to the main buffer.
|
|
49
|
+
* \ingroup dib */
|
|
50
|
+
typedef struct _imDib
|
|
51
|
+
{
|
|
52
|
+
HGLOBAL handle; /**< The windows memory handle */
|
|
53
|
+
BYTE* dib; /**< The DIB as it is defined in memory */
|
|
54
|
+
int size; /**< Full size in memory */
|
|
55
|
+
|
|
56
|
+
BITMAPINFO* bmi; /**< Bitmap Info = Bitmap Info Header + Palette */
|
|
57
|
+
BITMAPINFOHEADER* bmih; /**< Bitmap Info Header */
|
|
58
|
+
RGBQUAD* bmic; /**< Bitmap Info Colors = Palette */
|
|
59
|
+
BYTE* bits; /**< Bitmap Bits */
|
|
60
|
+
|
|
61
|
+
int palette_count; /**< number of colors in the palette */
|
|
62
|
+
int bits_size; /**< size in bytes of the Bitmap Bits */
|
|
63
|
+
int line_size; /**< size in bytes of one line, includes padding */
|
|
64
|
+
int pad_size; /**< number of bytes remaining in the line, lines are in a word boundary */
|
|
65
|
+
|
|
66
|
+
int is_reference; /**< only a reference, do not free pointer */
|
|
67
|
+
} imDib;
|
|
68
|
+
|
|
69
|
+
/** Creates a new DIB. \n
|
|
70
|
+
* use bpp=-16/-32 to allocate space for BITFLIEDS.
|
|
71
|
+
* \ingroup dib */
|
|
72
|
+
imDib* imDibCreate(int width, int height, int bpp);
|
|
73
|
+
|
|
74
|
+
/** Duplicates the DIB contents in a new DIB.
|
|
75
|
+
* \ingroup dib */
|
|
76
|
+
imDib* imDibCreateCopy(const imDib* dib);
|
|
77
|
+
|
|
78
|
+
/** Creates a DIB using an already allocated memory. \n
|
|
79
|
+
* "bmi" must be a pointer to BITMAPINFOHEADER. \n
|
|
80
|
+
* "bits" can be NULL if it is inside "bmi" after the palette.
|
|
81
|
+
* \ingroup dib */
|
|
82
|
+
imDib* imDibCreateReference(BYTE* bmi, BYTE* bits);
|
|
83
|
+
|
|
84
|
+
/** Creates a DIB section for drawing porposes. \n
|
|
85
|
+
* Returns the image handle also created.
|
|
86
|
+
* \ingroup dib */
|
|
87
|
+
imDib* imDibCreateSection(HDC hDC, HBITMAP *image, int width, int height, int bpp);
|
|
88
|
+
|
|
89
|
+
/** Destroy the DIB
|
|
90
|
+
* \ingroup dib */
|
|
91
|
+
void imDibDestroy(imDib* dib);
|
|
92
|
+
|
|
93
|
+
/** DIB GetPixel function definition. \n
|
|
94
|
+
* the DWORD is a raw copy of the bits, use (unsigned char*)&pixel
|
|
95
|
+
* \ingroup dib */
|
|
96
|
+
typedef unsigned int (*imDibLineGetPixel)(unsigned char* line, int col);
|
|
97
|
+
|
|
98
|
+
/** Returns a function to read pixels from a DIB line.
|
|
99
|
+
* \ingroup dib */
|
|
100
|
+
imDibLineGetPixel imDibLineGetPixelFunc(int bpp);
|
|
101
|
+
|
|
102
|
+
/** DIB SetPixel function definition
|
|
103
|
+
* \ingroup dib */
|
|
104
|
+
typedef void (*imDibLineSetPixel)(unsigned char* line, int col, unsigned int pixel);
|
|
105
|
+
|
|
106
|
+
/** Returns a function to write pixels into a DIB line.
|
|
107
|
+
* \ingroup dib */
|
|
108
|
+
imDibLineSetPixel imDibLineSetPixelFunc(int bpp);
|
|
109
|
+
|
|
110
|
+
/** Creates a DIB from a image handle and a palette handle.
|
|
111
|
+
* \ingroup dib */
|
|
112
|
+
imDib* imDibFromHBitmap(const HBITMAP image, const HPALETTE hPalette);
|
|
113
|
+
|
|
114
|
+
/** Creates a image handle from a DIB.
|
|
115
|
+
* \ingroup dib */
|
|
116
|
+
HBITMAP imDibToHBitmap(const imDib* dib);
|
|
117
|
+
|
|
118
|
+
/** Returns a Logical palette from the DIB palette. \n
|
|
119
|
+
* DIB bpp must be <=8.
|
|
120
|
+
* \ingroup dib */
|
|
121
|
+
HPALETTE imDibLogicalPalette(const imDib* dib);
|
|
122
|
+
|
|
123
|
+
/** Captures the screen into a DIB.
|
|
124
|
+
* \ingroup dib */
|
|
125
|
+
imDib* imDibCaptureScreen(int x, int y, int width, int height);
|
|
126
|
+
|
|
127
|
+
/** Transfer the DIB to the clipboard. \n
|
|
128
|
+
* "dib" pointer can not be used after, or use imDibCopyClipboard(imDibCreateCopy(dib)).
|
|
129
|
+
* Warning: Clipboard functions in C++ can fail with Visual C++ /EHsc (Enable C++ Exceptions)
|
|
130
|
+
* \ingroup dib */
|
|
131
|
+
void imDibCopyClipboard(imDib* dib);
|
|
132
|
+
|
|
133
|
+
/** Creates a reference for the DIB in the clipboard if any. Returns NULL otherwise.
|
|
134
|
+
* Warning: Clipboard functions in C++ can fail with Visual C++ /EHsc (Enable C++ Exceptions)
|
|
135
|
+
* \ingroup dib */
|
|
136
|
+
imDib* imDibPasteClipboard(void);
|
|
137
|
+
|
|
138
|
+
/** Checks if there is a dib at the clipboard.
|
|
139
|
+
* \ingroup dib */
|
|
140
|
+
int imDibIsClipboardAvailable(void);
|
|
141
|
+
|
|
142
|
+
/** Saves the DIB into a file ".bmp".
|
|
143
|
+
* \ingroup dib */
|
|
144
|
+
int imDibSaveFile(const imDib* dib, const char* filename);
|
|
145
|
+
|
|
146
|
+
/** Creates a DIB from a file ".bmp".
|
|
147
|
+
* \ingroup dib */
|
|
148
|
+
imDib* imDibLoadFile(const char* filename);
|
|
149
|
+
|
|
150
|
+
/** Converts a DIB into an RGBA image. alpha is optional. bpp must be >8. \n
|
|
151
|
+
* alpha is used only when bpp=32.
|
|
152
|
+
* \ingroup dib */
|
|
153
|
+
void imDibDecodeToRGBA(const imDib* dib, unsigned char* red, unsigned char* green, unsigned char* blue, unsigned char* alpha);
|
|
154
|
+
|
|
155
|
+
/** Converts a DIB into an indexed image. bpp must be <=8. colors must have room for at least 256 colors.
|
|
156
|
+
* colors is rgb packed (RGBRGBRGB...)
|
|
157
|
+
* \ingroup dib */
|
|
158
|
+
void imDibDecodeToMap(const imDib* dib, unsigned char* map, long* palette);
|
|
159
|
+
|
|
160
|
+
/** Converts an RGBA image into a DIB. alpha is optional. bpp must be >8. \n
|
|
161
|
+
* alpha is used only when bpp=32.
|
|
162
|
+
* \ingroup dib */
|
|
163
|
+
void imDibEncodeFromRGBA(imDib* dib, const unsigned char* red, const unsigned char* green, const unsigned char* blue, const unsigned char* alpha);
|
|
164
|
+
|
|
165
|
+
/** Converts an indexed image into a DIB. bpp must be <=8. \n
|
|
166
|
+
* colors is rgb packed (RGBRGBRGB...)
|
|
167
|
+
* \ingroup dib */
|
|
168
|
+
void imDibEncodeFromMap(imDib* dib, const unsigned char* map, const long* palette, int palette_count);
|
|
169
|
+
|
|
170
|
+
/** Converts a IM_RGB packed image, with or without alpha, into a DIB.
|
|
171
|
+
* \ingroup dib */
|
|
172
|
+
void imDibEncodeFromBitmap(imDib* dib, const unsigned char* data);
|
|
173
|
+
|
|
174
|
+
/** Converts a DIB into IM_RGB packed image, with or without alpha.
|
|
175
|
+
* \ingroup dib */
|
|
176
|
+
void imDibDecodeToBitmap(const imDib* dib, unsigned char* data);
|
|
177
|
+
|
|
178
|
+
#ifdef __IM_IMAGE_H
|
|
179
|
+
/* You must include "im_image.h" before this header to enable these declarations. */
|
|
180
|
+
|
|
181
|
+
/** Creates a imImage from the dib data.
|
|
182
|
+
* \ingroup dib */
|
|
183
|
+
imImage* imDibToImage(const imDib* dib);
|
|
184
|
+
|
|
185
|
+
/** Creates a Dib from the image. It must be a bitmap image.
|
|
186
|
+
* \ingroup dib */
|
|
187
|
+
imDib* imDibFromImage(const imImage* image);
|
|
188
|
+
|
|
189
|
+
#endif
|
|
190
|
+
|
|
191
|
+
#if defined(__cplusplus)
|
|
192
|
+
}
|
|
193
|
+
#endif
|
|
194
|
+
|
|
195
|
+
#endif
|