ruby-iup 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|